NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

图数据库是可扩展的吗?

  • 2020-08-19
  • 本文字数:3097 字

    阅读完需:约 10 分钟

图数据库是可扩展的吗?

图数据库是现在许多现代用例的绝佳解决方案:欺诈检测、知识图、资产管理、推荐引擎、物联网、权限管理……凡你想得起的,都有图数据库的“身影”。


所有这些项目都得益于能够快速分析高度连接的数据点及其关系的数据库技术——而快速图数据库就是为这些任务而设计的。


但是,当涉及到“流行行话警报”可扩展性方面时,图数据库的性质带来了挑战。那么,为什么会出现这种情况?图数据库是否具有扩展的能力?让我们来看看这些问题。


接下来,我们将定义“扩展”的含义,深入研究可能阻碍图数据库扩展的两个挑战,并讨论当前可用的解决方案。

什么是“图数据库的可扩展性”

让我们快速定义一下这里所说的可扩展的含义,因为可扩展并不是“仅仅”将更多的数据放在一台机器上或者将其放在不同的机器上。在处理大型或不断增长的数据集时,你所需要的也是一个可以接受的查询性能。


因此,这里真正的问题是:当数据集在一台机器上增长甚至超过其能力时,图数据库是否还能够提供可接受的性能


你可能会问,为什么这是一个首先要问的问题呢?如果是这样,请阅读下面关于图数据库的快速回顾。如果你已经知道超节点和网络跃点等问题,请跳过快速回顾。

关于图数据库的快速回顾

简而言之,图数据库存储无模式的对象(顶点或节点),其中可以存储任意数据(属性)和对象之间的关系(边)。边通常有从一个对象指向另一个对象的方向。顶点和边形成一个数据点网络,称为“图”。


在离散数学中,图被定义为顶点和边的集合。在计算机领域中,它被认为是一种抽象的数据类型,擅长于表示连接或关系,不像关系数据库系统的表格数据结构,具有讽刺意味的是,它在表示关系方面非常有限。


如上所述,图由节点(即顶点(V))通过关系(即边(E))连接而成。



顶点可以有任意数量的边,并形成任意深度(即路径长度)的路径。



从一个银行账户到另一个银行账户的金融交易用例也可以建模为一个图,看起来类似于下面的模式。在这里,你可以将银行账户定义为节点,将其他关系中的银行交易定义为边。



以这种方式存储账户和交易将使我们能够遍历所创建的未知或不同深度的图。要是在关系数据库中编写和运行这样的查询,往往是一项复杂的工作。(旁注:若使用多模型数据库,我们还可以使用连接查询将银行与其分支机构之间的关系建模为一个简单的关系,使用连接进行查询。)


图数据库提供各种算法来查询存储数据、分析关系。算法可以包括遍历、模式匹配、最短路径或分布式图处理(如社区检测、连接组件或中心性)。


大多数算法都有一个共同点,那就是超节点和网络跃点问题的本质。算法通过边从一个节点遍历到另一个节点。


在快速回顾之后,让我们深入讨论这些挑战。首先是名人。

以名人为例

如上所述,顶点或节点可以具有任意数量的边。超节点问题的一个典型例子就是社交网络中的名人。超节点是图数据集中具有异常多的传入或传出边的节点。


例如,Partick Stewart 爵士的 Twitter 账户,目前粉丝就超过 340 万。


如果我们现在将账户和推文建模为一个图,并遍历数据集,我们可能必须遍历 Partrick Stewart 的账户,遍历算法将不得不分析所有指向 Stewart 账户的 340 万条边。这将大大增加查询执行时间,甚至可能超过可接受的限制。类似的问题也可以在欺诈检测(有许多交易的账户)、网络管理(大型 IP 集线器)和其他案例中发现。


超节点是图的固有问题,对所有的图数据库都提出了挑战。但是有两种方法可以将超节点的影响降至最低。

选项 1:拆分超级节点

更准确地说,我们可以复制节点“Patricia Stewart”,并通过某个属性(如粉丝来自的国家或其他形式的分组)来分割大量的边。因此,我们尽量减少超节点对遍历性能的影响,以便在我们想要执行的查询中使用这些分组。

选项 2:以顶点为中心的索引

  • 有关某人何时开始关注的日期/时间信息

  • 粉丝来自哪个国家

  • 粉丝的粉丝计数

  • 等等


