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语句
java工具github:spring-data-neo4j
Neo4J简单了解的更多相关文章
- NEO4j简单入门
		
Neo4j是: 一个开源 无Schema 没有SQL 图形数据库 图形数据库也称为图形数据库管理系统或GDBMS. Neo4j的官方网站:http://www.neo4j.org Neo4j的优点 它 ...
 - neo4j简单学习
		
阅读更多 背景 最近在一些论坛或者新闻里看到了neo4j,一种擅长处理图形的数据库. 据说非常适合做一些join关系型的查询,所以抽空也看了下相关文档,给自己做个技术储备. 过程 深入学习之前,先在网 ...
 - Neo4j简单的样例
		
系统环境: Ubuntu 04.10 x64 一:安装 下载最新版:neo4j-community-2.2.3-unix.tar.gz 解压 cd neo4j-community-2.2.3/bin ...
 - 课堂练习——neo4j简单使用
		
启动neo4j: neo4j.bat console 进入neo4j数据库的conf目录下,编辑neo4j.conf文件:将当前数据库设置为你要建立的数据库名称(数据库不能重名): dbms.acti ...
 - Neo4j集群环境建设
		
简介: Neo4j它是目前的主流地图数据库.它本身提供了高可用性集群解决方案.本文将试图建立一个高可用性neo4j周围环境. 1. 这是一个地图数据库? 图形库(graphic database)问题 ...
 - neo4j初次使用学习简单操作-cypher语言使用
		
Neo4j 使用cypher语言进行操作 Cypher语言是在学习Neo4j时用到数据库操作语言(DML),涵盖对图数据的增删改查 neo4j数据库简单除暴理解的概念: Neo4j中不存在表的概念, ...
 - Neo4j数据库简单
		
作为世界上先进的地图数据库,Neo4j如今,公司已成为许多互联网的首选.Neo4j它是基于java开源地图数据库开发,另外一个NoSQL数据库.Neo4j在保证对数据关系的良好刻画的同一时候.还支持传 ...
 - 简单的知识图谱,neo4j+python
		
因为研究方向是知识图谱,就有兴致想要构建一个简单的知识图谱,就在网上查找了一下,参考了neo4j搭建简单的金融知识图谱的思想,就着手从零开始构建. 1.首先就要考虑数据的获得,因为之前没有接触过爬虫之 ...
 - 使用Neo4j和简单分词算法实现菜品推荐系统
		
背景:本推荐系统基于一款硬件产品--旺小宝桌牌.客人按下点餐按钮,扫码进入点餐界面,然后开始点自己喜欢的菜,在手机端下单.目前在成都已有近200家合作餐饮商家. 菜品推荐功能: 当客人在某商家使用桌牌 ...
 
随机推荐
- Path Sum I&&II
			
I Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up ...
 - [前端随笔][CSS] 制作一个加载动画 即帖即用
			
说在前面 描述 [加载中loading...] 的动画图片往往使用GIF来实现,但GIF消耗资源较大,所以使用CSS直接制作更优. 效果传送门1 效果传送门2 关键代码 @keyframes 规则 用 ...
 - GT-----FAQ整理
			
1.pss0,pss1,这里的序号0和1是什么意思? 说明选的目标调试 App 有至少 2 个进程,先启动的那个进程的 pss 值会被加后缀 0,后启动那个会被加后 缀 1.所有参数前面的“ ...
 - 创建 OpenStack云主机 (十五)
			
创建过程 创建虚拟网络 创建m1.nano规格的主机(相等于定义虚拟机的硬件配置) 生成一个密钥对(openstack的原理是不使用密码连接,而是使用密钥对进行连接) 增加安全组规则(用iptable ...
 - es6关于let和const的总结
			
set用于声明变量 1.var 的一个升级版 2.不存在变量提升 console.log(a);//Uncaught ReferenceError: a is not defined let a=1; ...
 - vue中的锚链接跳转问题
			
在vue中的锚链接和普通的html不同,关于vue中的锚链接可以参考vue 中的 scrollBehavior 滚动行为. 在router.js中 //创建 router 实例 const rout ...
 - VMware Workstation虚拟机进入BIOS
			
1.<F2>键 2.
 - ansible用playbook实现定期监控各机器磁盘和进程状态
			
目标:用ansible定期监控各机器的磁盘空间状况 和进程运行状况 1)配置playbook脚本,实现对磁盘空间 和 特定进程运行状态的每日检查: 2)通过邮件插件,把检测结果发到ops邮箱: 一.p ...
 - [BZOJ3997][TJOI2015]组合数学(Dilworth定理+DP)
			
题目名字是什么就不能往那方面想. 每个点拆成a[i][j]个,问题变为DAG最小路径覆盖,由Dilworth定理转成最长反链. 使用Dilworth定理的时候要注意那些点之间有边,这里任意一个点和其右 ...
 - 【LIS】【递推】Gym - 101246H - ``North-East''
			
x坐标排序,y坐标当权值,同一个x坐标的,y从大到小排. 求f(i)表示以i结尾的LIS以后,从后向前枚举,不断更新一个max数组,max(i)代表最长上升子序列为i时,当前的 结尾的最大值是多少. ...