diff --git a/README.md b/README.md index ea5b025..27aa42e 100644 --- a/README.md +++ b/README.md @@ -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). @@ -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 + -[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 @@ -217,10 +220,12 @@ Mean query latency in milliseconds (lower is better, fastest per query in bold): -### LDBC SNB SF1, 30-query workload + + +### 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. diff --git a/docs/benchmarks.md b/docs/benchmarks.md index 862eac9..dc00bc3 100644 --- a/docs/benchmarks.md +++ b/docs/benchmarks.md @@ -16,10 +16,15 @@ 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 + + +## 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 @@ -27,7 +32,7 @@ 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: @@ -72,17 +77,19 @@ Over the 14 queries, lance-csr's speed relative to each engine: -## LDBC SNB SF1, 30-query workload + + +## 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: diff --git a/docs/cypher.md b/docs/cypher.md index 1059822..b7e4674 100644 --- a/docs/cypher.md +++ b/docs/cypher.md @@ -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 diff --git a/docs/index.md b/docs/index.md index 145b3ed..766206a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -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`. diff --git a/python/DEVELOPMENT.md b/python/DEVELOPMENT.md index 61d4c20..885a34c 100644 --- a/python/DEVELOPMENT.md +++ b/python/DEVELOPMENT.md @@ -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