Cozo Versions Save

A transactional, relational-graph-vector database that uses Datalog for query. The hippocampus for AI!

v0.7.6

5 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/cozodb/cozo/compare/v0.7.5...v0.7.6

v0.7.5

7 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/cozodb/cozo/compare/v0.7.2...v0.7.5

v0.7.3-beta1

10 months ago

This release contains the accumulation of various small improvements and fixes.

Notable improvements:

  • The addition of the function slice_string(s, start, end), which makes working with strings easier. Counting is done with unicode codepoints (same as python, but not the same as JS which uses UTF-16).
  • In imperative scripts, you can use %return _rel1, rel2, ... to return multiple relations. However, client support is not available yet.
  • Functions starts_with and ends_with now work with bytes.
  • In imperative scripts, you can use { ... } as _relname to make an ephemeral relation. This saves quite a lot of typing.
  • You can now use base64 strings when putting into a field of Vec. The base64 must decode into bytes that can be interpreted as a C-array of little-endian float32/float64, according to the definition of the Vec.
  • Except when using :create or :replace, whether you write => in the field list of mutations is immaterial.
  • Parameters: the $var syntax in script denotes named parameters. These should be passed in together with the script when calling the database.
  • When doing mutations on stored relations, you can omit the fields if they are exactly the same as the program entry, i.e. ?[x, y, z] := ... :put rel {} is equivalent to ?[x, y, z] := ... :put {x, y, z}
  • When using constant relation and only a single row is present, the program entry can be deduced, i.e. ?[] <- [[$x, $y, $z]] is equivalent to ?[x, y, z] <- [[$x, $y, $z]]. This works together with the last item to allow writing ?[] <- [[$x, $y, $z]] :put rel {}
  • A new set of mutation operators in addition to :put and :rm: these are :insert, :update, and :delete, and these checks for the existence of rows already in the database with the same semantics as in SQL. When doing :updates, you only need to specify the keys and the fields you want to update.
  • Mutations now support a :returning option which, if present, will return the changes applied by the mutation instead of the status code.
  • Most sysops such as ::index create can be used in imperative scripts now.
  • The standalone server now supports a token relation: https://github.com/cozodb/cozo/blob/cd840e687c5bde9dc3c95968f07bbed1b3669a65/cozo-bin/src/server.rs#L65-L67. Contents in this relation can be used as bearer tokens to access the API remotely.

v0.7.2

11 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/cozodb/cozo/compare/v0.7.1...v0.7.2

v0.7.1

1 year ago

What's Changed

Full Changelog: https://github.com/cozodb/cozo/compare/v0.7.0...v0.7.1

v0.7.0

1 year ago

After HNSW vector search from 0.6, in 0.7 we bring to you MinHash-LSH for near-duplicate search, full-text search, Json value support and more! See here for more details.

New Contributors

Full Changelog: https://github.com/cozodb/cozo/compare/v0.6.0...v0.7.0

v0.6.0

1 year ago

v0.5.1

1 year ago

Fixes a problem when importing JSON data

What's Changed

New Contributors

Full Changelog: https://github.com/cozodb/cozo/compare/v0.5.0...v0.5.1

v0.5.0

1 year ago

Cozo 0.5: the versatile embeddable graph database with Datalog is half-way 1.0

It's been a quarter of a year since Cozo's initial release and today we are glad to present to you the "half-way 1.0" version. This marks the completion of all the features we envisaged for Cozo when we first started but weren't present in the initial release:

  • User-defined fixed rules (added in v0.5)
  • Callbacks for mutation (added in v0.5)
  • Multi-statement transaction (added in v0.5)
  • Indices (added in v0.5)
  • Imperative mini-language (added in v0.5)
  • Time-travelling (added in v0.4)
  • Swappable backend (added in v0.2)

In addition, v0.5 brings major behind-the-scene changes that has big performance benefits:

  • The semi-naive algorithm for executing queries is now executed in parallel for each Horn-clause (now it is even more advisable to split your queries into smaller pieces--better readability and performance!)
  • The evaluation of expressions is no longer interpreted but instead through stack-based bytecodes (a few percent improvements for filter-heavy queries--the improvement mainly comes from the avoidance of memory allocations)

From now on, until version 1.0, development will "shift-gear" to focus on:

  • stability
  • performance
  • interoperability with other software, e.g.:
    • networkx for pythonic in-memory graph analytics
    • PyG in particular and pytorch in general for deep learning on graphs
    • plotly and dash for plotting and dashboards

If you find Cozo to be useful in your work, please send us feedbacks so that we can make Cozo better still!

v0.4.1

1 year ago
  • Fixes a panic when running PageRank on empty graphs
  • Server now supports REPL mode
  • Updated RocksDB dependency

Full Changelog: https://github.com/cozodb/cozo/compare/v0.4.0...v0.4.1