Skip to content

Benchmark · Historical service comparisons · Simplified queries · Different clients and returned-data contracts

8DB graph lookups | 64× Neo4j’s recorded throughput

218,000 lookups per second for 8DB. A best recorded 3,410 for Neo4j. Both on an M1 laptop. A separate one-hop test also put 8DB ahead, reaching 23,300 queries per second.

Published
Reading time12 minutes
GraphLDBCPerformanceOmnimodal

218,000 lookups per second for 8DB. A best recorded 3,410 for Neo4j. Both on an M1 laptop. A separate one-hop test also put 8DB ahead, reaching 23,300 queries per second.

These are recorded service results for simplified person and five-friend queries, with different client stacks. The larger buying question is how much useful graph work an omnimodal engine can do while retaining the surrounding data and evidence.

Record lookup and one-hop traversal

8DB finished ahead of Neo4j in both recorded service comparisons. Five-neighbor retrieval delivered 5.6× Neo4j’s strongest reported throughput; basic record lookup delivered 64× its best eight-worker result. That puts 8DB first of the two tested systems on these operations.

Record lookup and one-hop traversal, comparing 8DB and Neo4j. Five-neighbor retrieval: 8DB 23,300 queries per second versus Neo4j 4,134, a 5.6-times ratio. Basic record lookup: 218,000 versus 3,410, rounded to 64 times. Different service stacks and returned data; broader graph-market rank remains unestablished.

Open full-size competitive standing chart · Read the comparison contracts

These are measured service configurations on the same M1, including their different clients and returned-data contracts. The neighbor result is preserved in a campaign report; the lookup result also has its original log. The sections below explain both comparisons.

Our market assessment: a strong performance challenger on the operations tested. The broader opportunity is fast graph access inside an omnimodal engine that can also retain spatial structure, documents, signals and evidence. An overall graph-database rank remains open: complex queries, updates and scale require a shared workload. The other vendors’ full-suite scores stay in the supporting market context below.

Graph data, geometry and deployment

8DB’s case is the combination: native participant roles, richer geometry and an engine that can run with the application. The matrix compares those requirements with a graph incumbent and three alternatives that overlap with our broader architecture.

Five-engine capability matrix comparing 8DB, Neo4j, ArangoDB, SurrealDB and TypeDB on group relationships, geometry operations, other data models and engine deployment. 8DB combines native n-ary roles, n-dimensional and point-cloud paths, multiple data models and in-process execution with mesh APIs. Documented overlap and unverified areas are labelled.

Open full-size capability comparison

Read the comparison as a text table
Requirement8DBNeo4jArangoDBSurrealDBTypeDB
Connect a groupNative n-ary facts + rolesPairwise edges; model group nodesTwo-endpoint edge documentsTwo-endpoint edges + record linksNative n-ary relations + roles
Work with geometryn-D distances; point clouds; manifold paths2-D/3-D points; distance + bounding boxesGeoJSON shapes; n-D numeric range indexesGeoJSON points, lines + polygonsNative spatial operators not verified here
Keep other dataRecords, documents, vectors + time seriesGraph properties + vector indexesDocuments, graph + vector indexesDocuments, graph + vector indexesEntities, relations + typed attributes
Run the engineIn-process engine + mesh APIs*Java/JVM embedding or serverServer or clusterIn-process engine or serverServer or cloud

A relationship involving an asset, sensor, observation and operator can remain one role-aware fact in 8DB. Its location and measured geometry can stay alongside it. That could reduce the modelling and integration work needed for a local decision. The advantage to evaluate is that complete combination; the graph timing above measures only two of its service operations.

The alternatives overlap in meaningful ways. TypeDB also has native multi-party roles. SurrealDB also embeds its engine. ArangoDB combines graph, document and vector access, and its numeric multidimensional indexes go beyond its GeoJSON path. Neo4j offers Java embedding and indexed 2-D/3-D points. Our broader geometry paths and mesh integration create additional options, with actual footprint, speed and recovery assessed for the chosen deployment.

Chart basis: selected current documented capabilities, separate from the historical benchmark. Native spatial operators were not verified for TypeDB in this review; that is not an absence claim. For 8DB, protected-node qualification currently has a narrower canonical-lexical record profile than the full modality catalogue.

Sources: 8DB structures and deployment scope; Neo4j spatial operators and Java embedding; ArangoDB edge model, spatial indexing, multidimensional ranges and deployment; SurrealDB relations, geometry and embedding; TypeDB relations and roles and deployment.

The lookup result, in context

The September 8 campaign ran on a MacBook Pro with an Apple M1, four performance cores, four efficiency cores and 16 GB of RAM. Both lookup setups contained one million records. Neo4j 2026.07.1 had an online person-ID index, a warm JVM, a 2 GB heap and a 1 GB page cache. 8DB used its tree engine through MVCC read snapshots, with an in-memory storage backend.

