Databases Reference
In-Depth Information
It's important to note that native graph storage and native graph pro‐
cessing are neither good nor bad—they're simply classic engineering
trade-offs. The benefit of native graph storage is that its purpose-built
stack is engineered for performance and scalability. The benefit of non‐
native graph storage, in contrast, is that it typically depends on a mature
nongraph backend (such as MySQL) whose production characteristics
are well understood by operations teams. Native graph processing
(index-free adjacency) benefits traversal performance, but at the ex‐
pense of making some nontraversal queries difficult or memory
intensive.
Relationships are first-class citizens of the graph data model, unlike other database
management systems, which require us to infer connections between entities using
contrived properties such as foreign keys, or out-of-band processing like map-reduce.
By assembling the simple abstractions of nodes and relationships into connected struc‐
tures, graph databases enable us to build arbitrarily sophisticated models that map
closely to our problem domain. The resulting models are simpler and at the same time
more expressive than those produced using traditional relational databases and the
other NOSQL stores.
Figure 1-3 shows a pictorial overview of some of the graph databases on the market
today based on their storage and processing models.
Graph Compute Engines
A graph compute engine is a technology that enables global graph computational algo‐
rithms to be run against large datasets. Graph compute engines are designed to do things
like identify clusters in your data, or answer questions such as, “how many relationships,
on average, does everyone in a social network have?”
Because of their emphasis on global queries, graph compute engines are normally op‐
timized for scanning and processing large amounts of information in batch, and in that
respect they are similar to other batch analysis technologies, such as data mining and
OLAP, that are familiar in the relational world. Whereas some graph compute engines
include a graph storage layer, others (and arguably most) concern themselves strictly
with processing data that is fed in from an external source, and returning the results.
Search WWH ::




Custom Search