http://disa.fi.muni.cz/vlastislav-dohnal/teaching/nosql-databases-fall-2019/ ● ● ○ ○ ○ ● ○ ○ ● ○ source: Sadalage & Fowler: NoSQL Distilled, 2012 ● ○ ○ ○ ○ … ● ○ ○ ● ○ ● ■ ■ ■ … ○ ● ○ ○ ● ● ⨉ ○ ○ ● ○ ○ … ● ○ ○ ● ○ ○ ○ ○ ● ○ ● ○ ○ ● ○ ● ○ ○ ○ ● ○ ■ ● ○ ■ ○ ■ ● ○ ■ ● ○ ⨉ ⋙ ○ ● ⨉ ○ ○ ○ ● ○ ■ ■ ■ ○ ● ○ ○ ● ● ○ ○ ○ ● ○ ● ○ ○ ● ○ ■ ● ○ ○ ● ● ○ ● ■ ● ○ ● ● ○ ● ● ○ ○ ● ○ ● ○ ● ○ ○ ● ○ ■ ● ○ ○ ● ○ ○ … ● … ● ○ ○ … ● ● ○ ■ ● ○ ■ ○ ■ ■ ● ● ○ ■ … ■ ○ ■ ■ … ● ○ ■ ■ ● ■ ○ ■ ○ ■ ● ■ ● ○ ● ■ ○ ○ ■ ○ ○ ■ ● ○ ○ ● ○ ■ ■ ■ ● ○ … ● ○ ○ ○ ● ● ○ ○ ■ … ● ● ○ source: Sadalage & Fowler: NoSQL Distilled, 2012 ● ○ ● ● ○ ○ ● ○ ● ● ● ● ○ ● ● ● ● ● ● ● ● http://db-engines.com/en/system/Neo4j ● ● ○ ○ ■ ● ○ Type Description boolean true/false byte 8-bit integer short 16-bit integer int 32-bit integer long 64-bit integer float 32-bit IEEE 754 floating-point number double 64-bit IEEE 754 floating-point number char 16-bit unsigned integer representing a Unicode character String sequence of Unicode characters ● ○ ■ ■ ○ ■ What How get who a person follows outgoing follows relationships, depth one get the followers of a person incoming follows relationships, depth one get who a person blocks outgoing blocks relationships, depth one What How get the full path of a file incoming file relationships get all paths for a file incoming file and symbolic link relationships get all files in a directory outgoing file and symbolic link relationships, depth one get all files in a directory, excluding symbolic links outgoing file relationships, depth one get all files in a directory, recursively outgoing file and symbolic link relationships ● ● ○ ● ○ ● ● ● Node irena = graphDb.createNode(); irena.setProperty("name", "Irena"); Node jirka = graphDb.createNode(); jirka.setProperty("name", "Jirka"); Relationship i2j = irena.createRelationshipTo(jirka, FRIEND); Relationship j2i = jirka.createRelationshipTo(irena, FRIEND); i2j.setProperty("quality", "a good one"); j2i.setProperty("since", 2003); ● ○ ○ ● ○ ● ○ ○ ● ○ ○ ■ ○   ○   ○ ● org.neo4j...TraversalDescription ○ ■ breadthFirst() depthFirst() ● .relationships() ○ ■ ■ ○ ■ Direction.BOTH ■ Direction.INCOMING ■ Direction.OUTGOING ● org.neo4j...Evaluator ○ ■ INCLUDE_AND_CONTINUE ■ INCLUDE_AND_PRUNE ■ EXCLUDE_AND_CONTINUE ■ EXCLUDE_AND_PRUNE ○ ■ Evaluators.toDepth(int depth) Evaluators.fromDepth(int depth), ■ Evaluators.excludeStartPosition() ■ … ● org.neo4j...Uniqueness ○ ● Traverser ○ ○ ■ ○ TraversalDescription desc = db.traversalDescription() .depthFirst() .relationships( Rels.KNOWS, Direction.BOTH ) .evaluator(Evaluators.toDepth(3)); // node is ‘Ed’ (Node[2]) for (Node n : desc.traverse(node).nodes()) { output += n.getProperty("name") + ", "; } http://neo4j.com/docs/stable/tutorial-traversal-java-api.html Ed, Lars, Lisa, Dirk, Peter ● ■ ■ ■ ● ■ ■ ● ● ○ ● ○ ○ ● ● ● http://neo4j.com/docs/stable/cypher-query-lang.html ● ● ● ● ○ ● ● ● ● Created 1 node, returned 0 rows Created 1 node, set 1 property, returned 1 row Created 1 relationship, returned 1 row Created 1 node, set 1 property, returned 1 row ● ○ Indexes added: 1 ● ○ ○ ○ ■ ■ ■ ○ ■ ● ○ ● ○ ● ○ ● ● ○ ○ ● ○ ○ ○ ● ○ ○ ● ○ ■ ● ○ ● I. Holubová, J. Kosek, K. Minařík, D. Novák. Big Data a NoSQL databáze. Praha: Grada Publishing, 2015. 288 p. ● RNDr. Irena Holubova, Ph.D. MMF UK course NDBI040: Big Data Management and NoSQL Databases ● Sherif Sakr - Eric Pardede: Graph Data Management: Techniques and Applications ● Sadalage, P. J., & Fowler, M. (2012). NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. Addison-Wesley Professional, 192 p. ● http://neo4j.com/docs/stable/