1.neo4j介绍
Neo4j是由Java和Scala实现的开源NoSQL图数据库。自2003年开始研发,直到2007年正式发布第一版。Neo4j的源代码托管在GitHub上,技术支持托管在Stack Overflow和Neo4j Google讨论组上。Neo4j现如今已经被各种行业的数十万家公司和组织采用。Neo4j的使用案例涵盖了包括网络管理、软件分析、科学研究、路由分析、组织和项目管理、决策制定、社交网络等。
官方网站:https://neo4j.com
Github: https://github.com/neo4j/neo4j
Example: https://github.com/neo4j-examples
2.体系架构
宏观来说,neo4j只是支撑两种数据类型,即节点和关系。
节点:有多个属性,具备标签(区分不同类型的节点)
关系:一个关系有开始节点和终止节点,关系也有自己的属性和标签。
节点和关系都是使用固定长度进行数据存储,
1> 节点存储文件用来存储节点记录,文件名为:neostore.nodestore.db,长度为固定值9个字节。格式为:Node:inUse+nextReIId+nextPropId。其中0表示该节点已经删除,1表示该节点正在使用;nextRelld表示该节点的下一个关系ID。nextPropld表示该节点下一个属性ID。
2> 关系存储文件名称为:neostore.relationshipstore.db。跟节点存储一样,在存储区也是固定大小的。
3> neo4j中,使用.id记录未使用的记录占用空间,节点和关系的存储文件只关心图的基本存储结构而不是属性数据,以便存储文件内的记录都可以根据ID快速计算出来。属性物理存档位置为neostore.propertystore.db 文件。Neo4j中有两种动态存储:动态字符存储(neostore.propertystore.db.string)和动态数据存储(neostore.propertystore.db.arrays)。
节点关系图