1.图数据库Neo4j介绍
随着技术的发展,我们对数据的需求已经不再局限于对数据本身的获取了,我们还需要获取数据与数据间的关系(也就是连接数据)。
简单地说,我们可以说图数据库主要用于存储更多的连接数据(因为图结构相比其他数据结构而言,能保存更多的数据间的关系)。
如果我们使用 RDBMS 数据库来存储更多连接的数据,那么它们不能提供用于遍历大量数据的适当性能。 在这些情况下,Graph Database 提高了应用程序性能。
如今,大多数社交网络应用程序(如Facebook,Google +,LinkedIn,Twitter,Yammer 等)和视频托管应用程序(如 Google YouTube,Flickr,Yahoo Video等)都在使用更多连接的数据。
我们将观察什么是连接数据? 以及这些应用程序如何与某些实时应用程序存储数据。
2.Neo4j - 特点和优势
Neo4j的缺点或限制
2.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应用程序
Neo4j的优点
-
它很容易表示连接的数据
-
检索/遍历/导航更多的连接数据是非常容易和快速的
-
AS的Neo4j 2.1.3最新版本,它具有支持节点数,关系和属性的限制。
-
它不支持Sharding。
-
它非常容易地表示半结构化数据
-
Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
-
使用简单而强大的数据模型
-
它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引
使用 Google+(GooglePlus)应用程序来了解现实世界中 Graph 数据库的需求。 观察下面的图表。 在这里,我们用圆圈表示了 Google+应用个人资料。
在上图中,轮廓“A”具有圆圈以连接到其他轮廓:家庭圈(B ,C , D)和朋友圈(B ,C)。 再次,如果我们打开配置文件“B”,我们可以观察以下连接的数据。
像这样,这些应用程序包含大量的结构化,半结构化和非结构化的连接数据。 在 RDBMS 数据库中表示 这种非结构化连接数据并不容易。如果我们在 RDBMS 数据库中存储这种更多连接的数据,那么检索或 遍历是非常困难和缓慢的。所以要表示或存储这种更连接的数据,我们应该选择一个流行的图数据库。
图数据库非常容易地存储这种更多连接的数据。 它将每个配置文件数据作为节点存储在内部,它与相邻 节点连接的节点,它们通过关系相互连接。他们存储这种连接的数据与上面的图表中的相同,这样检索 或遍历是非常容易和更快的。
关系查询性能对比 在数据关系中心,图形数据库在查询速度方面非常高效,即使对于深度和复杂的查询 也是如此。在关系型数据库和图数据库(Neo4j)之间进行了实验:在一个社交网络里找到最大深度为5的 朋友的朋友,他们的数据集包括100万人,每人约有50个朋友