crclz
2020-12-05 16:16:16 +08:00
你可以比较一下 MongoDB 和 PostgreSQL 的 jsonb 的区别:
1. pg jsonb 查询语言支持不友好(例如,C# Linq List.Contains 支持不了,又不报错)。spring data 那边怎么样不了解。
2. pg jsonb 没有 map reduce,所以 jsonb 你想要 group by,就别想了,老老实实用关系模型吧。
3. mongo 自带原生集群和分片支持
4. 索引支持:(这点我没有经过考证,属于半瞎扯的)我个人感觉 Mongo 天生要应对复杂的文档结构,所以可能会把情况考虑的比较全
综上,专业的东西给专业的做。
当然,这几点也有解决方案:
1 -- jsonb 查询语言支持不友好:写原生的字符串查询语句。thoughtworks 有一个开源的教程项目就是这样做的(用的是 mysql json )
2 -- pg jsonb 没有 map reduce:因为 map reduce 一般是用来搞统计、查询的,所以可以利用 CQRS 的思想,把那一部分需要 map reduce 才能做统计的聚合的查询模型采用关系模型。
4 -- 索引支持:如果查询需求复杂,就把那一部分复杂的采用 CQRS 。