•Neo4j是一个高性能的,NOSQL图形数据库,它完全支持ACID(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))数据库事务属性,采用JAVA语音编写,由于其良好的图数据模型设计,Neo4j的速度非常快。对于连接的数据操作,Neo4j的速度要比传统的关系型数据库快1000倍。部署一个neo4j服务器便可以承载上亿级的节点和关系。当单节点无法承载我们的数据需求时,我们可以进行分布式集群部署.

•一个图由无数的节点和关系组成
•“一张图 – 数据记录在 → 节点 → 包括的 → 属性里面”
•最简单的图是单节点的,一个记录,记录了一些属性。一个节点可以从单属性开始,成长为成千上亿,虽然会有一点点麻烦。从某种意义上讲,将数据用关系连接起来分布到不同节点上才是有意义的。
“节点 — 被组织 → 关系 — 可以有 → 属性”
关系可以将节点组织成任意的结构,允许一张图被组织成一个列表,一棵树,一张地图,或者一个复杂的实体 – 这个实体本身也是由复杂的,关系高度关联的结构组成。
•“一个索引 — 映射到 → 属性 — 属于 → 节点或者关系”
•经常,你想通过某一给定的属性值找到节点或者关系。比起通过遍历我们的图来书,用索引将会更加高效。比如“找到用户名是tony的用户”。
 
 

节点
•构成一张图的基本元素是节点和关系。在Neo4j中,节点和关系都可以包含属性。
•节点经常被用于表示一些_实体_,但依赖关系也一样可以表示实体。
一个最简单的节点,他只有一个属性,属性名是name,属性值是Marko
 
关系
•节点之间的关系是图数据库很重要的一部分。通过关系可以找到很多关联的数据,比如节点集合,关系集合以及他们的属性集合。
一个关系连接两个节点,必须有一个开始节点和结束节点。
•因为关系总是直接相连的,所以对于一个节点来说,与他关联的关系看起来有输入/输出两个方向,这个特性对于我们遍历图非常有帮助:
 
 
•为了将来增强遍历图中所有的关系,我们需要为关系设置类型。注意 关键字 type 在这可能会被误解,你其实可以把他简单的理解为一个标签而已。
•下面的例子是一个有两种关系的最简单的社会化网络图。
 
 
 
•节点和关系都可以设置自己的属性。
•属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。比如+String+,+int+和i+int[]+都是合法的。
 
 
•路径:路径由至少一个节点,通过各种关系连接组成,经常是作为一个查询或者遍历的结果。
 
 
 
•最短的路径是0长度的像下面这样:
 
 
•长度为1的路径如下:
 
 
社交关系图
 
 
•遍历(Traversal):遍历一张图就是按照一定的规则,跟随他们的关系,访问关联的的节点集合。最多的情况是只有一部分子图被访问到,因为你知道你对那一部分节点或者关系感兴趣。
•Neo4j提供了遍历的API,可以让你指定遍历规则。最简单的设置就是设置遍历是宽度优先还是深度优先。
•Traversal.preorderDepthFirst(): 深度优先,在访问的子节点之前访问每一个节点。
•Traversal.postorderDepthFirst(): 深度优先,在访问的子节点之后访问每一个节点。
•Traversal.preorderBreadthFirst(): 宽度优先,在访问的子节点之前访问每一个节点。
•Traversal.postorderBreadthFirst(): 宽度优先,在访问的子节点之后访问每一个节点。
•增加一个关系类型到遍历的关系类型列表中。 默认情况下,这个列表是空的,意味着默认会返回 所有类型 的关系,而不考虑类型。 如果有关系被加入到这个列表中,那就意味着 只有 列表中的关系才会被遍历。 有两个方法,一个是包括方向,另外一个是排除方向,这个方法中遍历关系是双向的。
 
 

通过引入一个正确的Java库就可以将Neo4j放入项目中,在选择了适合你的平台的版本后,通过引入jar包到你的应用中来完成嵌入Neo4j,在嵌入式的模式下,Neo4j可以和应用程序运行于同一个进程,嵌入式的优点:
1、低延迟,直接与数据库对话,没有网络开销。
2、任选API,可以全范围的访问创建和查询数据的API,包括Neo4j的核心API,遍历框架和Cypher查询语音
3、嵌入式模式提供了对命名索引的创建和管理的完全控制。
嵌入式缺点:
1、仅能应用于JVM,Neo4j是基于JVM的数据库,因此它的很多API仅能通过基于JVM的语音访问。
2、GC的行为,主机的应用程序垃圾回收器的行为会对Neo4j产生影响,并且当嵌入式实例运行于HA集群时,长期的GC暂停可能会使集群协议触发主节点重选
3、应用程序负责控制数据库的生命周期,包括启动和关闭。嵌入式版本的Neo4j和服务器版本的Neo4j一样,也可以做成集群。也可以将嵌入式和服务器版本的Neo4j做混合集群。

