智能图形
将图形扩展到集群中并保持性能。此独特功能使您能够探索图形使用中的全新领域,并提供与单个实例设置几乎相同的图形遍历性能。
当图形的数据集超过ArangoDB单个实例上可以承载的限制时,需要进行缩放。然而,通过集群分割图形会带来新的问题。当使用标准图时,遍历可能涉及数据库服务器之间的许多网络跳。由于边缘将遍历带到不同的机器上,性能会恶化。
智能图和不相交智能图通过优化碎片之间的数据分布来解决此问题,减少了需要网络跳到其他服务器的边缘数。
使用图形缩放
ArangoDB的社区版可以在单个实例上处理大型数据集,允许您垂直扩展而不会出现问题。它还可以处理水平扩展到包含所有三种数据模型的集群。但是,在水平缩放时,通过集群分割图形时,可能会遇到性能问题。
绘制一个处理大型数据集的图,例如在物联网、金融、通信、医疗保健或基因组学应用程序中可能会发现的内容。数据的自然分布涉及一系列高度互联的社区,这些社区之间有许多边缘。
图1:3台机器上没有SmartGraphs的图形切分
在这种规模上遍历图可以带您穿过数十亿甚至万亿个顶点。这样的数据量太大,无法安装在一台机器上,每当边缘将您从一台机器带到另一台机器时,网络连接上就会出现性能瓶颈。如果第二台机器上的边缘将您带回第一台机器或第三台机器,情况会变得更糟。遍历所需的网络跳数越多,网络延迟就越大,与内存计算相比,网络延迟可能会变得非常昂贵。最终,性能下降到不再适合给定用例的程度。
使用SmartGraphs进行缩放
遍历碎片图时的性能问题与网络延迟有关。遍历所需的网络跃点越多,从水平缩放中获得的好处就越少。使用ArangoDBEnterprise版本,您将受益于SmartGraphs,通过使用应用层的智能性解决遍历的网络延迟问题。
图形本身一无所知。但是,您的应用程序对图形了解很多。在许多数据集中,存在高度互联的社区,但这些社区之间的连接很少。例如,覆盖客户、区域或任何其他逻辑的集合(用于在应用层组织图形)反过来可以用于在集群中分割图形。
SmartGraphs利用应用层的智能性来优化它如何通过集群分割数据。例如,客户ID、区域或任何其他适合您主要查询的逻辑。通过这种智能,您可以将图形中高度连接的社区分割到特定实例。
图2:ArangoDBSmartGraph的分片图
通过优化数据分布,SmartGraphs减少了遍历所需的网络跳数。内部测试表明,当遍历碎片图时,性能提高了40-120倍。
不相交智能图
对于某些用例,您可以使用不相交的SmartGraphs进行进一步优化。不相交智能图是一种针对用例的优化,这些用例必须处理大型分层图或针对多个客户图的整体分析。在这两种情况下,图形数据集中的分支都是明确分开的。
不相交的SmartGraphs支持这些分支的自动切分,并禁止边缘连接它们。这使得查询优化器可以将整个查询执行向下推到每个数据库服务器,并大大提高图形查询的性能,如遍历、模式匹配、最短路径和k-最短路径。
ArangoDB企业版本用户现在可以处理完整的新用例或进一步优化当前基于图形的应用程序。
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !