当图表的数据集超出您可以在单个ArangoDB实例上托管的限制时,您需要进行扩展。但是,通过集群对图进行分片会带来新的问题。使用标准图时,遍历可能涉及数据库服务器之间的许多网络跃点。随着边缘将遍历带到不同的机器上,性能会变差。
SmartGraphs和DisjointSmartGraphs 通过优化分片之间的数据分布来解决这个问题,减少需要网络跳到其他服务器的边数。
用图表缩放
ArangoDB的社区版可以在单个实例上处理大型数据集,让您可以毫无问题地垂直扩展。它还可以处理水平扩展到具有所有三个数据模型的集群。但是,在水平扩展时,您可能会开始遇到性能问题,您可以通过集群对图进行分片。
想象一个处理大型数据集的图表,例如您可能在物联网、金融、通信、医疗保健或基因组学应用程序中找到的数据。数据的自然分布涉及一系列高度互联的社区,这些社区之间有许多边缘。
图1:3台机器上没有SmartGraphs的图形分片
遍历这种规模的图可以带您穿过数十亿甚至数万亿个顶点。单台机器上容纳的数据量太多了,每当边缘将您从一台机器带到另一台机器时,网络连接上的性能瓶颈。如果第二台机器上的优势让你回到第一台或第三台,它会变得更糟。遍历所需的网络跳数越多,网络延迟就越大,与内存计算相比,这可能会变得非常昂贵。最终,性能会下降到不再适合您给定用例的程度。
使用SmartGraphs进行缩放
遍历分片图时的性能问题与网络延迟有关。您的遍历需要的网络跳数越多,您从水平扩展中获得的收益就越少。使用ArangoDB企业版,您可以从SmartGraphs中受益,通过使用应用层的智能解决遍历的网络延迟问题。
图对自己一无所知。但是,您的应用程序对图表了解很多。在许多数据集中,存在高度互联的社区,但这些社区之间的联系很少。例如,涵盖您的客户、区域或您在应用程序层组织图表的任何其他逻辑的集合又可以用于通过集群对图表进行分片。
SmartGraphs使用应用程序层的智能性来优化它通过集群对数据进行分片的方式。例如,适合您的主要查询的客户ID、区域或任何其他逻辑。借助这种智能,您可以将图表中高度连接的社区分割到特定实例。
图3:使用ArangoDBSmartGraph 的分片图
通过优化数据分布,SmartGraphs减少了遍历所需的网络跳数。内部测试显示,在遍历分片图时性能提升了40-120倍。
不相交的智能图
对于某些用例,您可以使用DisjointSmartGraphs 进一步优化。DisjointSmartGraphs是针对必须处理大型分层图或针对多个客户图的整体分析的用例的优化。在这两种情况下,您的图形数据集中都有明显分离的分支。
DisjointSmartGraphs 启用这些分支的自动分片并禁止连接它们的边。这允许查询优化器将整个查询执行下推到每个DBserver,并大大提高图查询的性能,如遍历、模式匹配、最短和k最短路径。
ArangoDB企业版用户现在可以处理完整的新用例或进一步优化当前基于图形的应用程序。
责任编辑:彭菁
-
服务器
+关注
关注
12文章
9010浏览量
85162 -
数据集
+关注
关注
4文章
1205浏览量
24635
原文标题:ArangoDB Enterprise:智能图和分离的智能图
文章出处:【微信号:哲想软件,微信公众号:哲想软件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论