所有这些属性都可以提供有效使用以顶点为中心的索引所需的选择性。


然后,查询引擎可以使用索引来减少执行遍历所需的线性查找次数。同样的方法也可以使用,例如欺诈检测。在这里,金融交易作为边,我们可以使用交易日期或金额来实现高选择性。


在某些情况下,使用上述选项是不合适的,在遍历超节点时必须忍受一定程度的性能下降。但是,在大多数情况下,仍有一些选项可以优化性能。但是还有另一个挑战,就是大多数图数据库还没有解决这一问题。

网络跃点问题:如果对其拆分,就得付出代价

首先快速回顾一下。我们有一个高度连接的数据集,需要遍历它。在单个实例上,查询所需的所有数据都驻留在加载到主内存中的同一台机器上。一次主内存查找大约需要 100 纳秒。


现在,让我们假设我们的数据集超出了单个实例的能力,或者我们想要集群的高可用性,或额外的处理能力……或者,像往常一样,所有的一切。


在图的情况下,分片意味着拆分以前连接的内容,而我们的图遍历所需的数据现在可能驻留在不同的机器上。这就给我们的查询带来了网络延迟。我这知道网络可能不是开发人员的问题,但查询性能确实是开发人员的问题。


即使在位于同一机架上的现代 Gbit 网络和服务器上,通过网络进行查找也比通过内存查找要贵上 5000 倍左右。在连接集群服务器的网络上增加一点负载,甚至可能会获得不可预测的性能。



在这种情况下,遍历可能数据库服务器 1 开始,然后到达这样的一个节点,这个节点的边指向存储在数据库服务器 2 上的顶点,从而导致通过网络进行查找——网络跃点。


如果我们知道要考虑更多现实世界的用例,那么在单个遍历查询期间可能会有多个跃点。



在欺诈检测、IT 网络管理,甚至现代企业身份和访问管理用例中,可能需要分发图数据,同时仍然必须以亚秒级的性能执行查询。查询执行期间的多个网络跃点可能会危及这一需求,从而为扩展付出高昂的代价。

更明智的解决问题方法

在大多数情况下,你已经掌握了一些关于数据的知识,我们可以用这些知识以一种聪慧的方式(客户 ID、区域等)对图进行分片。在其他情况下,我们可以使用分布式图分析,通过使用社区检测算法,例如 ArangoDB 的 Pregel Suite,为你计算这个领域的知识。


现在,我们可以进行一次快速的思维实验。假设我们有一个欺诈检测用例,需要分析金融交易来识别欺诈模式。我们从过去了解到,诈骗分子大部分时间都会利用某些国家或地区的银行来洗钱(你可以在 OASIS 上试一下真正的欺诈检测查询,只需在注册后按照入门指南进行即可)。


我们可以使用这些领域知识作为我们图数据集的分片键,在数据库服务器 1 上分配这个区域执行的所有金融交易,并在其他服务器上分配其他交易。



现在,你可以利用 ArangoDB 的 SmartGraph 特性在本地执行反洗钱或其他图查询,从而避免或者至少极大地减少查询执行期间所需的网络跃点。“不错啊,但是要怎么做呢?”你可能会问。


ArangoDB 中的查询引擎知道图遍历过程中所需的数据存储在哪里,将查询发送到每个数据服务器的查询引擎,并在本地并行处理请求。然后,每个数据库服务器上结果的不同部分将在协调器上合并并发送到客户端。通过这种方法,SmartGraph 可以实现接近单个实例的性能特征。


如果你有一个相当层次化的图,那么还可以利用 Disjoint SmartGraph 来更好地优化查询。


我也想提出网络跃点问题的其他解决方案,但据我所知,目前并没有其他解决方案。

结论

在不断增长的数据中寻找答案的需求日益增长,这就需要一个可扩展的解决方案。图技术越来越多地被用来回答这些复杂的问题或其中的部分问题。


我认为我们现在可以有把握地说,图数据库有垂直扩展的选择,但对于 ArangoDB 来说,也有水平扩展的选择。可以肯定的是,在边的某些情况下,以顶点为中心的索引或 SmartGraph 无法解决问题,但这种情况往往非常罕见。


原文链接:


