本文共 1156 字,大约阅读时间需要 3 分钟。
图数据库可存放实体及实体间关系。实体也叫“节点”(node),它们具有属性(property)。可将节点视为应用程序中某对象的实例。关系又叫“边”(edge),它们也有属性。边具备方向性(directional significance),而节点则按关系组织起来,以便在其中查找所需模式。用图将数据一次性组织好,稍后便可根据“关系”以不同方式解读它。
什么是图数据库
查询图也称“遍历”(traverse)图。图数据库的一个好处就是,无需改变节点或边,即可应对新的遍历需求。
图数据库遍历“连接”及“关系”非常快。节点间的关系不在查询时计算,而是在创建时已经持久化了。遍历持久化之后的关系,要比每次查询时都计算关系更快。
节点间可有多种不同的关系类型,这样既能表现领域实体(domain entity)之间的关系,也可以表示辅助关系(secondary relationship)。由于节点关系的数量及类型不限,所以这些关系可存放在同一图数据库中。
图数据库的特性
关系在图数据库中非常重要,图数据库中的大多数值都源自关系。关系不只含有类型、起始节点和终止节点,而且还有自己的属性。使用这些属性,可以让关系更智能。例如,可以指定两人之间何时成为朋友,两节点间距多远,两节点共享何种内容等。这些关系上的属性可用于查询图。
- 一致性:图数据库通常不支持把节点分布在不同的服务器上。可以通过事务来保证一致性。不允许出现“悬挂关系”(dangling relationship):所有关系必须具备起始节点与终止节点,而且在删除节点前,必须先移除其上的关系。
- 事务:Neo4J是兼容ACID事务的数据库,在修改节点或向现有节点新增关系前,必须先启动事务。
- 可用性:Neo4J自1.8版本起,支持“副本从节点”(replicated salve),并借此获得较高的可用性。
- 查询:图数据库可以使用Gremlin等查询语言。Gremlin是一门可以遍历图的领域特定语言(demain-specific language),它可以遍历所有实现了Blueprints属性图(property graph)的图数据库。
- 可扩展性:因为图数据库不是面向聚合的(aggregate-oriented),而是面向关系的(relationship-oriented),所以对图数据库分片比较难。可以针对地理位置对数据进行分片。(参考:)
适用案例
- 互联数据。部署并使用图数据库来处理社交网络非常高效。
- 安排运输路线、分派货物和基于位置的服务。
- 推荐引擎。
不适用案例
图数据库不适用于更新全部或某子集内的实体。因为没有什么简单的操作可以一次性改变所有节点中的某个属性,“全局图操作”(globa graph operation)非常耗费资源。
转载地址:https://mortal.blog.csdn.net/article/details/83065696 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!