#graph-database #datalog #relational #query #transactional #storage-engine #cozo-db

cozo

A general-purpose, transactional, relational database that uses Datalog and focuses on graph data and algorithms

19 releases

0.7.6 Dec 11, 2023
0.7.5 Sep 16, 2023
0.7.2 Jun 1, 2023
0.5.1 Feb 4, 2023
0.1.6 Nov 9, 2022

#1142 in Database interfaces

Download history 227/week @ 2024-01-04 156/week @ 2024-01-11 120/week @ 2024-01-18 151/week @ 2024-01-25 206/week @ 2024-02-01 252/week @ 2024-02-08 191/week @ 2024-02-15 272/week @ 2024-02-22 215/week @ 2024-02-29 271/week @ 2024-03-07 264/week @ 2024-03-14 243/week @ 2024-03-21 361/week @ 2024-03-28 292/week @ 2024-04-04 234/week @ 2024-04-11 194/week @ 2024-04-18

1,132 downloads per month

MPL-2.0 license

6MB
151K SLoC

C++ 86K SLoC // 0.1% comments Rust 61K SLoC // 0.0% comments Python 2K SLoC // 0.1% comments Shell 1K SLoC // 0.2% comments C 742 SLoC // 0.0% comments Pest 253 SLoC // 0.0% comments GNU Style Assembly 135 SLoC // 0.1% comments INI 107 SLoC // 0.1% comments PowerShell 78 SLoC // 0.2% comments Bitbake 41 SLoC // 0.2% comments

Cozo-core

Crates.io

This crate contains the implementation proper of CozoDB.


lib.rs:

This crate provides the core functionalities of CozoDB. It may be used to embed CozoDB in your application.

This doc describes the Rust API. To learn how to use CozoDB to query (CozoScript), see:

Rust API usage:

use cozo::*;

let db = DbInstance::new("mem", "", Default::default()).unwrap();
let script = "?[a] := a in [1, 2, 3]";
let result = db.run_script(script, Default::default(), ScriptMutability::Immutable).unwrap();
println!("{:?}", result);

We created an in-memory database above. There are other persistent options: see DbInstance::new. It is perfectly fine to run multiple storage engines in the same process.

Dependencies

~25–45MB
~677K SLoC