Expand description
Bindings to Kuzu: an in-process property graph database management system built for query speed and scalability.
§Example Usage
use kuzu::{Database, SystemConfig, Connection};
let db = Database::new(path, SystemConfig::default())?;
let conn = Connection::new(&db)?;
conn.query("CREATE NODE TABLE Person(name STRING, age INT64, PRIMARY KEY(name));")?;
conn.query("CREATE (:Person {name: 'Alice', age: 25});")?;
conn.query("CREATE (:Person {name: 'Bob', age: 30});")?;
let mut result = conn.query("MATCH (a:Person) RETURN a.name AS NAME, a.age AS AGE;")?;
println!("{}", result);
§Building
By default, the Kuzu C++ library will be compiled from source and statically linked.
If you want to instead link against a pre-built version of the library, the following environment variables can be used to configure the build process:
KUZU_SHARED
: If set, link dynamically instead of staticallyKUZU_INCLUDE_DIR
: Directory of Kuzu’s headersKUZU_LIBRARY_DIR
: Directory containing Kuzu’s pre-built libraries.
Example:
kuzu_prebuilt_dir=/tmp/kuzu # pre-built Kuzu from https://docs.kuzudb.com/installation/#cc
kuzu_prebuilt_dir=/path_to_kuzu_source/build/release/src # Kuzu built from source
export KUZU_LIBRARY_DIR="kuzu_prebuilt_dir"
export KUZU_INCLUDE_DIR="kuzu_prebuilt_dir"
export KUZU_SHARED=1
On macOS:
brew install kuzu
export KUZU_LIBRARY_DIR=/opt/homebrew/lib
export KUZU_INCLUDE_DIR=/opt/homebrew/include
export KUZU_SHARED=1
§Using Extensions
By default, binaries created using this library will not work with Kuzu’s extensions (except on Windows/MSVC, where the linker works differently).
If you want to use extensions in binaries (binary crates or tests) using this library, you will need to add the following (or a similar command; see build-scripts) to your build.rs (or create one) so that the binary produced acts like a library that the extension can link with. Not doing this will produce undefined symbol errors when the extension is loaded:
println!("cargo:rustc-link-arg=-rdynamic");
Structs§
- Arrow
Iterator - Produces an iterator over a
QueryResult
asRecordBatch
es - CSVOptions
- Options for writing CSV files
- Connection
- Connections are used to interact with a Database instance.
- Database
- The Database class is the main class of
KuzuDB
. It manages all database components. - InternalID
- Stores the
table_id
andoffset
of a node/rel. - NodeVal
NodeVal
represents a node in the graph and stores the nodeID, label and properties of that node.- Prepared
Statement - A prepared stattement is a parameterized query which can avoid planning the same query for repeated execution
- Query
Result - Stores the result of a query execution
- RelVal
RelVal
represents a relationship in the graph and stores the relID, src/dst nodes and properties of that rel- System
Config - Configuration options for the database.
Enums§
- Error
- Logical
Type - Type of Values produced and consumed by queries.
- Value
- Data types supported by Kuzu
Constants§
- VERSION
- The version of the Kuzu crate as reported by Cargo’s
CARGO_PKG_VERSION
environment variable
Functions§
- get_
storage_ version - Returns the storage version of the Kuzu library