Skip to content

Commit

Permalink
Merge pull request #1623 from kuzudb/readme
Browse files Browse the repository at this point in the history
update readme
  • Loading branch information
mewim committed Jun 5, 2023
2 parents 5849639 + 8508e7e commit cb437d7
Showing 1 changed file with 61 additions and 30 deletions.
91 changes: 61 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,20 +33,6 @@ Kùzu is an in-process property graph database management system (GDBMS) built f

Kùzu is being actively developed at University of Waterloo as a feature-rich and usable GDBMS. Kùzu is available under a permissible license. So try it out and help us make it better! We welcome your feedback and feature requests.

## Build
To build from source code, Kùzu requires Cmake(>=3.11), Python 3, and a compiler that supports `C++20`.
- Perform a full clean build without tests and benchmark:
- `make clean && make release`
- Perform a full clean build with tests and benchmark (optional):
- `make clean && make all`
- Run tests (optional):
- `make test && make pytest`

For development, use `make debug` to build a non-optimized debug version.
To build in parallel, pass `NUM_THREADS` as parameter, e.g., `make NUM_THREADS=8`.

After build, our CLI binary `kuzu_shell` is available under the directory `build/release/tools/shell/`.

## Installation
### Precompiled binary
Precompiled binary of our latest release can be downloaded [here](https://github.com/kuzudb/kuzu/releases/latest).
Expand All @@ -55,32 +41,27 @@ Our Python package can be directly install through pip.
```
pip install kuzu
```
### NodeJS package
```
npm install kuzu
```

We also support official C++ and C bindings. For more installation and usage instructions, please refer to [our website](https://kuzudb.com/).

For more installation and usage instructions, please refer to [our website](https://kuzudb.com/).

## Example
## Getting Started
We take `tinysnb` as an example graph, which is under `dataset/demo-db/csv` in our source code, and can be downloaded [here](https://github.com/kuzudb/kuzu/tree/master/dataset/demo-db/csv).

### CLI
#### Start CLI
```
./build/release/tools/shell/kuzu_shell "./testdb"
```
#### Schema Definition

Start CLI with a database directory `./kuzu_shell ./testdb/`
```cypher
# Data definition
kuzu> CREATE NODE TABLE User(name STRING, age INT64, PRIMARY KEY (name));
kuzu> CREATE REL TABLE Follows(FROM User TO User, since INT64);
```

#### Data Import
```cypher
# Data loading
kuzu> COPY User FROM "dataset/demo-db/csv/user.csv";
kuzu> COPY Follows FROM "dataset/demo-db/csv/follows.csv";
```

After creating node/rel tables, and importing csv files, you can now run queries!
```cypher
# Querying
kuzu> MATCH (a:User)-[f:Follows]->(b:User) RETURN a.name, b.name, f.since;
```

Expand All @@ -90,8 +71,10 @@ import kuzu

db = kuzu.Database('./testdb')
conn = kuzu.Connection(db)
# Data definition
conn.execute("CREATE NODE TABLE User(name STRING, age INT64, PRIMARY KEY (name))")
conn.execute("CREATE REL TABLE Follows(FROM User TO User, since INT64)")
# Data loading
conn.execute('COPY User FROM "user.csv"')
conn.execute('COPY Follows FROM "follows.csv"')
# Run a query.
Expand All @@ -106,8 +89,56 @@ results = conn.execute('MATCH (u:User) RETURN u.name, u.age;').get_as_arrow(chun
print(results)
```

### NodeJS
```js
// Import library
const kuzu = require("kuzu");

(async () => {
// Create an empty database and connect to it
const db = new kuzu.Database("./test");
const conn = new kuzu.Connection(db);

// Data definition
await conn.query(
"CREATE NODE TABLE User(name STRING, age INT64, PRIMARY KEY (name))"
);
await conn.query("CREATE REL TABLE Follows(FROM User TO User, since INT64)");

// Data loading
await conn.query('COPY User FROM "user.csv"');
await conn.query('COPY Follows FROM "follows.csv"');

// Run a query
const queryResult = await conn.query("MATCH (u:User) RETURN u.name, u.age;");

// Get all rows from the query result
const rows = await queryResult.getAll();

// Print the rows
for (const row of rows) {
console.log(row);
}
})();
```

Refer to our [Data Import](https://kuzudb.com/docs/data-import) and [Cypher](https://kuzudb.com/docs/cypher) section for more information.

## Build
To build from source code, Kùzu requires Cmake(>=3.11), Python 3, and a compiler that supports `C++20`.
- Perform a full clean build without tests and benchmark:
- `make clean && make release`
- Perform a full clean build with tests and benchmark (optional):
- `make clean && make all`
- Run tests (optional):
- `make test && make pytest`

For development, use `make debug` to build a non-optimized debug version.
To build in parallel, pass `NUM_THREADS` as parameter, e.g., `make NUM_THREADS=8`.

After build, our CLI binary `kuzu_shell` is available under the directory `build/release/tools/shell/`.


## Contributing
We welcome contributions to Kùzu. If you are interested in contributing to Kùzu, please read our [Contributing Guide](CONTRIBUTING.md).

Expand Down

0 comments on commit cb437d7

Please sign in to comment.