首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >跨不同地区拥有一个集中式数据库的最佳实践(MongoDB)

跨不同地区拥有一个集中式数据库的最佳实践(MongoDB)
EN

Stack Overflow用户
提问于 2021-10-23 17:53:16
回答 1查看 147关注 0票数 1

App托管在北美、欧洲和亚洲。所有地区都有相同的应用程序实例,但连接到应用程序所在地区的阿特拉斯中托管的不同MongoDB数据库。

每个地区的应用程序连接到不同的数据库,因为如果应用程序不在与数据库本身相同的地区托管,则数据库请求将需要很长时间。

现在最大的问题是,如果用户在北美的实例中注册,他的用户记录将存储在北美的数据库中。因此,如果同一用户稍后尝试在欧洲或亚洲实例中登录,他将不会成功,因为这些数据库没有该用户的记录。

拥有一个对全球所有地区都快速的集中式数据库的最佳实践是什么?用阿特拉斯能做到吗?是否可以在不同地域托管一个集群的副本集?

欢迎所有的建议和建议。

EN

回答 1

Stack Overflow用户

发布于 2021-11-01 20:24:58

如果我理解正确的话,你想要低的全局延迟,同时保持你的数据的完整性,无论你的用户从哪里查询。

由于您目前使用的是Atlas,我强烈建议您切换到具有本地只读节点的Global Cluster。原因如下:

关于群集的完整性的

  • 你将有一个集群被你所在地区的国家代码切分为location。不再需要管理多个集群,location将用于地理分布。您还需要另一个分片密钥才能进行正确的分发,但这不是问题。

用户从区域创建文档时的

  • 在写入数据时,您的应用程序需要使用location字段指明它所属的区域。

当用户从他创建的文档的区域中读取时为

  • 您可以通过传递location字段来读取,请求将被发送到正确的区域。但是,如果用户是从不同的区域请求,那么最终会出现高延迟问题。请参阅下面的正确解决方案。

当用户从不同区域读取时出现

  • 为了支持低延迟当用户从不同地域请求时,您需要将您的读取首选设置为nearest,并指明数据的location。您的应用程序将始终从与本地只读节点相同(或最近)的区域获取数据的复制版本。在设置群集时,您需要确保切换以下屏幕截图中的选项。

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

https://stackoverflow.com/questions/69690698

复制
相关文章

相似问题

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