RethinkDb:如何在大洋彼岸 select "single authoritative primary replica"
RethinkDb: How to select the "single authoritative primary replica" on this side of the Ocean
我正在构建一个多租户解决方案。客户来自世界各地,大部分在欧洲或美国,有些遍布各地。
我想要一个单一的数据库集群,在美国、欧盟和新加坡有许多服务器。
我希望用户 select 他们的数据的单一权威主副本。我如何在 RethinkDb 中做到这一点?
我要解决的问题是如何处理大西洋和太平洋上的延迟。我不希望用户一直等待 0.6 - 1.5 秒的写入时间,如果我使用 "single master in US" 方法,我会得到这样的时间。
我还希望全局读取在本地完成,即在同一个大陆,我会使用 RethinkDB 使用过时的读取,这就是我关注 RethinkDB 的原因。
您可以将服务器标签与 ReQL reconfigure
命令结合使用,以确保将给定 table 的主节点分配给特定数据中心:
http://rethinkdb.com/docs/sharding-and-replication/
http://rethinkdb.com/api/javascript/reconfigure/
或者,您可以获得更细粒度的控制,并通过 table_config
系统 table:
将单个服务器分配为分片的主服务器
http://rethinkdb.com/docs/system-tables/
遗憾的是,您目前无法控制给定 table 中的哪些文档将由哪个服务器处理。如果您有一些文档应该在每个数据中心都有主文档,我建议为每个文档创建单独的 tables 并如上所述相应地配置它们。
要同时查询所有 table,您可以使用 union
项:
r.table("t_US").union(r.table("t_EU"), r.table("t_Singapore"))
http://rethinkdb.com/api/javascript/union/
希望对您有所帮助,如果您还有其他问题,请告诉我。
我正在构建一个多租户解决方案。客户来自世界各地,大部分在欧洲或美国,有些遍布各地。
我想要一个单一的数据库集群,在美国、欧盟和新加坡有许多服务器。
我希望用户 select 他们的数据的单一权威主副本。我如何在 RethinkDb 中做到这一点?
我要解决的问题是如何处理大西洋和太平洋上的延迟。我不希望用户一直等待 0.6 - 1.5 秒的写入时间,如果我使用 "single master in US" 方法,我会得到这样的时间。
我还希望全局读取在本地完成,即在同一个大陆,我会使用 RethinkDB 使用过时的读取,这就是我关注 RethinkDB 的原因。
您可以将服务器标签与 ReQL reconfigure
命令结合使用,以确保将给定 table 的主节点分配给特定数据中心:
http://rethinkdb.com/docs/sharding-and-replication/
http://rethinkdb.com/api/javascript/reconfigure/
或者,您可以获得更细粒度的控制,并通过 table_config
系统 table:
http://rethinkdb.com/docs/system-tables/
遗憾的是,您目前无法控制给定 table 中的哪些文档将由哪个服务器处理。如果您有一些文档应该在每个数据中心都有主文档,我建议为每个文档创建单独的 tables 并如上所述相应地配置它们。
要同时查询所有 table,您可以使用 union
项:
r.table("t_US").union(r.table("t_EU"), r.table("t_Singapore"))
http://rethinkdb.com/api/javascript/union/
希望对您有所帮助,如果您还有其他问题,请告诉我。