特定情况的存储引擎

您可以为这种情况建议哪些数据库: 很多插入和更新 复杂的查询(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。     
关系Mysql / Postgresql +分区应该能够解决用例。 MongoDb可能是理想的解决方案,除了2个原因。 需要足够的RAM来确保数据库的相当一部分在内存中。 支持复杂查询。由于不支持JOINS,需要在多个位置复制数据,或者必须在应用程序代码中执行JOINS。 执行复杂的分析查询。数据聚合mongodb vs mysql   有类似的情况,并评估postgresql与mongodb。由于上述原因,选择了postgresql +分区(在时间戳上完成分区)。 如果数据集是按时间排序的,或者如果可以以某种方式进行分区,则更新和查询将很快。 对于mysql,如果使用MYISAM(非事务性)存储引擎,性能将以耐用性为代价进一步提高。对于不允许关闭事务的RDBMS,仍然可以通过调整检查点间隔和少数其他参数来提高性能,这些参数确保以轻松的方式提交事务。但是如果模式可以频繁更改,那么RDBMS解决方案可能很复杂。     
现在,复杂的查询和插入速度不会混淆。当然,除非这些查询提前知道。是吗?     

要回复问题请先登录注册