Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,9 @@ DataFusion as extension operators, falling back to a join for any hop the CSR ca
and `refresh()`es to new dataset versions.
- **Smarter planning**: patterns start at their most selective node, and DataFusion gets column statistics to size
its joins.
- **Much wider Cypher**, enough to run the official LDBC Interactive complex queries (IC14 without `reduce()`,
which openCypher leaves out): `OPTIONAL MATCH`, `EXISTS` and pattern predicates, chained `WITH`, `UNWIND`,
- **Much wider Cypher**. The Graph Data Council (GDC), formerly known as the Linked Data Benchmark Council (LDBC),
maintains the official Interactive complex queries. lance-csr runs them (IC14 without `reduce()`, which
openCypher leaves out), with `OPTIONAL MATCH`, `EXISTS` and pattern predicates, chained `WITH`, `UNWIND`,
list and pattern comprehensions, maps, relationship alternation, `shortestPath`, `$parameters` and more,
following openCypher's
[standardisation scope](https://github.com/opencypher/openCypher/blob/master/docs/standardisation-scope.adoc).
Expand Down Expand Up @@ -160,16 +161,18 @@ r2 = engine.execute("SELECT name FROM person ORDER BY age DESC LIMIT 2")
## Benchmarks

The benchmark runners and raw results live in two sibling repositories, next to the other engines' runners, so
every number below can be reproduced from there. These are independent, unaudited measurements, not LDBC Benchmark
every number below can be reproduced from there. These are independent, unaudited measurements, not GDC Benchmark
Results. lance-csr runs with the CSR (`use_csr=True`) in two modes: *in memory* holds every table as Arrow in
memory, and *lazy* reads Lance datasets from disk as queries need them. Neo4j runs as a server in a Docker VM; the
other engines run embedded in the Python process. `docs/sync_benchmarks.py` regenerates the tables from the
repositories' committed results.

### LDBC SNB Interactive complex queries
<a id="ldbc-snb-interactive-complex-queries"></a>

[graph-benchmark-ldbc-complex](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc-complex) runs the
14 complex read queries (IC1–IC14) of the LDBC SNB Interactive v1 workload over the SF1 dataset, with one fixed
### GDC SNB Interactive complex queries

[GDC Interactive benchmark repository](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc-complex) runs the
14 complex read queries (IC1–IC14) of the GDC SNB Interactive v1 workload over the SF1 dataset, with one fixed
parameter set per query and every result checked against a golden answer. lance-csr's
[runner](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc-complex/tree/main/lance_csr) runs
Neo4j's Cypher text for IC1–IC13 unchanged; IC14 replaces `reduce()`, which openCypher leaves out, with pattern
Expand Down Expand Up @@ -217,10 +220,12 @@ Mean query latency in milliseconds (lower is better, fastest per query in bold):

<!-- /bench:ic:notes -->

### LDBC SNB SF1, 30-query workload
<a id="ldbc-snb-sf1-30-query-workload"></a>

### GDC SNB SF1, 30-query workload

[graph-benchmark-ldbc](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc) runs 30 custom Cypher
queries over the LDBC SNB SF1 dataset (3.18M nodes, 17.3M relationships), with every result checked against an
[GDC SF1 benchmark repository](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc) runs 30 custom Cypher
queries over the GDC SNB SF1 dataset (3.18M nodes, 17.3M relationships), with every result checked against an
expected answer. lance-csr's [runner](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc/tree/main/lance_csr)
runs the same query text and Lance datasets as the lance-graph runner.

Expand Down
23 changes: 15 additions & 8 deletions docs/benchmarks.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,23 @@ process.
The tables are generated from the repositories' committed results by `docs/sync_benchmarks.py`, which pins each
repository to a commit.

## LDBC SNB Interactive complex queries
The Graph Data Council (GDC), formerly known as the Linked Data Benchmark Council (LDBC), maintains the
Social Network Benchmark (SNB) used by both workloads below.

[graph-benchmark-ldbc-complex](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc-complex) runs the
14 complex read queries (IC1–IC14) of the LDBC Social Network Benchmark Interactive v1 workload over the SF1
<a id="ldbc-snb-interactive-complex-queries"></a>

## GDC SNB Interactive complex queries

[GDC Interactive benchmark repository](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc-complex) runs the
14 complex read queries (IC1–IC14) of the GDC Social Network Benchmark Interactive v1 workload over the SF1
dataset, with one fixed parameter set per query and every result checked against a golden answer. lance-csr's
[runner](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc-complex/tree/main/lance_csr) runs
Neo4j's Cypher text for IC1–IC13 unchanged; IC14 replaces `reduce()`, which openCypher leaves out, with pattern
comprehensions.

!!! warning "Independent, unaudited measurements"

These are not official LDBC Benchmark Results. They were measured on one machine; your hardware, data and
These are not official GDC Benchmark Results. They were measured on one machine; your hardware, data and
queries will differ. Use the benchmark repository to reproduce them.

Over the 14 queries, lance-csr's speed relative to each engine:
Expand Down Expand Up @@ -72,17 +77,19 @@ Over the 14 queries, lance-csr's speed relative to each engine:

<!-- /bench:ic:notes -->

## LDBC SNB SF1, 30-query workload
<a id="ldbc-snb-sf1-30-query-workload"></a>

## GDC SNB SF1, 30-query workload

[graph-benchmark-ldbc](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc) runs 30 custom Cypher
queries over the LDBC Social Network Benchmark SF1 dataset (3.18M nodes, 17.3M relationships), with every result
[GDC SF1 benchmark repository](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc) runs 30 custom Cypher
queries over the GDC Social Network Benchmark SF1 dataset (3.18M nodes, 17.3M relationships), with every result
checked against an expected answer. lance-csr's
[runner](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc/tree/main/lance_csr) runs the same
query text and Lance datasets as the lance-graph runner.

!!! warning "Independent, unaudited measurements"

These are not official LDBC Benchmark Results. They were measured on one machine; your hardware, data and
These are not official GDC Benchmark Results. They were measured on one machine; your hardware, data and
queries will differ. Use the benchmark repository to reproduce them.

Over the 30 queries, lance-csr's speed relative to each engine:
Expand Down
5 changes: 3 additions & 2 deletions docs/cypher.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,9 @@ implemented; `ExecutionStrategy.LanceNative` is reserved and raises an error.

## Supported Cypher

lance-csr implements a large read-only subset of openCypher, enough to run all 14 official
[LDBC SNB Interactive](https://ldbcouncil.org/benchmarks/snb/) complex queries (IC14 without `reduce()`).
The Graph Data Council (GDC), formerly known as the Linked Data Benchmark Council (LDBC), maintains the
[GDC SNB Interactive](https://ldbcouncil.org/benchmarks/snb/) complex queries. lance-csr implements a large
read-only subset of openCypher, enough to run all 14 (IC14 without `reduce()`).

### Clauses

Expand Down
3 changes: 2 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ print(result.to_pylist()) # [{'friend': 'Bob'}, {'friend': 'Carol'}]
around them.

### openCypher coverage
: Supports enough Cypher to run the official [LDBC](https://ldbcouncil.org/) Interactive complex queries:
: The Graph Data Council (GDC), formerly known as the Linked Data Benchmark Council (LDBC), maintains the
[GDC Interactive complex queries](https://ldbcouncil.org/). lance-csr supports enough Cypher to run them:
`OPTIONAL MATCH`, `EXISTS`, chained `WITH`, `UNWIND`, list and pattern comprehensions,
relationship alternation, variable-length paths, `shortestPath` and `$parameters`.

Expand Down
5 changes: 3 additions & 2 deletions python/DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,9 @@ Rust Criterion benchmarks live in the `lance-graph-benches` crate:
cargo bench -p lance-graph-benches --bench graph_execution -- --warm-up-time 1
```

For comparisons with other graph engines on LDBC SNB SF1, see
[graph-benchmark-ldbc](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc).
The Graph Data Council (GDC), formerly known as the Linked Data Benchmark Council (LDBC), maintains the
Social Network Benchmark (SNB). For comparisons with other graph engines on GDC SNB SF1, see
[GDC SF1 benchmark repository](https://github.com/hyperdimensionalcomputingai/graph-benchmark-ldbc).

## Building wheels

Expand Down
Loading