Mongodb 特定情况下的存储引擎

Mongodb 特定情况下的存储引擎,mongodb,memory,redis,rdms,database,Mongodb,Memory,Redis,Rdms,Database,对于这种情况,您可以推荐什么数据库: 大量的插入和更新 复杂的查询(SQL或类似的) 数据量大,但频繁访问的数据量小(可存储在内存中) 在崩溃的情况下(但不是所有的情况下),可以释放部分数据(例如最近一小时的数据) 可能的解决方案和问题: Redis-看起来不错,但它不支持复杂的查询 RDBMS(当前解决方案)-保证ACID并大量使用硬盘,因此更新速度太慢 RDBMS+RAM光盘-将使用操作系统交换、恢复问题,通常看起来不太可靠 MongoDB-在写操作上有服务器级锁定,它真的很快吗 现在复杂

对于这种情况,您可以推荐什么数据库:

  • 大量的插入和更新
  • 复杂的查询(SQL或类似的)
  • 数据量大,但频繁访问的数据量小(可存储在内存中)
  • 在崩溃的情况下(但不是所有的情况下),可以释放部分数据(例如最近一小时的数据)
  • 可能的解决方案和问题:

    • Redis-看起来不错,但它不支持复杂的查询
    • RDBMS(当前解决方案)-保证ACID并大量使用硬盘,因此更新速度太慢
    • RDBMS+RAM光盘-将使用操作系统交换、恢复问题,通常看起来不太可靠
    • MongoDB-在写操作上有服务器级锁定,它真的很快吗

    现在复杂的查询和插入速度不能混合使用。当然,除非这些查询是提前知道的。是吗?

    现在复杂的查询和插入速度不能混用。当然,除非这些查询是提前知道的。是吗

    1.大量的插入和更新(Mobgodb

    4.在崩溃的情况下(但不是所有情况下),可以丢失部分数据(例如最近一小时的数据)

    mongo中可选的异步写入将有助于提高速度。mongodb中的插入/写入速度将比sql快,因为mongo首先在内存中写入所有数据,并且mongodb不使用事务

    2.复杂的查询(SQL或类似的)

    如果有很多硬报告需要连接几乎所有的数据,最好在这里使用sql。但如果您需要文档内部的硬查询,请使用mongodb(取决于sql/nosql db模式设计)

    3.数据量大,但频繁访问的数据量小(可存储在内存中)

    如果服务器mongodb上有足够的可用内存,请将所有数据加载到RAM中

    因为我是mongodb的狂热者,所以我会选择mongodb,但如果没有具体的任务,我无法确定选择是否正确。 此外,我只比较了sql和mongodb,因为我根本不使用Redis

    1.大量的插入和更新(Mobgodb

    4.在崩溃的情况下(但不是所有情况下),可以丢失部分数据(例如最近一小时的数据)

    mongo中可选的异步写入将有助于提高速度。mongodb中的插入/写入速度将比sql快,因为mongo首先在内存中写入所有数据,并且mongodb不使用事务

    2.复杂的查询(SQL或类似的)

    如果有很多硬报告需要连接几乎所有的数据,最好在这里使用sql。但如果您需要文档内部的硬查询,请使用mongodb(取决于sql/nosql db模式设计)

    3.数据量大,但频繁访问的数据量小(可存储在内存中)

    如果服务器mongodb上有足够的可用内存,请将所有数据加载到RAM中

    因为我是mongodb的狂热者,所以我会选择mongodb,但如果没有具体的任务,我无法确定选择是否正确。
    另外,我只比较了sql和mongodb,因为我根本不使用Redis。

    关系Mysql/Postgresql+分区应该能够解决这些用例。MongoDb可能是理想的解决方案,除了两个原因

    • 需要足够的RAM以确保数据库的适当部分位于内存中
    • 支持复杂查询。由于不支持联接,因此需要在多个位置复制数据,或者必须在应用程序代码中执行联接

    • 复杂分析查询的性能

    有类似的情况,并评估了postgresql和mongodb。由于上述原因,选择了postgresql+分区(分区是在时间戳上完成的)

    若数据集是按时间顺序排列的,或者分区在某种程度上是可能的,那个么更新和查询就会很快


    对于mysql,如果使用MYISAM(非事务性)存储引擎,性能将进一步提高,但会以耐久性为代价。对于不允许关闭事务的RDBMS,仍然可以通过调整检查点间隔和一些其他参数来提高性能,以确保以轻松的方式提交事务。但是如果模式可以频繁更改,那么RDBMS解决方案可能会很复杂。

    关系Mysql/Postgresql+分区应该能够解决用例。MongoDb可能是理想的解决方案,除了两个原因

    • 需要足够的RAM以确保数据库的适当部分位于内存中
    • 支持复杂查询。由于不支持联接,因此需要在多个位置复制数据,或者必须在应用程序代码中执行联接

    • 复杂分析查询的性能

    有类似的情况,并评估了postgresql和mongodb。由于上述原因,选择了postgresql+分区(分区是在时间戳上完成的)

    若数据集是按时间顺序排列的,或者分区在某种程度上是可能的,那个么更新和查询就会很快


    对于mysql,如果使用MYISAM(非事务性)存储引擎,性能将进一步提高,但会以耐久性为代价。对于不允许关闭事务的RDBMS,仍然可以通过调整检查点间隔和一些其他参数来提高性能,以确保以轻松的方式提交事务。但是,如果模式可以频繁更改,那么RDBMS解决方案可能会很复杂。

    什么是“文档内部查询”?我指的是只需要一个文档的查询(wihtout联接)。什么是“文档内部查询”?我指的是只需要一个文档的查询(wihtout联接)。