您可以为这种情况推荐哪些数据库:
可能的解决方案和问题:
答案 0 :(得分:1)
关系 Mysql / Postgresql +分区应该能够解决用例。 MongoDb可能是理想的解决方案,除了两个原因。
支持复杂查询。由于不支持JOINS,需要在多个位置复制数据,或者必须在应用程序代码中执行JOINS。
执行复杂的分析查询。 Data aggregation mongodb vs mysql
有类似的情况并评估postgresql vs mongodb。由于上述原因,选择了postgresql +分区(分区在时间戳上完成)。
如果数据集是按时间排序的,或者如果可以以某种方式进行分区,则更新和查询将会很快。
对于mysql,如果使用MYISAM(非事务性)存储引擎,性能将以耐用性为代价进一步提高。对于不允许关闭事务的RDBMS,仍然可以通过调整检查点间隔和少数其他参数来提高性能,这些参数确保以轻松的方式提交事务。但是,如果架构可以频繁更改,那么RDBMS解决方案可能很复杂。
答案 1 :(得分:0)
现在,复杂的查询和插入速度不会混淆。当然,除非这些查询提前知道。是吗?
答案 2 :(得分:0)
1.非常多的插入和更新( Mobgodb )。
4.如果发生崩溃(但不是一切),可以丢失部分数据(例如最近一小时)(
)
mongo中的可选异步写入将有助于提高速度。在mongodb中插入/写入的速度将比sql快,因为mongo首先将所有数据写入内存,而mongodb不使用事务。
2.复杂的查询(SQL或类似的东西)
如果您有很多需要加入的硬报告,几乎所有数据都更好地使用sql。但如果您需要在文档内部进行硬查询,请使用mongodb(取决于sql / nosql db架构设计)
3.大量数据,但频繁访问的数量很少(可以在内存中)
如果服务器mongodb上有足够的可用内存,则将所有数据加载到RAM中。
由于我mongodb狂热我将选择MongoDb,但没有具体任务不能确定选择是否正确。 另外我只比较了sql和mongodb,因为我根本不使用Redis。