Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 写入两个数据库的应用程序。。。mongo用于报告。。。常用CRUD数据的redis_Mongodb_Redis_Replication_Database Replication - Fatal编程技术网

Mongodb 写入两个数据库的应用程序。。。mongo用于报告。。。常用CRUD数据的redis

Mongodb 写入两个数据库的应用程序。。。mongo用于报告。。。常用CRUD数据的redis,mongodb,redis,replication,database-replication,Mongodb,Redis,Replication,Database Replication,我将设计一个具有以下要求的数据库解决方案: 生活在广域网上,网络的某些部分存在高延迟 某些区域的网络连接每天可能会丢失多次 我必须将主数据库复制到没有硬盘驱动器的从属位置 除了提供CRUD功能外,管理员还需要为他们创建多个报告 我刚接触redis-也就是说这是我的第一天。。。但这似乎是一个很好的选择,因为它能够设置一些从数据库,使它们只在内存中运行 但是。。。至于各种类型的数据,我将需要产生报告。。。我不知道用我们可能需要的方式查询redis有多容易。从目前为止我读到的一小部分内容来看,您只

我将设计一个具有以下要求的数据库解决方案:

  • 生活在广域网上,网络的某些部分存在高延迟
  • 某些区域的网络连接每天可能会丢失多次
  • 我必须将主数据库复制到没有硬盘驱动器的从属位置
  • 除了提供CRUD功能外,管理员还需要为他们创建多个报告
我刚接触redis-也就是说这是我的第一天。。。但这似乎是一个很好的选择,因为它能够设置一些从数据库,使它们只在内存中运行

但是。。。至于各种类型的数据,我将需要产生报告。。。我不知道用我们可能需要的方式查询redis有多容易。从目前为止我读到的一小部分内容来看,您只能基于键进行查询。。。而不是价值观。我知道你可以创建散列值和二级索引。。。但是我想知道我是否应该考虑使用ReIIS和Mango。 Mongo对于动态地更改文档的“模式”来说是轻而易举的事(这对我们来说是好事,因为需求不断变化),您可以通过多种方式查询文档

提议的物理架构

主数据库服务器

此服务器将mongodb作为“报告”存储库运行。它还将有一个 Redis数据库,其中只包含最常查询和写入的信息。例如:

  • Redis主窗口小部件查询数据库

    • 将包含90%的数据库客户端将查询的基本小部件键/值。它将只由少数客户编写,而不是经常编写
    • 属性可能包括如下项:小部件id、小部件名称、小部件价格
    • 此数据库将持久化到磁盘
  • MongoDB小部件报告和管理数据库

    • 将包含每个小部件的文档,这些小部件具有包含在redis数据库中的相同基本信息。。。加上一系列其他属性和关于小部件的历史信息,这些信息将仅由管理员使用(10%的最终用户…)
  • Redis从属服务器

    这些服务器将只包含Redis小部件数据库的内存副本。这些服务器将是只读的。 他们不会进行任何报告

    评论:

    在我讨论这个设计/架构时,我想到了以下问题和想法:

  • 您将如何使mongodb和redis db在“主”服务器上保持同步?我正在考虑首先写入redis服务器…并且只有在成功的情况下,才能填充mongodb。如果它们不同步会产生什么影响?如何解决

  • 为什么不全面使用mongodb呢?mongodb也可以做内存数据库…尽管我还没有测试过它。从我所读到的内容来看,与mongodb相比,更多的人使用redis做内存中的东西。但我可能错了

  • 我想得到一些关于这个想法的反馈。。。 我是不是太复杂了?我是不是应该弄清楚如何在mongodb中设置复制,让主设备将数据持久化到磁盘上,而从设备只在内存中运行?还是应该继续沿着这条路走下去,尝试与同类最佳的工具相结合


    谢谢。

    Mongo提供了一个Mongo连接器项目,允许您收听MongoDB中的所有更新,您可以使用它将数据镜像到其他系统。在以下链接中,它已用于使用MongoDB/Neo4j(图形数据库)创建混合数据库:或者,您也可以转到Github获取mongo connector项目:酷!我会查看它。mongo提供了一个mongo connector项目,允许您侦听MongoDB中的所有更新,您可以使用它将数据镜像到其他系统。在以下链接中,它已用于使用MongoDB/Neo4j创建混合数据库(一个图形数据库):或者你也可以去Github看mongo连接器项目:酷!我来看看。