Wire-to-address exposure trail.
- pattern
- bank → wire → txn → account → address
- layer
- Cypher inside · SUM/COUNT outside
- live
- add_table_monitor on wires table
- bonus
- Eulerian loops detect layering rings
One grammar for geospatial, social, and property graphs. Topology stored in fixed memory. Traversals restricted by the same SQL you write on the rest of your data — no copy, no sync, no second engine.
Fastest at pure-graph workloads when the graph is static. The cost: graph topology is a copy, attributes are duplicated or streamed in via hooks, and joins back to relational data live in application code or batch jobs.
-- Top-exposure wires from one bank. -- Cypher does the traversal, -- SQL does the aggregation — -- in a single statement. SELECT wire, risk, ROUND(SUM(amount), 0) AS total FROM GRAPH_TABLE ( GRAPH expero.banking_graph MATCH (a:bank WHERE a.bank_name = 'Harvey Group') -[:performed]-> (b:wire_message WHERE b.risk_score > 20) -[:is_for_transaction]-> (c:banking_transaction) RETURN b.NODE AS wire, b.risk_score AS risk, c.amount AS amount ) GROUP BY wire, risk ORDER BY total DESC LIMIT 10;
Fixed-size cells. Storage cost is exactly 6 × edge count — predictable from day one to day n.
Insert and delete are pointer operations. The graph holds its shape under continuous updates.
Where conventional graph structures need 100 M GB to hold a fully-connected billion-node graph, DLS needs 10 GB. Real graphs are sparser — the same compression ratio holds.
-- The graph follows the tables. -- The tables follow the stream. -- No rebuild step in between. CREATE OR REPLACE GRAPH fraud_live ( NODES => INPUT_TABLES( SELECT * FROM accounts ), EDGES => INPUT_TABLES( SELECT * FROM wire_transfers ), OPTIONS => KV_PAIRS( add_table_monitor = 'true', save_persist = 'true' ) ); -- accounts and wire_transfers -- can now be streamed into. -- The graph stays current.
Network-agnostic algorithms that operate on any graph: shortest paths, travelling salesman, backhaul routing, PageRank, Markov chain probability, centrality measures, all-paths enumeration.
EXECUTE FUNCTION SOLVE_GRAPH( GRAPH => 'seattle_roads', SOLVER_TYPE => 'SHORTEST_PATH', SOURCE_NODES => INPUT_TABLES(...) );
Higher-order solvers built on combinations of the generic primitives — for routing, fraud, scheduling, and supply-chain optimization. Two patented algorithms anchor this family.
EXECUTE FUNCTION MATCH_GRAPH( GRAPH => 'logistics', SOLVE_METHOD => 'match_supply_demand', OPTIONS => KV_PAIRS(...) );
Hop-based pattern queries with node and edge labels. Restrictions can reference any column on any table — including columns that aren't even part of the graph.
GRAPH social MATCH(a:PERSON)-[ab:Friend]->{3}(b:CHESS) RETURN a.node as source, b.node as target
Adaptive-kernel Markov chain with range-tree closest-edge search. Turns raw GPS samples into validated road-network paths over any OSM-derived graph.
Multi-step, multi-modal, spec-matching dispatch via MILP. Air → sea → land with partial loading and capability constraints — no external OR solver.
Closed-cycle enumeration with unlimited hop counts. Surfaces money-movement loops where conventional path solvers only return open trails.
Optimal path across an EV charging network with range constraints and penalty-tuned stops. Single solver across a continent of stations.
-- Three-hop friend traversal — -- restricted by a column on a table -- that isn't even in the graph. EXECUTE FUNCTION QUERY_GRAPH( GRAPH => 'social', QUERIES => INPUT_TABLES( (SELECT 'Jane' AS NODE_NAME), (SELECT 'CHESS' AS TARGET_NODE_LABEL), (SELECT 2 AS HOP_ID, 'friend' AS HOP_EDGE_LABEL) ), RESTRICTIONS => INPUT_TABLES( -- this is just SQL. -- on a table not in the graph. SELECT name AS NODE_NAME, IF(age < 40 AND status = 'active', 0, 1) AS ONOFFCOMPARED FROM Person ), RINGS => 3 );
Because vector, graph, and relational all live in the same engine, a column of embeddings is a valid edge weight. Compute L2 distance between every pair of rows, construct edges where the distance is small enough — and now you have a similarity graph you can traverse with labels and OLAP filters in the same query.
-- vector(6) of movie preferences CREATE OR REPLACE TABLE relations( name TEXT, movie_likes VECTOR(6) ); -- edges from L2 distance CREATE OR REPLACE GRAPH netflix ( EDGES => INPUT_TABLES( SELECT t1.name AS NODE1_NAME, t2.name AS NODE2_NAME, 'WATCHED' AS LABEL, L2_DISTANCE( t1.movie_likes, t2.movie_likes ) AS WEIGHT_VALUESPECIFIED FROM relations t1 CROSS JOIN relations t2 WHERE L2_DISTANCE(...) < 0.6 ) );
The complete topology lives on each node. Every solver runs locally, end-to-end, with no inter-server coordination. Reads scale with node count; the limit is single-node memory.
Topology is split — each server holds a partition with duplicated interface nodes for cross-partition traversals. Memory scales horizontally; cross-partition solves coordinate over the network.
Single node interacting with many OLAP nodes — that's a winner. Distributed graph servers can ping-pong on partitions where the workload crosses too many boundaries. Choose the mode that fits the workload, not the demo.
NODE, EDGE,
WEIGHTS, and RESTRICTIONS are annotated column references on existing
tables, so a graph traversal can filter on any column without copying or syncing anything.
SELECT as the
RESTRICTIONS argument to QUERY_GRAPH and the predicate is evaluated by
the distributed OLAP engine for every candidate node during the walk. Failed nodes are pruned
mid-traversal. The filter can reference any column on any table in the database, including columns
the graph has never seen.
shortest_path, multiple_routing/TSP,
backhaul_routing, page_rank, probability_rank,
centrality, closeness, stats_all,
inverse_shortest_path), Match (match_supply_demand,
map_matching, charging_stations, pickup_dropoff,
loops, similarity, clusters via Louvain/RSB,
pattern, batch_solves — four of which are patented), and
Query (label-aware hop-based traversals with OLAP restrictions).
map_matching) snaps noisy GPS to road-network paths
via an adaptive-kernel Markov chain with range-tree closest-edge search.
MSDO (match_supply_demand) runs multi-step, multi-modal MILP
dispatch — air → sea → land with partial loading and capability constraints — in-database, with no
external solver. Eulerian loops (loops) enumerate closed cycles with
unlimited hop counts, surfacing money-movement rings that conventional path solvers return only as
open trails. EV charging routing (charging_stations) returns
range-aware paths across thousands of stations as a single solve. Together they replace a
downstream stack of specialized routing and optimization services.
SHORTEST_PATH over five lon/lat
pairs returns in roughly 250 ms. On a single node with 1 TB RAM + 0.5 TB ZRAM, Kinetica has held a
4.3 B-edge / 2.8 B-vertex graph and run 3-hop source-to-many queries in 1.2–1.8 seconds. Build
time for that graph from cold was ~4.5 hours.
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions. Cookie Policy