关系型数据库优点:
1 数据持久化
主存储器:快速,数据量小,数据易丢失,存储于内存中,断电丢失(需要先写内存 再任务策略刷新磁盘 事物通过写磁盘log保证持久性)
后备存储器:慢,数据量大,数据持久化,存储于磁盘或ssd,pcie中
2 并发时,通过事物保证原子操作
举个例子:
两种情况会修改两个表中的同一个字段
情况A修改U表字段成功-> 情况B修改U表字段成功 -> 情况B修改O表字段成功->情况A修改O表字段成功
分析:结果 两种情况分别修改一张表对应字段成功,造成数据不一致。可以通过数据库事务解决此问题。
事务在出现错误时进行回滚保证数据一致
3 集成
多个应用共享一个数据库,实现数据共享
4 近乎标准的模型
各个关系数据库 关系模型、sql 近乎通用
挑战:
1 数据量越来越大
2 用户越来越多,请求量越来越大
需要提升存储性能
1 纵向扩展:价格昂贵,扩展能力有限
2 水平扩展:价格低,弹性伸缩
关系型数据库为了实现水平扩展,需要进行分库分表 实现分片
分片带来的问题:
1 应用程序需要知道哪个数据在哪片里面
2 查询、参照完整性、事务、一致性控制 都无法以跨分片方式执行
使用NoSQL 的原因:
1 数据量大或数据请求效率要去高,必须把数据放在集群上实现水平扩展
2 更为方便的数据交互方式提高应用程序开发效率