博客首页|TW首页| 同事录|业界社区

图形数据库市场是一个快速增长的企业级市场。2019年12月,亚马逊CTO沃纳·威格尔(Werner Vogels)发表了博客文章,专门介绍和阐述了对于图形数据库的观点。图形数据库是一种特殊的数据库,是用图形理论存储实体之间的关系信息,例如社交网络中人与人的关系,属于非关系型数据库。图形数据库能够表达数据与数据之间的关系,从而形成相应的洞察与知识,图形数据库是知识图谱的基础技术。近几年来,图形数据库增长迅速,在越来越多的场合得到关注和应用,例如人机对话需要跨复杂数据集完成复杂询问,而这对传统SQL查询来说既不实际也无法扩展。目前,图形数据库仍然是一个较小的市场,但Gartner预计2019~2022年图形数据库市场将会以每年100%的增长率增长,2018年图形数据库市场约为5亿美元,到2022年保守估计至少80亿美元。沃纳·威格尔认为,运用数据中关系的应用程序将是战略性的。

以下为沃纳·威格尔博客“The Power of Relationships in Data”的翻译:

你是否曾接到过银行的电话,因为他们怀疑你有欺诈行为?大多数银行可以自动识别何时支出模式或地点偏离了正常水平,然后立即采取行动。很多时候,这种情况发生在受害者意识到事情不对劲之前。因此,像身份盗窃这样对个人银行账户和生活的影响,甚至可以在它成为问题之前就得到控制。

这表明,对数据中的关系有深刻的理解非常重要。

试着想想疾病与基因相互作用之间的关系。通过了解这些联系,你可以在蛋白质通路中寻找模式,从而找到可能与疾病相关的其它基因,这种信息可以帮助推进疾病研究。

对关系的理解越深,洞察力就会越强。有了足够的关系数据点,你甚至可以对未来进行预测(例如使用推荐引擎)。但是,随着更多数据的连接以及连接数据的大小和复杂性的增加,关系的存储和查询也会变得更加复杂。

在2019年8月份,我写了关于现代应用程序开发以及将一刀切的单体数据库拆分成专用数据库的价值的文章。专用数据库支持各种数据模型,并允许客户构建用例驱动的、高度可扩展的分布式应用程序。在数据中的关系导航就是一个很好的例子,说明了为工作提供合适的工具很重要。此外,图形数据库也是处理高度连接数据的合适工具。

图形数据模型

在图形数据模型中,关系是数据模型的核心部分,这意味着您可以直接创建关系,而不必使用外键或联接表。数据被建模为节点(顶点)和链接(边)。换句话说,重点不是数据本身,而是数据之间的关系。图形是构建处理关系的应用程序的自然选择,因为您可以更轻松地表示和遍历数据之间的关系。

节点通常是一个人、一个地方或事物,而链接就是它们之间的连接方式。例如,在下图中,Bob是一个节点,蒙娜丽莎是一个节点,而卢浮宫是一个节点。它们通过许多不同的关系相连。例如,Bob对蒙娜丽莎感兴趣,蒙娜丽莎位于卢浮宫,卢浮宫是博物馆。该示例图是知识图,它可以用来帮助对蒙娜丽莎感兴趣的人在卢浮宫中发现达芬奇的其它艺术品。

处理关系的应用程序。当您必须在数据之间创建关系并快速查询这些关系时,图形是一个不错的选择。知识图谱是一个好用例的用例。这里还有一些:

社交网络。社交网络应用中具有大量的用户配置文件和要跟踪的交互。例如,您可能正在向应用程序中构建社交订阅源。使用图形提供的结果会优先显示用户来自其家人,他们“喜欢”的朋友的最新消息以及附近朋友的最新消息。

推荐引擎。推荐引擎存储信息之间的关系,例如客户兴趣、朋友和购买历史。通过使用图谱,您可以快速查询,以提出个性化且与您用户相关的建议。

欺诈识别。如果要构建零售欺诈检测应用程序,则可以使用图形来构建查询以轻松检测关系模式。例如,多个与个人电子邮件地址关联的人,或者多个共享同一IP地址但居住在不同物理地址的人。

存储图谱的挑战

图形可以用许多不同的方式存储:关系数据库、键值存储或图形数据库。许多人开始使用带有小规模原型的图形。这通常在起步阶段会表现很好,但是图形的存储会随着数据规模的增加而变得具有挑战性。基于图形的工作负载往往具有高度的随机访问权限。随着您遍历关系(图形扇出),访问的节点数量显着增加,并且回答图形查询所需的数据通常不缓存在内存中(非局部性)。甚至看似简单的图形查询也可能需要访问和扫描大量数据。这意味着缩放和操作图形数据库通常需要大量的手动性能调整和优化。

使用关系数据库或图的键值存储的人必须使用SQL联合查询(或等效联接)来查询关系。因为联合查询的执行速度很慢,所以通常必须对数据模型进行非规范化(换句话说,以牺牲写入性能为代价来提高读取性能)。但是,对于非规范化的数据模型,添加的每个新关系都需要更改数据模型并降低开发速度。

图形数据库专门用于存储图形,允许直接链接节点中的数据并直接查询关系。这使创建新的关系变得容易,而又不会对数据进行非规范化,并且使开发人员更容易为必须查询高度连接的数据的应用程序更新其数据模型,这极大地提高了数据关系导航的查询性能。

专用图形数据库

去年(注:2018年),AWS推出了Amazon Neptune,这是一个快速、可靠、专用的图形数据库,该数据库经过优化,可处理在高度连接的数据中发现关系。Neptune是一项完全托管的图形服务,通过在三个可用区复制六个数据副本来提供高可用性,它最多支持15个低延迟的只读副本,以毫秒级延迟查询图形,并自动扩展存储量以存储数十亿个关系。

