图形对数据库的处理,图形数据库软件
在当今的经济环境中图形对数据库的处理,越来越多的公司主要以在线形式存在。 尽管围绕遗留传统实体业务的后果进行图形对数据库的处理了很多讨论,但受到较少关注的一个方面是这些公司现在管理数据的方式发生了重大变化。 越来越多的企业试图以月报表和KPI图表无法解决的方式来了解他们的客户以及如何最好地满足他们的需求。 当最初设计了当今使用的许多数据库系统时,围绕提供引人入胜的在线购物体验的许多现代想法(例如"经常一起购买"建议和"购买此商品的人也对此感兴趣")根本就不存在。 。 这意味着在这些情况下尝试使用它们有时会感觉有点像在圆孔中安装方钉。
举一个简单的例子,例如在线宠物用品商店。 他们可以沿着建立由关系数据库支持的常规站点的道路,接收订单并尽最大努力快速发货。 有时,他们甚至可能通过电子邮件与客户互动,每月发送一次特价商品,以期增加他们的营业额。 但是这种 *** 在拥挤的市场中不太可能表现得特别好,因为它没有提供任何个性化的内容。 该公司并没有真正了解客户如何在各个级别上与他们的网站进行交互,因为他们选择的数据库以及它所支持的网站不是为处理和解释此类数据而构建的。 为了正确理解此类数据,需要一种 *** 来强调实体之间如何真正地交互,并捕获每次交互的完整上下文。 简而言之,它需要一个图形数据库。
图数据库
图形数据库代表了一种创新的,功能强大的 *** ,可以更接近我们人类对数据的看法来解决关联数据的问题。 这项技术是相对较新的技术,但不应被视为边缘技术。 DATAVERSITY最近的一项调查显示,近25%的公司打算在未来两年内使用图形数据库。 它们被称为2020年代的"首选"数据库,但是为什么呢? 在本文中,我们将研究图形数据库的工作方式,与众不同之处以及它们可以为您的应用带来的好处。
什么是图形数据库?
图形数据库代表了一种更为灵活直观的数据存储 *** 。 虽然大多数数据库引擎仅支持可以表示为一系列通过逻辑连接捆绑在一起的表的数据(例如,通过外键约束),但是图形数据库采用的是基于两个简单但功能非常强大的概念(节点和关系)的 *** 。 节点表示域中的事物或对象(通常是名词),而关系则表示它们之间的相互作用和相互关系(通常是动词)。 假设我们的在线宠物店希望更好地了解他们的客户,并开始记录每种宠物的种类。 他们是如何开始使用图表的:
开始时只需要两个节点,即Person和Dog,以及它们之间的关系OWNS。 图形数据库中的关系由箭头指示,方向是人拥有狗,而不是相反。 建立了这个基本事实后,我们可以开始添加更多上下文:
现在,我们的"人"和"狗"节点分别具有名称和年龄属性,并且该关系记录了Sue拥有Barney多久了。 注意我们如何将属性以相同的方式附加到节点和关系。 之所以可能这样做是因为,与关系数据库不同,图将关系视为头等公民-它们在数据库中的作用与其连接的节点同样重要,有时甚至更重要。
关于图的重要部分,甚至是像这样的简单示例,都不仅在于数据的存储方式,而且还可能是您在设计数据模型时首先要绘制的草图。 图形从本质上讲是白板友好型的图形,当与非技术团队合作时,或者当您需要从头开始并添加上下文时,它们是一个不错的选择。
如果苏也决定要养猫怎么办? 这仅需要添加另一个节点,并使用新的OWNS关系将其连接到Sue。 现在,Sue拥有一只猫和一条狗,可以通过相同的方式分别对其进行访问:
我们可能还希望一起取回Sue的宠物,以了解每个客户平均有多少只宠物。 可以根据需要为节点提供尽可能多的标签,因此,尽管我们可以将它们分别标记为"狗"和"猫"以将它们分开,但也可以将它们都标记为"宠物"以将它们分组在一起:
将图数据库与关系数据库进行比较这个不断添加更多数据同时又保持清晰逻辑的过程表明,发展图形数据库以满足您的需求变化是多么容易。 将其与如何在关系数据库中对上述场景进行建模的方式进行对比,该关系数据库可以以相同的方式处理多个所有者,宠物及其关系:
实际上,您至少需要三个表,每个表都带有外键才能将它们连接在一起。 要检索任何有意义的事实,您必须一次从所有这些事实中加载数据,并每次都指定连接逻辑。 所有这些都只是为了达到我们的图形只能使用三个节点和两个关系才能实现的相同上下文。 两者之间的区别非常明显,并且随着数据模型的大小和复杂性的增加而变得更加明显。
使用图数据库与关系数据库的经验的其他方式包括:
1.更多描述性查询-跨平台的实现各不相同,但是大多数图形数据库都配备了高度描述性,命令式查询语言,可让您解释所需的内容,而不是所需的内容。 Cy4是Neo4j中使用的查询语言,可以使用以下简单 *** 检索Sue和上面绘制的宠物的数据:
匹配(s:Person {name:" Sue"})-[r:OWNS]->(p:Pet)
这个简单易懂的查询使Person的所有属性,每个Pet的属性以及绑定它们的关系都可用。 如果我们以后再向其中任何一个添加更多属性,这些属性也会自动返回。 尝试过ASCII艺术的任何人都将欣赏语法固有的通信清晰度(节点用普通括号括起来,关系用方括号括起来)。 将此与关系查询进行对比,它需要类似以下内容:
从人中选择人。,宠物。在People.id = PeoplePets.id上加入PeoplePets在PeoplePets.pet_id = Pets.pet_id上加入宠物在哪里People.id = 123;
关系的性质必须在您每次想遍历的时候都阐明。 如果这些列的名称或数据类型由于任何原因发生变化,则还需要更新联接语法。 在图数据库中避免了这种问题,因为关系仅连接两个节点,而无需联接语义。
2.适应模型的灵活性更高-现实世界中的数据模型不会长期保持静态。 企业可以更改目标或希望测试新的想法,而无需进行长时间的数据库重建。 使用图形数据库,可以轻松地向节点添加标签,为关系添加属性,或重构图形的大部分区域。 没有关系数据库或表中需要考虑的外键约束,以便在数据丢失时进行清理。 您将花费更多的时间专注于数据本身,而不是专注于数据基础架构。
3.遍历数据关系时的更高性能-本机图形数据库经过优化,以与数据表示的概念相匹配的方式存储数据。 这意味着Sue和她的两个Pets,尽管本来可以创建多年的完全独立的节点,却将被写入到文件中,并且彼此之间的距离尽可能近。 与关系数据库相比,这可以更快地检索相关数据,后者通常会根据创建数据的时间将表数据分段到磁盘的不同区域。
哪种数据在图形数据库中效果最好?在处理包含具有重要关联上下文的关系的数据时,图形数据库最有用。 一个在线商店了解并与他们的客户群互动是一个很好的例子,但是图不仅可以做到这一点。 其他应用程序包括:
· 知识图– NASA等组织使用图数据库来记录其实验与项目之间的逻辑联系,这意味着未来的工作可以利用已经完成的工作来提高效率并避免重复错误。
· 推荐引擎—在线商务的组成部分,推荐引擎通过将用户的行为与进行过类似购买的其他用户的行为进行比较,为用户提供更可能感兴趣的建议产品和服务。
· 供应链管理-现代生产流程通常依赖于来自不同位置的材料和组件,因此了解分布式流程中的依赖性至关重要。 图形数据库可以提供识别单个故障点的 *** ,提供正确实施正确的保护和保障措施的途径,以确保设计更具弹性。
尝试图数据库的简便 ***当然,学习新技术的最好 *** 就是尝试一下。 对于图形数据库,Neo4j是用于实验的出色图形数据库。 它是市场的领导者,其用户基础广泛,从数据科学爱好者到跨国公司。 该平台周围有一个已建立的社区,并提供了大量文档。
要快速试用Neo4j,请考虑使用供应商托管的解决方案,该解决方案可让您在数分钟内开始使用,而无需设置和配置自己的服务器。 例如,亚马逊提供了Neo4j的轻松部署。 另外,PaaS解决方案Heroku拥有GrapheneDB(Heroku的Neo4j产品)服务,该服务可以免费,以多个版本进行部署,还可以使用模板应用程序和演示应用程序来加快学习速度。 大多数由供应商托管的解决方案都应提供类似的功能。
结论为您的应用程序选择正确的数据库是确保其在发行时和将来都成功的重要一步。 如果您正在寻找一个项目,其中数据的交互是该领域的关键方面,请考虑使用图形数据库在实现和性能方面都具有优势。
(本文翻译自Terry Franklin的文章《An Introduction to Graph Databases: The Power of Connected Data》,参考:https://medium.com/@terryfranklin82/an-introduction-to-graph-databases-the-power-of-connected-data-739d9e02f1ed)