https://dzone.com/articles/do-graph-databases-scale


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-08-19 08:151220
用户头像
李冬梅 加V:busulishang4668

发布了 814 篇内容, 共 381.7 次阅读, 收获喜欢 1002 次。

关注

评论

发布
暂无评论
发现更多内容

教学必备的9个教案和课件网站!建议收藏!

彭宏豪95

效率工具 培训 在线白板 办公软件 在线教学

2024多云管理平台CMP排名看这里!

行云管家

云计算 云服务 多云管理 云管

什么是Ubuntu LTS?与常规版本的区别

百度搜索:蓝易云

云计算 Linux ubuntu 运维 云服务器

Disk Drill for mac专业直装版 苹果电脑数据恢复工具下载

Rose

Disk Drill下载 Disk Drill mac 数据恢复mac版

Elmedia Video Player Pro 支持AirPlay的苹果mac视频播放器

Rose

媒体播放器 Mac软件 视频播放器 Elmedia Video Player Pro

3D数字绘画和雕刻软件:Mudbox 2025 新功能介绍及安装教程

Rose

Mudbox 2025下载 Mudbox 2025新功能 Mudbox 2025安装教程 3D数字雕刻

学习aop以及nginx

百度搜索:蓝易云

nginx Linux 运维 aop 云服务器

Chatbot具体需要如何搭建

百度搜索:蓝易云

云计算 Linux 运维 chatbot 云服务器

水杉3D建模工具:Metasequoia破解版 含永久注册码

Rose

水杉3D建模 Metasequoia 4 破解版 Metasequoia 4注册码

实现以图搜货功能,淘宝API开发实战分享

tbapi

图片搜索接口 以图搜货接口 拍立淘接口

C++ 字符串完全指南:学习基础知识到掌握高级应用技巧

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

8款AI视频生成产品实测,谁将成为中国Sora?

自象限

GaussDB(for Redis)助力金智教育业务数字化,增效降本双赢

YG科技

电源噪声的起因及危害

智趣匠

噪声 电源

虚拟仿真云:从传统仿真到云仿真的转变与应用

3DCAT实时渲染

虚拟仿真 仿真云

GaussDB(for Redis)特性揭秘:多租户管理

YG科技

守护更多女性健康,华为云GeminiDB助力美柚完成数据库高效稳定迁移

YG科技

hal库中串口常用函数介绍

百度搜索:蓝易云

云计算 Linux 运维 云服务器 HAL

Hazel for Mac自动化清理 含Hazel许可证

Rose

Hazel for Mac Hazel许可证 Hazel for Mac破解版 自动化文件整理

topaz gigapixel ai怎么安装?Topaz Gigapixel AI激活安装详细教程

Rose

topaz gigapixel ai破解版 无损放大图像 Topaz Gigapixel AI 安装

人工智能降噪:topaz photo ai 操作系统 topaz photo ai中文破解安装包

Rose

智能降噪 Topaz Photo AI系统要求 Topaz Photo AI破解版

GaussDB(for Redis)游戏实践:玩家下线行为上报

YG科技

GaussDB(for Redis)特性揭秘:大key治理

YG科技

选择KV数据库最重要的是什么?

YG科技

C#中使用IntPtr.Size属性来判断当前系统是32位还是64位

百度搜索:蓝易云

C# 云计算 Linux 运维 云服务器

新体验、高效能,星河零代码产线加速带动产业新质生产力

飞桨PaddlePaddle

百度 BAIDU 百度飞桨 产品更新 PaddleX

在线教学用什么软件?这款可视化白板工具值得推荐!

彭宏豪95

培训 在线白板 办公软件 在线协作 在线教学

《计算机网络: 自顶向下方法(原书第7版)》PDF

程序员李木子

AutoCAD LT 2025介绍(精简版cad2025)及中文版安装教程

Rose

Autodesk AutoCAD LT 2025 cad2025破解版 AutoCAD LT 2025介绍

Maya 2025下载 玛雅maya2025新功能介绍

Rose

Maya 2025中文版 Maya 2025下载 三维动画软件 玛雅2025新功能 玛雅2025破解

探秘Kubernetes:在本地环境中玩转容器技术

SEAL安全

Kubernetes 容器 云原生 本地环境

图数据库是可扩展的吗?_AI&大模型_Jan Stuecke_InfoQ精选文章