1. Neo4j有如下特点:
    ·完整的ACID支持
    ·高可用性
    ·轻易扩展到上亿级别的节点和关系
    ·通过遍历工具高速检索数据
    图数据库用于存储关系复杂的数据是它最大的优势。通过Neo4j提供的遍历工具,可以非常高效的进行数据检索,每秒可以达到上亿级的检索量。
  2. 基本概念
    ① 什么是图数据库
    图数据库通过在一张图上存储节点和关系来持久化数据结构。
    ② 节点
    构成一张图的基本元素是节点和关系。在Neo4j中,节点和关系都可以包含属性。节点经常被用于表示一些实体,依赖关系也一样可以表示实体。
    ③ 关系
    节点之间的关系是图数据库很重要的一部分。通过关系可以找到很多关联的数据,比如节点集合,关系集合以及他们的属性集合。

    关系在任一方向都会被遍历访问。这意味着不需要在不同方向都新增关系。而关系总会有一个方向,所以当这个方向对你的应用没有意义时可以忽略方向。特别注意一个节点可以有一个关系是指向自己的
    为了将来增强遍历图中所有的关系,需要为关系设置类型。

④ 属性
节点和关系都可以设置自己的属性。
属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。比如+String+,+int+和i+int[]+都是合法的。

neo4j 建索引 neo4j索引原理_图数据库


注意:null不是一个合法的属性值。 Nulls能代替模仿一个不存在的Key。

⑤ 路径
路径由至少一个节点,通过各种关系连接组成,经常是作为一个查询或者遍历的结果。

⑥ 节点标签
Neo4j引进了(内置)节点标签的概念,帮助我们分组相似的节点。节点标签与先前讨论过的关系类型非常相似。
每一个节点可以有一个或多个文字描述,它称为节点标签。具有同样标签的节点用一种专用的方式存储,因此它们能分为一组并可以一起使用。Neo4j支持通过标签加载所有的节点和通过标签及属性查找标签。模式索引 也是通过标签定义的。
标签是Neo4j的一个很好的补充,不仅仅是一个分类的策略。因为节点可以有多个标签,所以可以创建标签把经常一起使用的节点分组(即使不同的类型也可以),从而不必使用属性。例如,RED_THINGS(所有红色的节点)、FLYING(所有代表能飞的节点)等。

⑦ 遍历Traversal
遍历一张图就是按照一定的规则,跟随他们的关系,访问关联的的节点集合。

  1. 图形数据遍历
    关系数据库和Neo4j图形数据库的重要区别是数据查询。图形遍历是图形数据库中在由关系连接的节点之间移动访问一组节点的操作。关系的方向并不影响遍历,可以沿着箭头的方向往上或者往下,其效率是相同的。
    类似于MySQL的设置,不需要对Neo4j的例子进行额外的性能优化。Neo4j是在嵌入式并以默认配置在2048MB的Java虚拟机(JVM)堆内存下运行的。
    Neo4j跟踪记录访问过的节点,于是可以跳过之前访问过的节点,因此查询性能显著提高。图形的局部性使得遍历的速度非常快。
  2. NoSQL分类概要
  3. 事务性ACID
    关系数据库中关于事务的一切都适用于Neo4j。事务支持是Neo4j与其他NoSQL数据库之间的主要区别,NoSQL数据库不支持所有的ACID属性。
  4. 内存使用注意
    Java Iterator接口,是一个围绕java.util.Iterator的瘦包装类。在 对结果迭代之前实际上还没有访问结果中包含的元素。这一实现是在第一次 访问时延迟加载的,一旦使用,就不能再次使用——变为无效。
  5. 创建索引项
    当做索引的时候,最常用的是显式创建索引,然后就像创建节点一样添加索引项。每一个索引项通常标识一个节点或关系属性值。索引项包含对正在索引的属性具有特定值的一个或多个节点的引用。
    在Neo4j中,IndexManager(索引管理器)使用一个简单的字符串作为索引键提供访问索引
    更新索引=删除索引+添加索引
  6. Neo4j有两种自动维护索引的方法——模式索引和自动索引
    ① 模式索引
    从概念上讲,这与传统的关系数据库使用的索引处理方法很相似。模式索引与节点标签的概念紧密相关,每一个模式索引专门对应着一个标签和一组属性。你要做的就是定义索引,因此,Neo4j会负责维护它们。这意味着当创建一个具有标签和属性的节点并匹配一个或多个索引时,所有的索引都会以那个值进行更新。当删除一个节点时,那个节点的所有与相关索引有关的索引项都会被自动删除,当更新节点关系时也是如此。
    ② 自动索引
    在单机运行模式下打开自动索引,需要以额外的属性修改配置文件。配置文件在$NEO4J_SERVER/conf/neo4j.properties文件夹中,需要添加以下两行:

    指定要索引什么,需要另外两行:

neo4j 建索引 neo4j索引原理_neo4j 建索引_02


在嵌入式模式下打开自动索引,当创建图形数据库实例时,需要传递额外的值。以下的值需要作为一部分包含在java.util.Map的含有配置的参数中:

neo4j 建索引 neo4j索引原理_neo4j 建索引_03


自动使用设置映射(config map)需要另外的两个属性,里面包含需要索引的一列主键名字:

neo4j 建索引 neo4j索引原理_neo4j_04

  1. 安装Neo4j单机版
    ① 安装JDK,下载Neo4j并解压
    ② 修改配置文件
–conf/neo4j-server.properties
–conf/neo4j.properties

要改变核心数据库文件的位置(默认是在data/graph.db目中),更新neo4j-server.properties文件org.neo4j.server.database.location属性。
③ 启动: bin/neo4j start
④ 通过访问http://localhost:7474并检查Neo4j浏览器的窗口验证数据库
⑤ Neo4j服务器具有一个集成整洁的浏览器。在一个运行的服务器实例上访问http://localhost:7474/browser
⑥ Neo4j网页管理控制台,可以从http://localhost:7474/webadmin获得
⑦ 关闭服务器: bin/neo4j stop