当前位置: 首页 > 科技观察

两大挑战!是什么阻止了图数据库的扩展?

时间:2023-03-15 21:17:05 科技观察

本文转载自公众号《核心阅读》(ID:AI_Discovery)。生活中很多地方都会用到数据库技术,比如欺诈检测、知识图谱、资产管理、推荐浏览器、物联网、权限管理等。图数据库是能够快速分析高度相关数据点的数据库技术之一以及它们之间的联系。然而,由于图数据本身的特殊性,在架构方面仍然面临诸多挑战。那么,图形数据库是否能够扩展?本文将全面分析可能阻碍图数据库扩展的两个挑战,并讨论当前可用的解决方案。什么是“图数据库可扩展性”?“缩放”并不仅仅指在一台计算机上存储更多数据或将数据随机存储在多台计算机上。对于大型或不断增长的数据集,良好的查询性能至关重要。所以,这里真正的问题是,当单台计算机上的数据集增长到影响其他功能的程度时,图数据库能否表现令人满意?如果你还不能理解为什么这是第一个问题,请和我一起快速回顾一下下面的图数据库。简单来说,图形数据库用于存储无模式对象(顶点或节点)以及对象的任意数据(属性)和关联数据(边)。边通常指出物体之间的接触点,顶点和边一起构成图网络数据集。离散数学将图定义为一组顶点和边;计算机科学将其定义为能够表示连接或关系的抽象数据类型。它不同于关系数据库系统中的表格数据结构,后者表达数据关系的能力非常有限。如上所述,图由通过关系(即边[E])连接的节点(也称为顶点[V])组成。顶点形成具有任意数量的边和任意深度(路径的长度)的路径。它还可以对跨行金融交易进行图形化建模,如下图所示。在这个例子中,我们可以将银行账户定义为节点,将银行交易和其他关系定义为边。账户和交易信息以这种方式存储,以遍历未知或不同深度的数据创建图表。在关系数据库中编写和运行此类查询函数通常是一项复杂的工作(使用多模型数据库可以对银行及其分支机构之间的关系进行建模)。图数据库提供了多种算法供用户查询存储的数据并分析它们之间的关系。包括遍历、模式匹配、最短路径或分布式图处理,例如分析社区检测、连通分量或中心性。大多数算法都有一个共同点,那就是解决超级节点和网络跳数问题的本质——算法通过边从一个节点遍历到另一个节点。快速回顾之后,挑战来了!上面提到的“名人效应”就是一个顶点或节点可以有任意多条边。超点的一个典型例子是网络名人——超节点是图形数据集中的一个节点,它有太多的传入或传出边。帕特里克·斯图尔特爵士的推特账户目前拥有超过340万粉丝。如果现在对账号和推文数据进行图形化建模,遍历数据,即PatrickStewart的账号信息,那么算法必须分析Steward账号的全部340万条边。这会延长查询执行时间,甚至可能违反授权权限。类似的问题存在于欺诈检测(具有大额交易的账户、网络管理-大型IP集线器)等情况下。超节点是图的固有问题,也是所有图数据库都面临的问题。以下两种方法可以将超级节点的影响降到最低。图片来源:unsplash方法一:拆分超级节点更准确地说,您可以复制节点“PatrickStewart”,并根据某些属性(例如粉丝的国家或其他特定分组)拆分数据边缘。这将查询分类时使用的超节点遍历数据的性能影响降至最低。方法二:中心节点索引以顶点为中心的索引同时存储边信息和节点信息。仍然以PatrickStewart的推特账号为例,可以这样分组:follower的开始日期/时间信息,follower的国家/地区,follower的关注人数等。以上所有属性都可以更有效地使用()提供选项。查询引擎可以使用索引来减少执行遍历功能所需的线性查找次数,欺诈检测也是如此。上面的金融交易是边缘,交易日期或交易金额等属性可以提高选择效率。在某些情况下,以上两种方法都不适用;遍历超级节点时,性能会有所下降。在大多数情况下,仍然有优化性能的方法,但大多数图数据库尚未解决的另一个问题。NetworkHopProblems如果需要遍历一个高度连接的数据集,查询需要的所有数据的内存都加载在同一台计算机上,查询单个主内存大约需要100ns。假设数据集对于单个实例来说已经足够远,或者运营商想要提高集群或包的可用性和处理能力。在图的情况下,分片意味着拆除以前建立的连接,因为图遍历所需的数据当前可能驻留在不同的机器上。这样会造成查询信息时的网络延迟。对于开发人员来说,网络可能不是问题,但查询性能才是。即使在同一机架中使用现代Gbit网络和服务器,网络查找的成本也比内存查找高5000倍左右。如果在连接集群服务器的网络上增加一点负载,后果将难以预料。在这种情况下,遍历可能从数据库服务器1开始,找到一个边指向存储在数据库服务器2上的顶点的节点,从而通过网络进行查找网络跳跃。考虑到更实际的情况,单次遍历查询实际上有多次跳转。在欺诈检测、IT网络管理,甚至现代企业身份识别和访问管理案例中,可能涉及分发图数据,同时还需要亚秒级性能来执行查询功能。查询执行期间产生的大量网络跳数可能导致查询失败,从而付出高昂的扩展代价。更智能的解决方案大多数时候,通过对数据的一些了解,您可以更智能地分片图(客户ID、区域等)。其他时候,分布式图形分析也可以用于计算,方法是使用社区检测算法(例如ArangoDB的Pregel套件)生成此领域知识。例如,欺诈检测需要分析金融交易以识别欺诈方案。过去,骗子曾利用某些国家/地区的银行洗钱。我们可以使用这个领域知识作为图数据集的分片键,并将在该区域执行的所有金融交易分布在DB服务器1上,并将其他交易分布在其他服务器上。现在,使用ArangoDB的SmartGraph功能,可以在本地阻止洗钱或查询其他图的请求,从而避免或至少大大减少查询过程中产生的网络跳数。这究竟是如何工作的?ArangoDB中的查询引擎能够记住遍历所需的数据存储位置,并向各个数据库服务器的查询引擎发送请求,然后在本地处理请求。之后,将各个数据库服务器上的结果差异合并到协调器并发送给客户端。对于层次图,不相交的智能图也可以用来优化查询。解决数据缩放问题的需求越来越大,图形技术对于回答此类复杂问题越来越重要。作者可以肯定的说,图数据库可以垂直伸缩,ArangoDB也可以水平伸缩。当然,在一些极其罕见的情况下,中心节点索引和SmartGraphs都无能为力。