Neo4j简介

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语句

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js比较日期大小

//获取当前时间 var currentTime new Date();//自定义时间 var customTime"2019-03-01 00:00:00"; customTime customTime.replace("-","/");//替换字符,变成标准格式 customTime new Date(Date.parse(customTime));if(currentT…

Docker-容器数据卷

docker容器数据卷相当于外置的移动硬盘 docker容器数据卷主要功能是:容器的持久化、容器间继承共享数据 特点: (1)数据卷可以容器之间共享或重用数据 (2)卷中更改可以直接生效 (3)数…

weblogic的输出打印日志设置

设置路径: 1、服务器——》控制,进入服务器设置 2、服务器启动——>设置参数 3、参数配置: -Xms2048m -Xmx4096m -XX:PermSize256m -XX:MaxPermSize512m -XX:UseConcMarkSweepGC -XX:CMSClassUnloadingEnabled -XX:DisableExplicitGC -…

支持向量机——Large Margin Classifier

支持向量机的目标是 \[\underbrace {\min }_\theta \left\{ {C\left[ {\sum\limits_{i 1}^m {{y^{\left( i \right)}}{\mathop{\rm Cos}\nolimits} {t_1}\left( {{\theta ^T}{x^{\left( i \right)}}} \right) \left( {1 - {y^{\left( i \right)}}} \right){\mathop{\rm Cos}\…

WebLogic清理缓存

清除缓存路径: D:\Oracle\Middleware\user_projects\domains\my_domain\servers\AdminServer\cache D:\Oracle\Middleware\user_projects\domains\my_domain\servers\AdminServer\tmp D:\Oracle\Middleware\user_projects\domains\my_domain\servers\AdminServer\…

洛咕11月月赛

当时只打了十几分钟,以为T1是结论题看了几分钟去看T2,写完贪心就不想做咕掉了。 T1 暴力就能A。如果用数组开大点,打表发现开到\(M*7\)即可。记得取模。当然可以滚掉数组。懒得给CODE。 T2 显然是贪心。只需从最低的跳到最高的,再…

怎么查询表中BLOB字段的大小

返回的是字节(B) select DBMS_LOB.GETLENGTH(name) from table;

2018-2019-1 20189210 《LInux内核原理与分析》第四周作业

第三章 这一章接触内核源代码,对内核源码进行编译和调试跟踪 一、预备知识: 内核:整个操作系统的最底层,它负责了整个硬件的驱动以及提供各种系统所需的内核功能。内核实质上是系统上面的一个文件而已,这个文件包含了驱…

IDEA 配置weblogic home时,weblogic version无法选择

问题原因: D:\Oracle\Middleware\wlserver_10.3缺少注册文件 解决方法: 把D:\Oracle\Middleware下的registry.xml文件,复制一份到D:\Oracle\Middleware\wlserver_10.3中就可以解决。

linux测试网络是否连通ping、telnet命令

ping 可以测试到目标机器的连通性,ping域名还可以得出解析IP。 ping ip地址 例:ping 127.0.0.1图例: telent测试端口是否开放。 telent ip地址 端口号 例如:telent 127.0.0.1 8080

2018ACM-ICPC国际大学生程序设计竞赛亚洲区域赛(青岛站)赛后总结

这是今年最后一次打铁,我已经打了一年的铁了。 还是想写一个总结,不然,什么都会没留下。 实际上在去青岛之前,我已经一个月都没有严格地训练自己了,从9月份CCPC秦皇岛站打铁之后,我就基本上开始怀疑自己了&…

引用js/css时,加入时间戳解决浏览器缓存问题

解决思路&#xff1a;在引入的url后面加上时间戳&#xff0c;每次请求获取最新的js/css var timestampnew Date().getTime()&#xff1b;<script type"text/javascript" src"****.js?t"timestamp></script>

MySQL数据库编译过程

编译安装MySQL 准备工作 卸载rpm方式安装的mysql-server、mysql 安装ncurses-devel和cmake包 yum -y install ncurses-devel cmake tar xf cmake-2.8.6.tar.gz -C /usr/src cd /usr/src/cmake-2.8.6/ ./configure && gmake && gmake install 这个过程需要时间源…

window.open()详解

语法 window.open(URL,name,specs,replace) var specs"height400,width600,alwaysRaised,directoriesno,toolbarno,titlebarno,menubarno,scrollbarsno, resizableno,locationno, statusno";返回值&#xff1a; oNewWindow : 对象(Element)。返回对新的 window 对…

深入了解Kubernetes REST API的工作方式

关于Kubernetes REST API的工作方式&#xff1a; 在哪里以及如何定义从REST路径到处理REST调用的函数的映射&#xff1f; 与etcd的交互发生在哪里&#xff1f; 从客户端发出请求到保存在etcd中对象的端到端路径是怎样的&#xff1f; Kubernetes REST框架 Kubernetes REST实现可…

mapper 判断条件为null

在双引号里面再判断不为空 <if test"name ! null and name !" > and name #{name} </if>

gitlab hook触发jenkins自动构建

意义&#xff0c;gitlab推送或合并代码后触发jenkin自动构建发布代码或者执行命令推送规则 1.安装gitlab和hook插件有时需要重启jenkins服务&#xff0c;可能兼容性问题&#xff0c;安装完之后构建中看不到hook插件 2.配置jenkins构建中的hook插件下图中圈出为必选&#xff0c;…

The content of elements must consist of well-formed character data or markup

SQL语句中包括XML预定义字符&#xff0c;则需将SQL语句放在<![CDATA[ ]]> 中。在 XML 中有 5 个预定义的实体引用&#xff1a; 预定义字符 说明 < 小于 > 大于 & 和号单引号 " 双引号例子&#xff1a; <if test"id ! null and id ! ">a…

Python开发【第一篇】:初识Python

1. Python简介 Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言&#xff0c;由Guido van Rossum于1989年底发明。 1.1 Python 介绍 1. 开发语言 低级语言&#xff1a;C、汇编等&#xff08;机器码&#xff09;高级语言&#xff1a;Python、Java、PHP、C# 等&am…

[Ljava.lang.String; cannot be cast to java.lang.String

问题描述&#xff1a;不能把String[]转化为String类型。 解决方案&#xff1a; String name ((String[])request.getAttribute(“name”))[0];