Neo4j可以作为一个独立服务器访问,可以直接通过一个REST接口或者一个基于指定语言的驱动。
1、REST API:服务器提供了REST API接口,允许客户端通过http请求发送JSON格式的请求,响应包括JSON格式的消息响应。
2、平台独立性:由于访问是通过HTTP发送的JSON格式的文档,因此Neo4j服务器可以被运行于任何平台的客户端访问。
3、Neo4J以服务器模式运行时,可以独立于应用服务器。
4、与应用程序的GC行为隔离,服务器模式中,任何应用程序的不良GC行为都不会影响Neo4j。
5、网络开销:在接收到第一个客户端请求之后,TCP链接会保持开启状态,知道客户端关闭。
6、每个请求的事务:每个客户端的请求都在一个单独的事务上下文中被执行。
7、开发者可以自己扩展REST API,扩展采取JAX-RS注解类(annotated class)的形式。
 

Neo4J图库的基础介绍(一)的更多相关文章

  1. Neo4J图库的基础介绍(二)-图库开发应用

    JAX-RS是一个用于构建REST资源的Java API,可以使用JAX-RS注解装饰每一个扩展类,从而让服务器处理对应的http请求,附加注解可以用来控制请求和响应的格式,http头和URI模板的格 ...

  2. Web3D编程入门总结——WebGL与Three.js基础介绍

    /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...

  3. C++ 迭代器 基础介绍

    C++ 迭代器 基础介绍 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围.迭代器就如同一个指针.事实上,C++的指针也是一种迭代器.但是,迭代器不仅仅是指针,因此你不能认为他们一定 ...

  4. Node.js学习笔记(一)基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  5. Node.js 基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  6. 1、git基础介绍及远程/本地仓库、分支

    1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...

  7. git基础介绍

    git基础介绍 这是git操作的基础篇,是以前的写的操作文档,就没有进行手打,直接把图片贴进来了,你们担待哈,有不正确的地方可以指正出来,我将在第一时间去修改,多谢哈! 一.文件状态:git系统的文件 ...

  8. OSPF基础介绍

    OSPF基础介绍 一.RIP的缺陷 1.以跳数评估的路由并非最优路径 2.最大跳数16导致网络尺度小 3.收敛速度慢 4.更新发送全部路由表浪费网络资源 二.OSPF基本原理 1.什么是OSPF a& ...

  9. iOS系统及客户端软件测试的基础介绍

    iOS系统及客户端软件测试的基础介绍 iOS现在的最新版本iOS5是10月12号推出,当前版本是4.3.5 先是硬件部分,采用iOS系统的是iPad,iPhone,iTouch这三种设备,其中iPho ...

随机推荐

  1. VScode离线安装插件

    VScode离线插件的转移 需求:换台电脑用VScode 找到插件安装路径 在本地找.vscode的文件夹,里面的extensions文件夹里都是下载的插件 复制发给其他电脑 在vscode首选项-- ...

  2. 计算机基础之Windows10操作系统安装U盘制作

    1.第一步,下载Windows10--ISO镜像(Windows7类似),下载站点: https://msdn.itellyou.cn/(百度搜索msdn即可),个人认为这是最干净的操作系统镜像站点, ...

  3. win8 -telnet安装

    控制面板->程序-> 启动或关闭windows功能->选择telnet服务器和telnet客户端->确定 为了安全起见,我们可以设置为手动器用telnet,右键计算机-> ...

  4. apache 改变文档根目录www的位置

    1.找到apache的安装目录,找到config/httpd.conf,找到DocumentRoot "D:/wamp/www/" 改成你想要的目录,例如:改成 DocumentR ...

  5. LNMP搭建03 -- 编译安装PHP

    [编译安装PHP]  为了顺利安装PHP,先安装下面这些: [CentOS 编译 PHP 前要做的事情] yum install -y gcc gcc-c++  make zlib zlib-deve ...

  6. Linux双网卡搭建NAT服务器之网络应用

    一:拓扑.网络结构介绍 Eth1 外网卡的IP 地址, GW和DNS 按照提供商提供配置.配置如下: IP:114.242.25.18 NETMASK:255.255.255.0 GW:114.242 ...

  7. Java经典编程题50道之十七

    猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,而且又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,就只 ...

  8. 单元测试——Qunit

    为什么需要单元测试 正确性:测试可以验证代码的正确性,在上线前做到心里有底 自动化:当然手工也可以测试,通过console可以打印出内部信息,但是这是一次性的事情,下次测试还需要从头来过,效率不能得到 ...

  9. Yii的HTML助手

    Html 帮助类 基础 表单 样式表和脚本 超链接 图片 列表 任何一个 web 应用程序会生成很多 HTMl 超文本标记.如果超文本标记是静态的, 那么将 PHP 和 HTML 混合在一个文件里 这 ...

  10. Egret学习笔记 (Egret打飞机-3.实现背景循环滚动)

    游戏背景里面的猪脚飞机看起来是一直在向前飞,但是实际上只是一个视觉差而已. 猪脚是出于不动的状态,背景从上到下滚动,然后让玩家觉得飞机在不停的往前飞.(当然这只是其中一种实现思路) 差不多就是这样,然 ...