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

时间:2016-08-22 18:48:04

标签: mongodb redis replication database-replication

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

  • 生活在WAN上,网络的某些部分遭受高延迟。
  • 某些地区的网络连接可能会多次丢失/天
  • 我必须将master数据库复制到没有硬盘驱动器的slave位置。
  • 除了提供CRUD功能外,管理员还需要为它们创建多个报告。

我刚接触redis - 也就是说这对我来说实际上是第一天......但就能够设置一些从属数据库而言它们似乎很合适,因此它们只在内存中运行。

但是......就我生成报告所需的各种类型的数据而言...我并不是以我们可能需要的方式查询redis是多么容易。从我到目前为止阅读的那些小,您只能基于键进行查询...而不是基于值。我知道你可以创建哈希值和二级索引......但是......我想知道我是否应该考虑使用redis和mongo。 就改变" schema"而言,Mongo是一件轻而易举的事。动态文件(这对我们有利,因为需求不断变化),您可以通过多种方式查询文档。

建议的物理架构

主数据库服务器

此服务器将运行mongodb作为"报告"库。它也会有一个 Redis数据库,它将只包含最常查询和编写的信息。例如:

  1. Redis Master小部件查询数据库

    • 将包含90%的数据库客户端将查询的基本小部件键/值。它只会由少数客户写,而不是经常写。
    • 属性可能包括以下项目:widget_id,widget_name,widget_price。
    • 此数据库将持久保存到磁盘。
  2. MongoDB小组件报告和管理数据库

    • 将包含每个小部件的文档,其中包含redis数据库中包含的相同基本信息...以及一些仅供管理员使用的小部件的其他属性和历史信息(10%的最终用户)。 ..)
  3. Redis从属服务器

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

    注释:

    当我讨论这个设计/架构时,会想到这些问题和想法:

    1. 你如何将mongodb和redis db保留在" master'服务器同步?我想第一次写入Redis服务器......只有成功,才能填充mongo db。如果他们不同步会产生什么影响?如何解决?

    2. 为什么不直接使用mongodb? Mongodb也可以在内存数据库中做...虽然我还没有测试过它。从我读过它"感觉就像"与mongodb相比,更多的人一直在使用redis作为内存。但我可能是错的。

    3. 我想得到一些关于这个想法的反馈...... 我是不是太复杂了?我应该弄清楚如何在mongodb中设置复制,主持久数据到磁盘..并且从机只在内存中运行?或者我应该继续走这条路,在那里我评估试图结合最好的工具?

      感谢。

0 个答案:

没有答案