Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将多个mongodb服务器视为一个服务器和数据流管理_Mongodb_Sharding_Redundancy - Fatal编程技术网

将多个mongodb服务器视为一个服务器和数据流管理

将多个mongodb服务器视为一个服务器和数据流管理,mongodb,sharding,redundancy,Mongodb,Sharding,Redundancy,对于我的应用程序,我需要定期将旧数据从mongodb服务器移动到另一个服务器(即,两个不同的服务器)。我还希望能够像查询同一数据库一样查询这些数据 简而言之,我希望能够将两个mongodb实例(在两个不同的服务器上)视为一个实例,并能够控制数据存储的时间和位置 我读到了切分和块的概念,很快就看到了可以轻松实现我想要的功能 问题在于,似乎不可能在mongodb中配置这样的体系结构。我在这里遗漏了什么吗?存档已删除的文档 对于保留已删除文档的问题,您没有选择使用内置功能/机制(如分片或复制)来实现这

对于我的应用程序,我需要定期将旧数据从mongodb服务器移动到另一个服务器(即,两个不同的服务器)。我还希望能够像查询同一数据库一样查询这些数据

简而言之,我希望能够将两个mongodb实例(在两个不同的服务器上)视为一个实例,并能够控制数据存储的时间和位置

我读到了切分和块的概念,很快就看到了可以轻松实现我想要的功能

问题在于,似乎不可能在mongodb中配置这样的体系结构。我在这里遗漏了什么吗?

存档已删除的文档 对于保留已删除文档的问题,您没有选择使用内置功能/机制(如分片或复制)来实现这一点。唯一的方法是手动处理该情况,例如,为已删除的文档保留一个单独的集合,然后简单地文档移动到该集合,而不是删除它们


对于移动数据的全局问题,您有以下两个选项:

使用分片,您可以将数据分割成若干块,这些块将存储在两台(在您的情况下)不同的服务器上。在这个场景中,您可以使用前面提到的方法。但是这种方法非常棘手,因为您需要禁用内置的自动平衡器,以便对块进行完全手动控制。无论如何,MongoDB不建议这样做:

仅在特殊情况下使用moveChunk,例如为初始数据摄取或大容量导入操作准备分片集群。在大多数情况下,均衡器允许在分片集群中创建和平衡块

除此之外,这只允许分割数据,最后,为了达到您的目标,您将得到一个完整的和一个空的碎片


复制方法更安全,更容易实现。您可以简单地将第二台服务器添加到该集中

如果数据太大,你可以。因此,不会对该服务器执行任何读取,因此不会接收到不一致的数据。数据复制完成后,您将在两台服务器上拥有数据副本

至于将两台服务器用作单个服务器,如果需要平衡这两台服务器之间的请求,可以配置to,这将确保所有读取都发送到辅助服务器,并且默认情况下在主服务器上完成写入

在这种情况下,您的代码将不知道您正在查询的服务器。您将只运行客户端方法,其余的将在驱动程序后面完成


结论
因此,我的建议是使用复制方法作为更干净、更轻松、更安全的解决方案。

您是否阅读过MongoDB中的复制?是的,我已经阅读过,您是否有任何复制策略可供建议?我认为您尝试的是不删除数据的复制。从您的一句话“我需要定期将旧数据从一台服务器移动到另一台服务器”,“我还希望能够像查询同一个数据库一样查询这些数据”来看,这句话毫无意义。若您要将数据从一个服务器移动到另一个服务器,那个么您应该不能在第一个服务器上访问它。如果您想复制/同步数据,那么Mongo复制应该在不同的机器上为您执行相同的db名称。如果我听清楚了,您建议在主服务器上执行基本镜像服务器,在删除时不进行同步?如果是这样,(从2014年起)建议编写一个删除和添加的脚本。我已经这样做了,但我认为mongodb有一个特性可以“单独”做到这一点。半正确。但是Mongo不支持自定义同步。最好的方法是保存所有数据。出于分析目的,您是否需要其他服务器上的所有数据(包括主服务器上已删除的数据)?