Across three interleaved rounds, 8DB recorded 209,000–223,000 single-request reads per second. Its median was 218,000. Neo4j’s strongest eight-worker round recorded 3,410 queries per second. Dividing those two values gives 63.9×, rounded to 64× in the headline. The comparison deliberately uses Neo4j’s best round, rather than its slower first round. Campaign report · Original sweep log

8DB recorded 218,000 median single-request lookups per second versus Neo4j’s best 3,410, on the same M1 laptop. Different client, protocol and returned-value formats are identified in the figure.

Open full-size chart

What the client requested8DBNeo4j
LookupEight-byte key to a 100-byte valueIndexed person ID to three properties
Client and connectionRust client, local Unix socketPython driver, Bolt
Request disciplineEight workers, one request in flight per connectionEight workers, one request in flight per connection
Recorded throughput, three rounds218,000; 209,000; 223,000 reads/s991; 3,410; 3,325 queries/s
Result checkingEvery returned value checked by the clientReturned properties checked by the client

The logs report zero incorrect results in these rounds. Background work was active on the laptop, and Neo4j improved as the campaign progressed. The ratio therefore describes this recorded setup, including client, query processing and transport costs. It does not establish that 8DB performs an identical property query 64× faster inside the engine.

These were resident read tests. They do not measure durable ingestion or crash recovery. The in-memory setting belongs to this benchmark configuration; it is not a statement that 8DB lacks durable storage.

Following relationships: 23,300 queries a second

A point lookup is only the beginning of graph work. The next test asked for five outgoing friends of a person across one million persons and five million directed relationships.

8DB encoded each relationship with a person-and-friend key and retrieved a person’s neighbors through a snapshot range scan. The client checked the exact five keys and their values. The Neo4j campaign checked the returned friend IDs. This is a useful graph primitive: retrieving the immediate relationships that an application needs before deciding what to inspect next.

September one-hop testRecorded queries/sComparison with 8DB
8DB, eight workers23,300 medianReference result
Neo4j, eight workers2,001 median11.6× as many queries/s for 8DB
Neo4j, four processes × eight connections4,134 best reported round5.6× as many queries/s for 8DB

Five-friend query throughput: 8DB 23,300 median, Neo4j eight-worker median 2,001 and Neo4j 32-connection best 4,134. These are retained campaign-report figures; the original traversal log is unavailable.

Open full-size chart

The retained report records three rounds and successful result checks. Its original traversal log was lost in a reboot, so this figure has weaker archival support than the lookup result. The query also returns fewer properties than official LDBC IS-3 and does not order friendships by creation date. It measures the simplified outgoing-neighbor service, using 8DB’s Rust/local-socket path and Neo4j’s Python/Bolt path. Traversal report

For customer records, asset dependencies or a recommendation candidate set, fast immediate-neighbor retrieval is useful in its own right. Deep traversal, skewed high-degree graphs and concurrent updates are separate questions.

Where does that put 8DB in the market?

The recorded wins place 8DB ahead in this two-system campaign. The next comparison is the complete application: complex traversals, updates, scale and the surrounding data operations. The wider market includes products competing on distributed graph analytics, query languages, managed operation and combinations of graph with other data models.

For another view of the competitive bar, the Graph Data Council publishes audited full SNB Interactive results. Selected SF100 entries show the scale of those campaigns:

Published system and audit dateFull-workload operations/s at SF100Reported server resources
Huawei GES, December 2025129,090160 Kunpeng cores; 1,280 GiB RAM; driver on the same machine
GraphScope Flex, April 202579,24496 EPYC cores / 192 threads; 768 GB RAM; separate driver machine
TuGraph, January 202316,96664 YiTian cores; 256 GiB RAM; separate driver machine

These are market reference scores, not a speed ranking against our laptop. Full SNB Interactive mixes more complex queries and updates on a different generated graph. A simple lookup and a full-workload operation are different units of completed work, even when both are counted per second. The server specifications provide context; dividing by core count would not make the workloads equivalent. Dates and configurations also differ between the reference entries. Audited results · Huawei disclosure · GraphScope disclosure · TuGraph disclosure

What changed as we optimized?

The recovered history contains several different campaigns, not one interchangeable series of scores.

May’s EC2 test recorded 296,610 lookups/s inside the benchmark server. A May 11 local 7950X experiment later recorded 543,567 lookups/s as the median of three post-change runs, against a single earlier result of 428,042 on that machine. Those are useful development measurements. They do not include one client round trip for every lookup.

September moved to client-driven tree-engine reads: 96,000/s median in the first sweep, then 218,000/s median after the per-request path adopted the existing value visitor and the client used local sockets. The code change avoids an intermediate value allocation; transport and host load also changed, so the entire increase cannot be assigned to that one optimization. First September sweep · May local A/B record

Two separate history panels distinguish May internal loops on EC2 and a 7950X from September client-driven reads on an M1. The figure does not imply an equivalent-work speedup across hardware or timing boundaries.

Open full-size chart

