7

I am doing some work for an organisation that has offices in 48 countries of the world. Essentially the way they work now is that they all store data in a local copy of the database and that is replicated out to all the regions/offices in the world. On the odd occasion where they need to work directly on something where the "development copy" is on the London servers, they have to connect directly to the London servers, regardless of where they are in the world.

So lets say I want to have a single graph spanning the whole organisation which is sharded so that each region has relatively fast reads of the graph. I am worried that writes are going to kill performance. I understand that writes go through a single master, does that mean there is a single master globally? i.e. if that master happens to be in London then each write to the database from Sydney has to traverse that distance regardless of the local sharding? And what would happen if Sydney and London were cut off (for whatever reason)?

Essentially, how does Neo4j solve the global distribution problem?

4

2 回答 2

8

Neo4j企业版的分发机制确实是主从式的。对 master 的任何写入请求都在本地提交并同步传输到 slave 中定义的数量push_factor(默认值:1)。对从属设备的写请求将同步将其应用到主控设备、自身以及足够的机器上来完成push_factor。从机到主机的同步通信可能会影响性能,这就是为什么建议将写入重定向到主机并将读取分配到从机。集群通信在高延迟网络上运行良好。

在多区域设置中,我建议在“主要区域”中有一个完整的(也就是至少 3 个实例)集群。另一个 3 实例集群位于以仅从模式运行的次要区域中。如果主要区域完全关闭(非常罕见但它停止了),监控工具会触发次要区域中的配置更改,以使其实例成为主区域。所有其他需要快速读取访问的办公室都有 x (x>=1,取决于读取性能) 仅从属实例。在每个位置,您都有一个 HA 代理(或其他 LB),它将写入定向到主区域(通常在主区域中)并读取到本地区域。

如果您想为单个集群提供超过 20 个实例,请考虑首先进行认真的概念验证。由于主从架构,这种方法不能无限扩展。

于 2013-09-05T09:22:46.183 回答
0

截至 2020 年,Neo4J 仍然是一个仅复制的图形数据库。它有一些读写“核心服务器”作为其“同步集群”的一部分存在,然后是一些“读写副本”。对其中一个核心服务器执行更新,然后在通知客户端提交成功之前,在 (N/2)+1 个核心服务器之间同步更新。这是 Neo4J 对RAFT 协议的实现。这一切都意味着 Neo4J 实现了复制,并且副本是分布式的。图的所有节点和边都限制在同一台服务器上。

Objective/DB 实现了一个分布式数据库。Objectivity/DB 允许用户将他们的图分布在多达 65,000 台服务器上,其中节点 A 可以在 Server-10 上,节点 B 可以在 Server-47550 上,它们之间的边可以在 Server-543 上。这允许单个连接图的增长超出任何单个服务器的规模。数据库的接口 (API) 创建了所谓的单一逻辑视图,一旦连接到联合数据库,客户端就拥有整个联合中所有数据的单一逻辑视图,无论它驻留在哪个主机上。这允许用户使用较小的商品硬件创建海量图形,而不必购买 EB 级服务器来创建 EB 级图形。

另一个优点是它允许用户将数据放置在靠近将要使用的地方。如果您的组织分布在全球各地,您可以将香港数据放置在香港或其附近,将纽约数据放置在纽约或其附近。您可以在香港和纽约的节点之间创建边。丹佛的用户可以在所有地方运行导航查询,因为查询引擎是分布式的。

于 2020-11-13T20:20:45.823 回答