如果我们想要利用两个数据库的优点,那么sql和没有sql数据库都有优点和缺点。我们可以这样做吗?就像复杂的查询一样,我们应该更喜欢sql而不是sql,对于分层数据存储,没有sql数据库比sql数据库更好。因此,如果有一种方法可以将两者简单地结合起来。
答案 0 :(得分:4)
这完全有道理。至少这是我如何充分利用这两种技术。
NoSQL:快速而简单,但几乎没有结构来强制执行数据约束。
RDBMS:满足所有ACID属性,确保您的数据安全和清洁。但随着流量和数据集规模的增长,性能会迅速下降。
对于大多数项目,您可以负担得起一个胖的,非分布式,不可扩展的关系数据库作为系统中的单点事实。到目前为止,它是保持数据一致性并保持复杂查询成为可能的最简单方法。
只要您的NoSQL层设法拦截指向RDBMS的大部分流量,您就可以负担得起。
使用NoSQL解决方案有很多技巧要做: 缓存非规范化实体(通过ID索引键值存储中预连接表的内容), 托管所有派生数据(如预先计算的推荐矩阵) 托管所有临时的,快速变化的数据(如用户会话,购物车)
有时你可能决定完全跳过RDBMS部分,因为你的数据集特别大,你决定放弃一致性的保证,或者只是,你的数据没有复杂的结构,你很乐意保持简单。
有时候你需要结构并且你拥有庞大的数据集,那么最好的镜头最终是像Cassandra或Hbase一样的柱状存储系统。 但它们是非常复杂的解决方案,维护成本非常高。