博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Neo4J简单了解
阅读量:4695 次
发布时间:2019-06-09

本文共 2083 字,大约阅读时间需要 6 分钟。

1、什么是Neo4j

  Neo4j是由java实现的开源NOSQL图数据库
  数据库分为关系型和非关系型两种类型。
  其中非关系型又分为Graph(图形),Document(文档),Cloumn Family(列式),以及Key-Value Store(KV),
  这四种类型数据库分别使用不同的数据结构进行存储。因此它们所适用的场景也不尽相同。
  特点:
    1、界面友好: 前端D3.js
    2、查询语言: Cypher
    3、ACID事务
  A、体系结构:
  Neo4j最初的动机是为了更好的描述实体之间的联系
  1、免索引邻接
    (1)免索引邻接使用遍历物理关系的方法查找,比起全局索引代价要小的多
    (2)当索引建立后,反向遍历时,索引就会失效
    所以免索引邻接机制,使得图库上关系查询效率非常高
  B、存储结构:
    节点和关系都是采用固定长度存储。
   (1)节点(Node)
    包含一个和多个属性(properties),标签(Label)
    长度: 9字节
    存储文件名:neostore.nodestore.db
    格式:Node:inUse+newRelId+newPropId
    inUse: 1表示该节点呗正常使用,0表示该节点被删除
    nextRelId: 该节点的下一个关系ID
    nextPropId: 该节点的下一个属性ID
    示例数据:
    Node[0,used=true,rel=9,prop=-1]
    Node[1,used=true,rel=1,prop=0]
    Node[2,used=true,rel=2,prop=2]
    Node[3,used=true,rel=2,prop=4]
  数据解释:
    Node[12,used=true,rel=11,prop=22]采用固定字节长度的记录可以快速地查询到存储文件中的节点。
    如果有个ID为100的节点。我们知道该记录在存储文件的第900个字节。基于这种查询方式,查询成本是O(1)
  (2)关系(Relationship)
    包含起始节点(startNode)和终止节点(endNode),一个和多个属性,标签,一个类型
    长度: 33字节
    存储文件名: neostore.relationshipstore.db
    格式: Relationship:inUse+firstNode+secondNode+relType+firstPreRelId+firstNextRelId+secondPrevRelId+secondNextRelId+nextPropId
    inUse:,nextPropId: 作用同上。
    firstNode: 当前关系的起始节点。
    secondNode: 当前关系的终止节点。
    relType: 关系的类型。
    firstPrevRelId & firstNextRelId: 起始节点的前一个和后一个关系的ID。
    secondPrevRelId & secondNextRelId: 终止节点的前一个和后一个关系ID。
  数据解释:
    Relationship[0,used=true,source=1,target=0,type=0,sPrev=1,sNext=-1,tPrev=3,tNext=-1,prop=1]
    Relationship[0,used=true,source=2,target=1,type=1,sPrev=2,sNext=-1,tPrev=-1,tNext=0,prop=3]
  (3)属性(property)
  长度:9字节
  存储文件名:neostore.propertystore.db.index
  格式:property:inUse+propCount+keyBlockId
  属性索引的值部分存储的是指向动态内存的记录或者内联值,短字符串和短数组会直接内联在属性存储记录中。当长度超过属性记录中propBlock长度限制之后
  会存储到其他的动态存储文件中
  C、遍历方式
  从一个给定节点定位关系链中第一个关系的位置,然后计算它在关系存储的偏移量获取,使用关系ID乘关系的固定大小即可定位存储文件中的正确位置
  在关系记录中,搜索第二个字段可以找第二个节点的ID,用节点固定大小乘节点ID可以得到节点在存储中的正确位置
  D、存储优化
    尽量将短字符的属性直接存储在属性文件中,压缩和内联存储

  Neo4j的安装

  批量导入工具的使用

  Cypher语句

  java工具github:spring-data-neo4j

 

转载于:https://www.cnblogs.com/atomicbomb/p/10117845.html

你可能感兴趣的文章
OPTIONS 跨域请求
查看>>
客户端第一天学习的相关知识
查看>>
python工具pycharm使用-断点调试
查看>>
Python生成pyc文件
查看>>
Linux防火墙的关闭和开启
查看>>
LeetCode - Same Tree
查看>>
Python dict get items pop update
查看>>
[置顶] 程序员必知(二):位图(bitmap)
查看>>
130242014036-(2)-体验敏捷开发
查看>>
constexpr
查看>>
java web线程池
查看>>
Nginx 流量和连接数限制
查看>>
selenium.common.exceptions.WebDriverException: Message: unknown Error: cannot find Chrome binary
查看>>
iOS - 单例传值 (一)
查看>>
课堂作业1
查看>>
IE8/9 本地预览上传图片
查看>>
Summary of CRM 2011 plug-in
查看>>
Eclipse+Maven环境下java.lang.OutOfMemoryError: PermGen space及其解决方法
查看>>
安全漏洞之Java
查看>>
Oracle 组函数count()
查看>>