SQL vs NoSQL
前提
本篇以server型数据库(比如,SQL Server,MySQL,MongoDB等)作为讨论的前提,结合当前的技术发展(2022年底),请参考时注意时效性。 😃
对照表
SQL | NoSQL | |
---|---|---|
类型 | 关系型 | 非关系型 |
Schema | 严格的schema设计以及数据规范化 | 宽松而多样的设计,非结构化和半结构化数据;数据通常是非规范化的 |
语言 | 标准化查询语言 | 还未形成统一的标准 |
查询的支持 | 可以支持十分复杂的查询 | 难以实现复杂查询 |
应用开发 | 需要预先完成数据schema的设计,相比之下,适合数据库表结构不常变更的情况。 | 无需定义schema,相对灵活,可以兼容各种异形数据。 |
可扩展性 | 纵向扩展,性能扩展主要依靠升级数据库所在服务器硬件(CPU,RAM,硬盘)来完成。相对昂贵。 | 横向扩展,性能扩展主要依靠部署等多的服务节点来完成。相对便宜。 |
数据复制 | 缺乏内置方法来支持 | 原生支持数据的复制 |
安全性 | 具有内置的十分成熟的安全性管理机制。 | 普遍缺乏安全性, 而且不具备细粒度的访问控制能力 |
数据一致性 | 强一致性,遵循ACID,任何时间点,数据库中的数据都是一致的。 | 弱一致性(最终一致性)。数据最终将会在某个不确定的时间点上一致。 |
技术支持 | 海量的参考资料以及庞大的社区支持 | 相对来说,资料较少,社区规模也较小 |
🔚