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

Neo4J简单了解的更多相关文章

  1. NEO4j简单入门

    Neo4j是: 一个开源 无Schema 没有SQL 图形数据库 图形数据库也称为图形数据库管理系统或GDBMS. Neo4j的官方网站:http://www.neo4j.org Neo4j的优点 它 ...

  2. neo4j简单学习

    阅读更多 背景 最近在一些论坛或者新闻里看到了neo4j,一种擅长处理图形的数据库. 据说非常适合做一些join关系型的查询,所以抽空也看了下相关文档,给自己做个技术储备. 过程 深入学习之前,先在网 ...

  3. Neo4j简单的样例

    系统环境: Ubuntu 04.10 x64 一:安装 下载最新版:neo4j-community-2.2.3-unix.tar.gz  解压 cd neo4j-community-2.2.3/bin ...

  4. 课堂练习——neo4j简单使用

    启动neo4j: neo4j.bat console 进入neo4j数据库的conf目录下,编辑neo4j.conf文件:将当前数据库设置为你要建立的数据库名称(数据库不能重名): dbms.acti ...

  5. Neo4j集群环境建设

    简介: Neo4j它是目前的主流地图数据库.它本身提供了高可用性集群解决方案.本文将试图建立一个高可用性neo4j周围环境. 1. 这是一个地图数据库? 图形库(graphic database)问题 ...

  6. neo4j初次使用学习简单操作-cypher语言使用

    Neo4j 使用cypher语言进行操作 Cypher语言是在学习Neo4j时用到数据库操作语言(DML),涵盖对图数据的增删改查  neo4j数据库简单除暴理解的概念: Neo4j中不存在表的概念, ...

  7. Neo4j数据库简单

    作为世界上先进的地图数据库,Neo4j如今,公司已成为许多互联网的首选.Neo4j它是基于java开源地图数据库开发,另外一个NoSQL数据库.Neo4j在保证对数据关系的良好刻画的同一时候.还支持传 ...

  8. 简单的知识图谱,neo4j+python

    因为研究方向是知识图谱,就有兴致想要构建一个简单的知识图谱,就在网上查找了一下,参考了neo4j搭建简单的金融知识图谱的思想,就着手从零开始构建. 1.首先就要考虑数据的获得,因为之前没有接触过爬虫之 ...

  9. 使用Neo4j和简单分词算法实现菜品推荐系统

    背景:本推荐系统基于一款硬件产品--旺小宝桌牌.客人按下点餐按钮,扫码进入点餐界面,然后开始点自己喜欢的菜,在手机端下单.目前在成都已有近200家合作餐饮商家. 菜品推荐功能: 当客人在某商家使用桌牌 ...

随机推荐

  1. OpenStack 镜像服务 Glance部署(七)

    创建虚拟机我们需要有glance的支持,因为glance是提供镜像的服务. Glance有两个比较重要的服务: Glance-api:接受云系统镜像的构建.删除.读取请求 Glance-Registr ...

  2. Java String lastIndexOf() 方法

    Java String lastIndexOf() 方法 测试代码 public class Test { public static void main(String[] args) { // -- ...

  3. HDU 1002.A + B Problem II-数组模拟-大数相加

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. 洛谷P1908 逆序对 [权值线段树]

    题目传送门 逆序对 题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的 ...

  5. Java中Object的方法

    构造方法摘要Object()           方法摘要protected Object clone()           创建并返回此对象的一个副本.boolean equals(Object ...

  6. AGC 022 C - Remainder Game

    题面在这里! 显然权值是 2^i 这种的话就是要你贪心,高位能不选就不选. 并且如果 % x 之后再去 % 一个>=x的数是没有用的,所以我们可以把操作的k看成单调递减序列. 这样的话就是一个有 ...

  7. HZAU 1201 Friends(树形DP)

    [题目链接] http://acm.hzau.edu.cn/problem.php?id=1201 [题目大意] 给出一棵树,问每个节点距离六个点以内的点有几个 [题解] 定根维护树形DP,Dw[x] ...

  8. 【构造】【贪心】hdu6090 Rikka with Graph

    给你n个点,让你连m条边,使得任意两两点对之间的最短路的和最小(两点若不可达,最短路记作n). 初始时ans=n*n*(n-1). 先尽量连成菊花图,每连一次让答案减小2*((n-2)*(i-1)+( ...

  9. 【DFS】Gym - 100781A - Adjoin the Networks

    给你一个森林,让你把它连接成一颗树,使得直径最小. 就求出每颗树的重心以后,全都往直径最大的那个的重心上连,一般情况是最大/2+次大/2+1,次大/2+第三大/2+2 中取较大者. 还有些特殊情况要特 ...

  10. 【动态规划】 Codeforces Round #416 (Div. 2) C. Vladik and Memorable Trip

    划分那个序列,没必要完全覆盖原序列.对于划分出来的每个序列,对于某个值v,要么全都在该序列,要么全都不在该序列.  一个序列的价值是所有不同的值的异或和.整个的价值是所有划分出来的序列的价值之和.   ...