一、SQL VS NoSQL
SQL:关系型数据库,用SQL语句来操作数据
NOSQL:非关系型数据库,NoSQL的含义是不仅仅有SQL,而实际上大多数NoSQL不用SQL来操作数据
常见的关系型数据库:MySQL、Oracle、SQLServer、PostGreSQL
常见的非关系型数据库:HBase、MongoDB、Redies
关系型数据库的特点:
1.按照一定结构进行存储,如数据都存储在二维的表结构中,每一行数据具有相同的列属性
关系型数据库的改进:Json属性的列可以存储非结构化的数据
2.支持事务的原子性、一致性、隔离性、持久性
3.支持用SQL语言对存储在其中的数据进行操作
关系型数据库的使用场景:
1.数据之间存在着一定的关系,需要关联查询数据的场景
2.需要事务支持的业务场景
3.需要使用SQL语言灵活操作数据的场景
非关系型数据库的特点:
1.存储结构灵活,不需要固定的结构,如在MongoDB中每一行的数据以Json的形式存在,每一行的数据的列属性可以不同,但是这样的存储方式也有坏处,在不考虑压缩的情况下每一行都有自己的列属性,会占用许多存储空间,对于同样大小的数据非关系型数据库耗费的存储空间更多。
2.对事务的支持比较弱,查询或写入数据时,不需要检查数据的结构完整性,节约了很多时间,因此对数据的并发处理性能高。
3.大多数不用SQL语言来操作,如MongoDB采用js来操作数据
非关系型数据库的适用场景:
数据结构没法确定的场景,以及不同的行有不同的属性的场景,如有的数据的列属性是质量、长、宽、而有的数据的列属性是颜色、厚度
对事务要求不高对数据的完整性要求不高而对并发量要求高的场景
对数据的处理操作比较简单的场景
二、如何选择关系型数据库
1.数据库的广泛性,使用得多的数据库更稳定,而且可以查找的资料更多
2.数据库的可拓展性
3.数据库的安全性和稳定性
4.数据库所支持的系统,如有的数据库在linux系统上是免费的
5.数据库的使用成本,在主流的关系型数据库中MySQL是免费的而且性能好
三、MySQL的优势
1.开源免费且性能仅次与Oracle数据库
2.可扩展性好:支持基于二进制日志的逻辑复制,配置灵活
3.市场上存在多种第三方数据库中间层,支持读写分离及分库分表,如myCat
4.安全性和稳定性:MySQL主从复制集群可到99%的可用性,配合主从复制高可用架构可以达到99.99%的可用性,支持对存储在MySQL的数据进行分级安全控制。
5.支持linux和windows系统
6.社区版本免费,使用人群多方便获取技术支持。