什么是关系型数据库(非关系型数据库和关系型数
随着大数据的发展,数据库也越来越受重视了。当前数据库分为关系型数据库和非关系 数据库。下面通俗的解释区别和优缺点。
概念的解释
关系型数据库:指采用了关系模型来组织数据的数据库。这边关系可以理解为表,所以
系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
非关系型数据库:指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。
两者优缺点分析
关系型数据库的优点:
- 容易理解,它的逻辑类似常见的表格
- 使用方便,都使用sql语句,sql语句非常的成熟
- 数据一致性高,冗余低,数据完整性好,便于操作
- 技术成熟,功能强大,支持很多复杂操作
缺点:
- 每次操作都要进行sql语句的解析,消耗较大
- 不能很好的满足并发需求,特别是海量数据爆发,关系型数据库读写能力会显得不足
- 关系型数据库往往每一步都要进行加锁的操作,也造成了数据库的负担
- 数据一致性高,有时也会使数据的存储不灵活
非关系数据库优点:
- 用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。
- 高并发,读写能力强,分布式计算
- 低成本,架构的灵活性;没有复杂的关系。
- 弱化数据结构一致性,使用更加灵活,有良好的可扩展性
缺点:
- 没有标准化;
- 查询功能有限。
- 操作灵活导致容易出错和混乱
常见的关系型数据库和非关系型数据库
关系型的常见的有
Oracle,Microsoft SQL Server,MySQL,PostgreSQL,DB2,
Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一个分支),SAP
常见的非关系型数据库
NoSql、Cloudant、MongoDB、redis、HBase
区别的总结
首先一般非关系型数据库是基于CAP模型,而传统的关系型数据库是基于ACID模型的
1. 数据存储结构:
首先关系型数据库一般都有固定的表结构,并且需要通过DDL语句来修改表结构,不是很容易进行扩展,而非关系型数据库的存储机制就有很多了,比如基于文档的,K-V键值对的,还有基于图的等,对于数据的格式十分灵活没有固定的表结构,方便扩展,因此如果业务的数据结构并不是固定的或者经常变动比较大的,那么非关系型数据库是个好的选择
2. 可扩展性
传统的关系型数据库给人一种横向扩展难,不好对数据进行分片等,而一些非关系型数据库则原生就支持数据的水平扩展(比如mongodb的sharding机制),并且这可能也是很多NoSQL的一大卖点,其实象Mysql这种关系型数据库的水平扩展也并不是难,即使NoSQL水平扩展容易但对于向跨分片进行joins这种场景都没有什么太好的解决办法,不管是关系型还是非关系型数据库,解决水平扩展或者跨分片Joins这种场景,在应用层和数据库层中间加一层中间件来做数据处理也许是个好的办法
3. 数据一致性
非关系型数据库一般强调的是数据最终一致性,而不没有像ACID一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据,因此如果你的业务对于数据的一致性要求很高,那么非关系型数据库并不一个很好的选择,非关系型数据库可能更多的偏向于OLAP场景,而关系型数据库更多偏向于OLTP场景。