关系型数据库和非关系型区别
1. SQL VS NoSQL
SQL 关系型数据库是规范化语言,它有固定的表结构,不容易进行横向扩展, (例如:刚开始用 remark 字段记录一个备注,后来又需要增加“备注2”、“备注3”,横向扩展就需要修改数据表,增加 remark_2, remark_3 新字段)。
NoSQL “非关系型数据库”,是一种非规范化语言,对同一个“字段” 内容没有强制要求,比较灵活。但是“灵活”带来的另一个后果就是“混乱”,因此 NoSQL 在实际应用中也需要要求按“规范”来约束“字段内容”。
2.SQL VS NoSQL 事务
在SQL数据库中,两条或者多条更新操作可以结合成一个事务(或者全部执行成功否则失败)执行。在NoSQL数据库中,对于一个文档的更新操作是原子性的。换句话说,如果你要更新一个文档中的三个值,要么三个值都更新成功要么它们保持不变。然而,对于操作多个文档时没有事务相对应的操作。在MongoDB中有一个操作是[transaction-like options]但是,需要我们手动的加入到代码中。
3.SQL VS NoSQL 规模
随着数据量的增长,我们或许会发现有必要将负载分配到到不同的服务器上。对于基于SQL语言的开发的系统是非常困难的。如何分配相关的数据?集群是一种最简单可能的解决方案,多个服务器访问同一个中央存储器—及时是这样也会有许多的问题。
NoSQL的简单的数据模型能够简化其过程,许多NoSQL数据库在一开始就构建了解决大规模数据的功能。
4.SQL VS NoSQL 可行性
最后,我们考虑一下安全性和系统性的问题。流行的NoSQL数据库已经存在好几年了,它们展现的问题可能会比成熟的关系型数据库多。许多问题都已经被发现了,但是所有的问题都指向了同一个问题:了解程度。
开发人员和系统管理员对于管理新型数据库有很少的经验,因此会产生许多问题。选择NoSQL是因为感觉它比较新颖,或者你想要避免数据模式的设计,都会在将来带来一些问题。
5.SQL VS NoSQL 总结
SQL和NoSQL数据库只是用不同的方式来完成相同的事情。我们可能会先选择其中之一然后更换到另一个上,但是在选择之前制定一个计划将会节约许多的时间和金钱。
适合使用SQL开发的项目:
可以预先定义逻辑相关的离散数据的需求
数据一致性是必要的
具有良好的开发者经验和技术支持的标准的成熟技术
适合使用NoSQL开发的项目:
不相关,不确定和逐步发展的数据需求
更简单或者更宽松的能够快速开始编程的项目
速度和可扩展性至关重要的
SQL 與 NoSql 其他了解
SQL 第一个重点在于突出“表之间的关系”**,一对一、一对多、多对多等等关系。一個良好的設計必定需要理清楚表(對象)之間的需求關係。
SQL 也在向 NoSql 學習好的一些方面,例如 JSON 類型。
网友评论