Mongodb 特定情况下的存储引擎
对于这种情况,您可以推荐什么数据库:Mongodb 特定情况下的存储引擎,mongodb,memory,redis,rdms,database,Mongodb,Memory,Redis,Rdms,Database,对于这种情况,您可以推荐什么数据库: 大量的插入和更新 复杂的查询(SQL或类似的) 数据量大,但频繁访问的数据量小(可存储在内存中) 在崩溃的情况下(但不是所有的情况下),可以释放部分数据(例如最近一小时的数据) 可能的解决方案和问题: Redis-看起来不错,但它不支持复杂的查询 RDBMS(当前解决方案)-保证ACID并大量使用硬盘,因此更新速度太慢 RDBMS+RAM光盘-将使用操作系统交换、恢复问题,通常看起来不太可靠 MongoDB-在写操作上有服务器级锁定,它真的很快吗 现在复杂
- Redis-看起来不错,但它不支持复杂的查询
- RDBMS(当前解决方案)-保证ACID并大量使用硬盘,因此更新速度太慢
- RDBMS+RAM光盘-将使用操作系统交换、恢复问题,通常看起来不太可靠
- MongoDB-在写操作上有服务器级锁定,它真的很快吗
另外,我只比较了sql和mongodb,因为我根本不使用Redis。关系Mysql/Postgresql+分区应该能够解决这些用例。MongoDb可能是理想的解决方案,除了两个原因
- 需要足够的RAM以确保数据库的适当部分位于内存中
- 支持复杂查询。由于不支持联接,因此需要在多个位置复制数据,或者必须在应用程序代码中执行联接
- 复杂分析查询的性能
对于mysql,如果使用MYISAM(非事务性)存储引擎,性能将进一步提高,但会以耐久性为代价。对于不允许关闭事务的RDBMS,仍然可以通过调整检查点间隔和一些其他参数来提高性能,以确保以轻松的方式提交事务。但是如果模式可以频繁更改,那么RDBMS解决方案可能会很复杂。关系Mysql/Postgresql+分区应该能够解决用例。MongoDb可能是理想的解决方案,除了两个原因
- 需要足够的RAM以确保数据库的适当部分位于内存中
- 支持复杂查询。由于不支持联接,因此需要在多个位置复制数据,或者必须在应用程序代码中执行联接
- 复杂分析查询的性能
对于mysql,如果使用MYISAM(非事务性)存储引擎,性能将进一步提高,但会以耐久性为代价。对于不允许关闭事务的RDBMS,仍然可以通过调整检查点间隔和一些其他参数来提高性能,以确保以轻松的方式提交事务。但是,如果模式可以频繁更改,那么RDBMS解决方案可能会很复杂。什么是“文档内部查询”?我指的是只需要一个文档的查询(wihtout联接)。什么是“文档内部查询”?我指的是只需要一个文档的查询(wihtout联接)。