首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ArangoDB中设置集群和切分?

如何在ArangoDB中设置集群和切分?
EN

Stack Overflow用户
提问于 2016-03-15 21:39:48
回答 1查看 1.4K关注 0票数 5

我想在arangoDB.I中使用切分,我已经设置了协调员,如文档2.8.5中提到的DBServers。但是,仍然可以有人解释它的细节,以及我如何能够检查我的查询在切分前后的性能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-16 23:30:51

测试您的应用程序可以完成对于本地集群,是否所有实例都运行在一台计算机上? --如果我得到的是正确的话,这就是您已经做过的吗?

ArangoDB集群由协调器和dbserver节点组成。协调员在磁盘上没有自己的特定于用户的本地集合。它们的作用是与客户机一起处理I/O,解析、优化并将查询和用户数据分发到dbserver节点。Foxx服务也将在协调员上运行。DBServers是此设置中的存储节点,它们保存用户数据。

若要比较群集模式和非群集模式之间的性能,可以在群集实例和非聚集实例上导入数据集,并比较查询结果时间。由于集群设置可以有比单个服务器情况更多的网络通信(即,如果要进行连接),所以性能可能有所不同。在物理分布式集群您可以获得更高的吞吐量。上,因为集群节点最终是自己的机器,并且有自己的IO路径,这些路径在单独的物理硬盘上结束。

在集群情况下,使用创建指定碎片数量的集合参数进行numberOfShardsshardKeys参数可以控制文档在碎片之间的分布。您应该选择该键,这样文档就可以很好地分布在各个碎片之间(也就是说,不对一个碎片进行不平衡)。numberOfShards可以是一个任意值,不需要腐蚀到dbserver节点的数量--它甚至可能更大,因此在将来将集群扩展到更多的节点以适应更高的负载时,可以更容易地将碎片从一个dbserver移动到一个新的dbserver。

在考虑集群使用的情况下开发AQL查询时,必须使用解释命令检查查询是如何在集群中分布的,以及可以在何处部署过滤器:

代码语言:javascript
复制
db._create("sharded", {numberOfShards: 2})
db._explain("FOR x IN sharded RETURN x")
Query string:
 FOR x IN sharded RETURN x

Execution plan:
 Id   NodeType                  Est.   Comment
  1   SingletonNode                1   * ROOT
  2   EnumerateCollectionNode      1     - FOR x IN sharded /* full collection scan */
  6   RemoteNode                   1       - REMOTE
  7   GatherNode                   1       - GATHER
  3   ReturnNode                   1       - RETURN x

Indexes used:
 none

Optimization rules applied:
 Id   RuleName
  1   scatter-in-cluster
  2   remove-unnecessary-remote-scatter

在这个简单的查询中,RETURN & GATHER -nodes位于协调器上;向上的节点(包括REMOTE-node )被部署到DB服务器上。

通常,较少的REMOTE / SCATTER -> GATHER对意味着较少的集群通信。可以将更紧密的FILTER节点部署到*CollectionNodes中,以减少通过REMOTE-nodes发送的文档数量,性能越好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36022729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档