Batching offers another practical option. The September optimized log recorded 2.01 million reads/s median with batches of 128. That mode amortizes request and snapshot work. It is relevant when an application can group independent lookups, but it does not replace the single-request comparison or predict the latency of an individual interactive request.

There is a useful next challenge on both sides. Neo4j documents a Rust extension for its Python driver and different transaction patterns that can improve throughput. Testing those alongside 8DB’s configuration choices would show how much advantage remains with equally optimized clients. This campaign did not establish Neo4j’s universal performance ceiling. Neo4j tuning guidance

What 8DB offers beyond a faster lookup

The bigger opportunity is doing more of the application’s job with the data already connected. Three practical differences deserve attention.

Decision8DB’s propositionNeo4j’s actual alternativeWhy it could matter
Richer structureNative n-ary roles, n-dimensional coordinate operations, point clouds, lattices and multiscale representationsProperty graph modelling; native spatial points and indexes; specialist operations may require additional modelling or integrationPreserve the structure a scientific or operational question needs.
Deployment near the dataAn embeddable engine with device-aware settings and native mesh coordination; published platform scope includes iOS and watchOSJava embedding requires a JVM. Documented engine platforms are desktop/server systems, not iOS/watchOSLocal decisions and controlled exchange can be relevant where a separate server or reliable connection is impractical.
Evidence and governed exchangeSource-linked views, uncertainty, policy and supported protected-node delivery in the data architectureModel provenance in the graph and combine it with Neo4j’s access controls and surrounding servicesReduce the application work needed to keep a result connected to its evidence and permitted use.

These are architectural differences, not savings measured by this lookup campaign. 8DB structures and scope, deployment and evidence, protected-node boundaries.

“Embedded” and “spatial” need more than a checkmark

Neo4j can be embedded in a Java application. Its current engine requires a compatible JVM; its published supported-platform list covers desktop and server operating systems. That is a different deployment proposition from an engine integrated into a phone or watch app. The 2 GB minimum in Neo4j’s development guidance is a system recommendation, not a measured embedded footprint. Our M1 results likewise do not establish watch memory or battery use. Java embedding · System requirements

Neo4j’s native spatial path works with 2-D/3-D points, with indexes optimized for distance and bounding-box predicates. 8DB’s documented paths extend to n-dimensional coordinates, point-cloud neighborhoods and declared manifold geometry. That is a useful difference in operation breadth. This campaign did not compare the two systems’ spatial speed, and the extra operations should be evaluated on the intended data and metric. Neo4j spatial values · Point-index predicates

Neo4j also has vector search, fine-grained access control and a substantial graph-analysis toolkit. Those are real competing capabilities. TypeDB’s native multi-party relations and ArangoDB/SurrealDB’s integrated models further raise the bar: our case rests on the useful combination and its implementation, not an exclusive claim to every ingredient. Vector search · Access control · Graph Data Science

For example, a field inspection can connect an asset, its measured shape, changing telemetry, a technician’s report and the rules for sharing it. Keeping those views together could reduce reconciliation and improve time to an informed decision. The next useful test is that complete workflow, including resource use and recovery, against an integrated alternative as well as a graph specialist.

The performance series already covers key-value reads, time-series ingestion, analytical queries and spatial search. Each tests a different part of the same product; their peak rates are not additive.

Have a graph query that determines a real decision? Bring us the query. We can identify the useful comparison: the returned facts, dataset, latency target and operating guarantees, then test whether 8DB can deliver the result while keeping the surrounding context in the same system.


Evidence note: This is a historical engineering comparison, not an audited LDBC submission. The person and friendship datasets are custom deterministic fixtures. Official IS-1 and IS-3 have fuller result contracts. The packet retains reports, the two recovered lookup logs, source revisions, calculations and open replication tasks. Exact historical binaries and the Neo4j client scripts were not recovered. No new benchmark runs were performed for this article.

Continue the technical conversation

Where could this help your work?

Bring a research question, a database workload or an application you want to build. Let’s connect the ideas in this article to an evaluation that matters to your team.

Discuss this work

Continue reading

The next layer of the argument.

Benchmark

Database Performance in Context

8DB analytics | How we compare, and what else you get

Historical analytical query results beside ClickHouse, DuckDB, StarRocks, Doris and PostgreSQL references, plus the broader opportunity of an omnimodal engine.

6 min readHistorical server-path timings · Cross-campaign market context · Two selected analytical queriesRead article
Benchmark

Database Performance in Context

8DB spatial | 14.7 ms vs. 140–13,140 ms for GIS tools

Six million locations, recorded GIS-tool comparisons, competitor timeouts and the broader opportunity of an omnimodal spatial engine.

5 min readHistorical kernel and query-path timings · Different measurement boundaries · Selected SpatialBench workloadsRead article
Benchmark

Database Performance in Context

8DB storage | Keep working when the connection disappears

16,384 records captured offline. 16,512 verified after delivery and reopening. Explore what protected local storage can do for an application that must keep working.

7 min readVendor-run telemetry rehearsal · Separate historical storage tests · Larger recovery campaign unfinishedRead article