Blog - Using Datomic as a Graph Database. Datomic is a database that changes the way that you think about databases.
It also happens to be effective at modeling graph data and was a great fit for performing graph traversal in a recent project I built. I started out building kevinbacon.us using Neo4j, a popular open-source graph database. It worked very well for actors that were a few hops away, but finding paths between actors with more than 5 hops proved problematic. The cypher query language gave me little visibility into the graph algorithms actually being executed. I wanted more. Despite not being explicitly labeled as such, Datomic proved to be an effective graph database. Quick aside: this post assumes a cursory understanding of Datomic. 6 Degrees Kevin == Cool; 6 Degrees Kelvin == Cold The problem domain should be fairly familiar: the 6 degrees of Kevin Bacon. Using information freely available from IMDb, I developed the following schema: In a nutshell, movies have titles and years.
Using datalog queries Performance Source. Neo4j vs. OrientDB vs. Titan Comparison. Representing time dependent graphs in Neo4j · SocioPatterns/neo4j-dynagraph Wiki. Background Large-scale data collection efforts using wearable sensors to mine for proximity of individuals (for example, the SocioPatterns project) produce time-varying social graphs, where nodes are individuals, edges represent proximity/contact relations of individuals, and the proximity graph changes over time.
Both nodes and edges can have rich attributes. Data formats for exchanging the time-dependent graphs are available, see for instance the GEXF format. Efficiently mining large time-dependent graphs, however, requires a database and a representation that can support complex topological queries, temporal queries, multi-scale temporal indexing and aggregation, and more. A growing research community working on temporal networks may benefit from sound and efficient techniques to represent, store and query dynamic graphs. Here we want to start a discussion on best practices for modeling time-varying graphs in Neo4j.
Data model A Neo4j pattern for dynamic graphs In summary: . . Contributors. SocioPatterns.org. [1108.1780] Temporal Networks. [1306.4626] Activity clocks: spreading dynamics on temporal networks of human contact. TinkerPop. Rexter · tinkerpop/rexster Wiki. Blueprints · tinkerpop/blueprints Wiki. Gremlin · tinkerpop/gremlin Wiki. Datomic - Home. Fluxgraph. Blueprints implementation on top of Datomic. Blueprints-datomic-graph. Titan: Distributed Graph Database. Titan is a scalable graph database optimized for storing and querying graphs containing hundreds of billions of vertices and edges distributed across a multi-machine cluster.
Titan is a transactional database that can support thousands of concurrent users executing complex graph traversals in real time. In addition, Titan provides the following features: Download Titan or clone from GitHub. Read the Titan documentation and join the mailing list. <dependency><groupId>com.thinkaurelius.titan</groupId><artifactId>titan-core</artifactId><version>1.0.0</version></dependency><! // who is hercules' grandfather? Continue with the Getting Started with Titan guide for a step-by-step introduction.
Faunus: Graph Analytics Engine. The Apache Cassandra Project. HBase - Apache HBase Home. Berkeley DB Java Edition. Oracle Berkeley DB Java Edition is an open source, embeddable, transactional storage engine written entirely in Java.
It takes full advantage of the Java environment to simplify development and deployment. The architecture of Oracle Berkeley DB Java Edition supports very high performance and concurrency for both read-intensive and write-intensive workloads. Depending on your needs choose between Berkeley DB Java Edition's Direct Persistence Layer (DPL), Persistent Collections API, or simply store key/value pairs of arbitrary data. If your application requires something outside the bounds of relational databases then Berkeley DB Java Edition is likely to be the best choice. The majority of Java solutions use object-to-relational (ORM) solutions like the Java Persistence API (JPA) to map class and instance data into rows and columns in a RDBMS. Berkeley DB Java Edition is different from all other Java databases available today.
Data Storage. Neo4j - The World's Leading Graph Database. DEX high-performance graph database. DEX use case. OrientDB. Graph.