1.Neo4j的简单介绍

  • 现实中很多数据都是用图来表达的,比如社交网络中人与人的关系、地图数据、或是基因信息等等。高度关联的数据中复杂而动态的联系。
  • Neo4j是图数据库中一个主要代表,其开源,且用Java实现。经过几年的发展,已经可以用于生产环境。其有两种运行方式,一种是服务的方式,对外提供REST接口;另外一种是嵌入式模式,数据以文件的形式存放在本地,可以直接对本地文件进行操作。
  • Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。

2.Neo4j的适用范围

  • 在一个图中包含两种基本的数据类型:Nodes(节点) 和 Relationships(关系)。Nodes 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。
    从这几个方面来说,Neo4j是一个合适的选择。
  • 自带一套易于学习的查询语言(名为Cypher
  • 不使用schema,因此可以满足你的任何形式的需求
  • 与关系型数据库相比,对于高度关联的数据(图形数据)的查询快速要快上许多
  • 它的实体与关系结构非常自然地切合人类的直观感受
  • 支持兼容ACID的事务操作
  • 提供了一个高可用性模型,以支持大规模数据量的查询,支持备份、数据局部性以及冗余
  • 提供了一个可视化的查询控制台,你不会对它感到厌倦的
  • 什么时候不应使用Neo4j?
    作为一个图形NoSQL数据库,Neo4j提供了大量的功能,但没有什么解决方案是完美的。在以下这些用例中,Neo4j就不是非常适合的选择:
  • 记录大量基于事件的数据(例如日志条目或传感器数据)
  • 对大规模分布式数据进行处理,类似于Hadoop
  • 二进制数据存储
  • 适合于保存在关系型数据库中的结构化数据

3.Neo4j的数据结构特点

3.1图数据库的基本概念
  • 一个属性图是由顶点(Vertex),边(Edge),标签(Lable),关系类型和属性(Property)组成的有向图。
  • 顶点也称作节点(Node),节点上有属性(键值对)
  • 每个实体都有一个唯一的ID;
  • 每个实体都有零个,一个或多个属性,一个实体的属性键是唯一的;
  • 每个节点都有零个,一个或多个标签,属于一个或多个分组;
  • 每个关系都只有一个类型,用于连接两个节点;
  • 边也称作关系(Relationship)
  • 在图形中,节点和关系是最重要的实体,所有的节点是独立存在的,为节点设置标签,那么拥有相同标签的节点属于一个分组,一个集合;
  • 关系通过关系类型来分组,类型相同的关系属于同一个集合。关系是有向的,关系的两端是起始节点和结束节点,通过有向的箭头来标识方向,节点之间的双向关系通过两个方向相反的关系来标识。节点可有零个,一个或多个标签,但是关系必须设置关系类型,并且只能设置一个关系类型。

如下图所示:5个实体,包括3个结点和两个关系;两个标签:Person和Movie;两个关系类型:ACTED_IN和DIRECTED;name,born,tile等都是属性。

4.参考

作者:悦光阴