自Neptune发布以来,我们一直在不断创新。在AWS re:Invent 2019上,我们宣布了Amazon Neptune Workbench。现在,您可以创建一个Jupyter Notebook,这是一个开源Web应用程序,它允许您从AWS管理控制台创建和共享包含实时代码、方程式、可视化效果和叙述文本的文档。创建Notebook后,即可使用Gremlin或SPARQL协议和RDF查询语言(SPARQL)查询图形数据库。Neptune最近增加了对Streams和Search的支持,将图形与其它应用程序构建块更轻松地连接起来。Neptune Streams提供了一种简便的方法来捕获图形中的更改并与其它专用数据库集成。当文本搜索适合该工作,Neptune现在允许将外部文本索引用于Gremlin或SPARQL图形查询。

看着我们的客户使用Neptune时,它令人着迷。我们希望他们使用Neptune构建社交、欺诈检测和推荐类型的解决方案,而像Nike、Activision和NBC Universal这样的客户现在已经在Neptune上使用了这些应用程序。

但是,当您为开发人员提供针对特定工作的高性能和专业工具时,就会发生一件有趣的事情——他们开始寻找新的令人兴奋的东西来构建。从知识图谱到身份解析,客户表明他们可以使用图来构建有趣的新应用程序。汤森路透使用图表来了解复杂的监管模型,Netflix通过使用基于图形的系统来构建和扩展数据谱系,提高了数据基础架构的可靠性,Zeta Global还建立了一个客户智能平台使用基于图形的身份解析来关联多个设备和用户。

长远来看:两种模型支持

我们知道,图形是建立数据模型关系的有效方法,而分析关系的价值并不新潮。实际上,网状数据库早于关系数据库。图形数据库的早期主要是在学术或公共部门中应用,这些应用是面向研究或高度专业化的(例如语义数据管理或复杂的电信分析)。但是,这些解决方案并不广泛,并且图形数据库尚未成为开发人员的主流数据库选项。

因此,我们希望Neptune将成为一些客户的重要服务。从长远的角度来看,运用数据中关系的应用程序将是战略性的,随着时间的推移,客户将会采用它,因为他们有更多的数据和更多的关联数据。

作为此长远观点的一个例子,在实现图形化时有两个主要模型——属性图(Property Graphs,PG)和W3C 资源描述框架(Resource Description Framework,RDF)。这两种图形都由节点(有时称为“顶点”)和有向边(有时称为“链接”)组成,并且这两种图形均允许将属性(特征/值对attribute/value pairs)与节点关联。属性图允许“边”使用这些属性,而RDF图则将节点属性视为只是更多的“边”(尽管在RDF中有几种表达“边”属性的技术)。由于存在这种差异,各个图中的数据模型最终看起来会略有不同。

存在这些差异的理由很充分。属性图类似于孤立的应用程序或用例中的常规数据结构,而RDF图最初是为支持跨独立开发的应用程序的互操作性和互交换而开发的。RDF图可以表示为“三元组”(边起点、标签和终点,通常称为“主题”、“谓词”和“对象”),RDF图数据库也称为“三元组存储”。

如今,可以通过流行的开源和供应商支持的实现来获得属性图支持,但是不存在用于架构定义、查询语言或数据交换格式的开放标准。另一方面,RDF是W3C基于其它现有Web标准的一套标准化规范的一部分。这些标准统称为语义网络(Semantic Web)或链接数据(Linked Data)。这些规范包括模式语言(RDFS和OWL)、声明性查询语言(SPARQL)、序列化格式以及许多支持的规范(例如,如何将关系数据库映射到RDF图)。W3C规范还描述了一个标准化的推理框架(例如,如何从以图形形式表示的数据中得出结论)。

我们发现,开发人员最终只想制作图形,而他们需要两个模型。我们看到客户从一个独立的应用程序作为一个属性图的开始,然后发现他们必须与其它系统进行互操作。我们看到有些客户为了与RDF进行互操作性和交换而构建,但是必须在属性图中一致的数据上构建独立的、用于特定业务的应用程序。我们明确地选择了Neptune来支持属性图和RDF,这样开发者和客户就可以选择最适合的技术。

组装“积木”

AWS的客户使用Neptune的创新方式是一个很好的例子,说明了开发人员拥有适合工作的工具时会发生什么。AWS拥有云服务供应商中最多的具有针对性的数据库,这是为了让客户拥有更多选择和自由。除了图形之外,您可能还拥有其它数据集,它们在不同的数据库类型(例如关系、时间序列或内存中)中表现更好。这就是现代应用程序开发。

例如,Neptune是工具包的一部分,我们使用它来为数千万客户不断扩展Alexa的知识图。Alexa还使用其它数据库,例如Amazon DynamoDB用于键值和文档数据,Amazon Aurora用于关系数据。不同类型的数据面临着不同类型的挑战,为每个独特的用例选择合适的数据库可提高速度和灵活性。

对于高度连接的数据,图形数据库可轻松理解数据中的关系以获得新的洞察。使用图形数据模型,开发人员可以快速构建必须查询高度连接的数据的应用程序。此外,专用图形数据库极大地提高了关系导航的查询性能。因为开发人员最终只想做图形,所以您可以选择为属性图执行快速的Apache TinkerPop Gremlin遍历,或者在RDF图上调优SPARQL查询。此外,您还可以访问AWS提供的参考体系结构、代码示例和示例。


上一篇: 为什么LinuxONE是核心上云之首选?一文读懂混合云的新选择
下一篇:数字化转型2020,如何加速传统IT到企业云的过渡?

评论

Good.Be the first to comment on this entry.

发表评论