1、背景
随着技术的发展,我们对数据的需求已经不再局限于对数据本身的获取了,我们还需要获取数据与数据间的关系(也就是连接数据)。
简单地说,我们可以说图数据库主要用于存储更多的连接数据(因为图结构相比其他数据结构而言,能保存更多的数据间的关系)。
如果我们使用 RDBMS 数据库来存储更多连接的数据,那么它们不能提供用于遍历大量数据的适当性能。 在这些情况下,Graph Database 提高了应用程序性能。
如今,大多数社交网络应用程序(如Facebook,Google +,LinkedIn,Twitter,Yammer 等)和视频托管应用程序(如 Google YouTube,Flickr,Yahoo Video等)都在使用更多连接的数据。
我们将观察什么是连接数据? 以及这些应用程序如何与某些实时应用程序存储数据。
2、Neo4j
Neo4j是世界领先的图形数据库。该体系结构旨在优化节点和关系的管理、存储和遍历。图数据库采用属性图方法,这对遍历性能和操作运行时都有好处。
3、Cypher
Cypher是Neo4j的图形查询语言,它允许用户从图形数据库中存储和检索数据。它是一种声明性的、受sql启发的语言,用于使用ASCII-art语法描述图形中的可视化模式。语法提供了一种可视化和逻辑的方式来匹配图中的节点和关系模式。Cypher被设计成易于学习、理解和每个人使用,但也合并了其他标准数据访问语言的功能和功能。
4、Neo4j的特点
- SQL就像简单的查询语言Neo4j CQL
- 它遵循属性图数据模型
- 它通过使用Apache Lucence支持索引
- 它支持UNIQUE约束
- 它包含一个用于执行CQL命令的UI:Neo4j数据浏览器
- 它支持完整的ACID(原子性,一致性,隔离性和持久性)规则
- 它采用原生图形库与本地GPE(图形处理引擎)
- 它支持查询的数据导出到JSON和XLS格式
- 它提供了REST API,可以被任何编程语言(如Java,Spring,Scala等)访问
- 它提供了可以通过任何UI MVC框架(如Node JS)访问的Java脚本
- 它支持两种Java API:Cypher API和Native Java API来开发Java应用程序
5、Neo4j的优点
- 它很容易表示连接的数据
- 检索/遍历/导航更多的连接数据是非常容易和快速的
- 它非常容易地表示半结构化数据
- Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
- 使用简单而强大的数据模型
它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引
6、Neo4j的缺点或限制
AS的Neo4j 2.1.3最新版本,它具有支持节点数,关系和属性的限制。
- 它不支持Sharding。