数据库acid原则 什么是数据库ACID?
什么是数据库ACID?
事务在当今的企业系统中无处不在,即使在高并发环境中也可以提供数据完整性。事务是所有成功读/写操作的集合。
事务本质上有四个特征:acid:
原子性
一致性
隔离性
持久性
原子性
原子性任务是一个独立的操作单元,它可以是所有原子操作,也可以不是所有原子操作。
一致性
事务可以封装状态更改(除非它是只读的)。事务必须始终保持系统处于一致状态,无论在任何给定时间有多少并发事务。
一致性具有以下特征:
如果操作触发辅助操作(级联、触发器),这些操作也必须成功,否则事务失败。
如果系统由多个节点组成,则一致性要求必须将所有更改传播到所有节点(多主机复制)。如果从节点被异步更新,我们打破了一致性规则,系统就变成了“最终一致性”。
事务是数据状态的切换。因此,如果有多个并发事务,系统也必须像串行事务一样运行。
事实上,当事务系统遇到并发请求时,这种序列化代价高昂。Amdahl规则描述如下:它描述了串行执行和并发之间的关系。
“在并行计算中使用多个处理器的程序的速度由程序的串行执行部分的时间决定。”
大多数DBMS选择(默认情况下)放宽一致性以获得更好的并发性。
隔离
事务是一种并发控制机制,在交叉执行时提供一致性。隔离允许我们对外部世界隐藏未提交的状态更改。失败的事务不应破坏系统的状态。隔离是通过使用悲观或乐观锁定机制来实现的。
持久性
成功的事务将永久更改系统的状态,因此导致该状态的所有更改都将在事务结束前记录在持久性事务日志中。如果我们的系统突然遭受系统崩溃或电源故障,那么所有未完成的已提交事务可能会重复发生。
在大数据时代,关系型数据库有哪些缺点?
主要有四个缺点:1。无法存储数据结构
2。按行存储,即使只操作一列,也需要将整行读入内存
3。表结构扩展不方便,模式固定
4。对全文搜索功能的支持较弱
针对以上四个缺点,提供了不同的数据库来解决。
1. K-V存储不能存储数据结构
以redis为例,值可以是数据结构,如字符串、哈希、列表、集合、sortedset、位图等。列存储可以解决在操作HBase
3表示的列
时,将整行读入内存导致的高IO问题。文档存储可以解决mongodb
4表示的表结构扩展不方便的问题。全文搜索引擎解决了全文搜索功能的问题
以elasticsearch为例
以上解决方案虽然解决了关系数据库的不足,但不能很好的支持acid功能。在某些场景下,关系数据库是一个很好的选择,因此这些数据库只是关系数据库的一个很好的补充,不能替代关系数据库。
现在newsql也是大数据时代的一个发展趋势,即可以支持事务,具有良好的可扩展性来支持大数据。以oceanbase、tidb和扳手/F1为例。
国庆节当天,中国蚂蚁金融自主研发的金融级分布式关系数据库oceanbase在被称为“数据库世界杯”的TPC-C基准测试中,打破了美国甲骨文公司9年来的世界纪录,成为第一个登上榜首的中文数据库产品。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。