分布式数据库ACID特性
华为HarmonyOS应用开发中数据库ACID特性介绍以及分布式数据库运作机制、服务架构
事务:是一个操作序列,这些操作要么都执行,要么都不执行。它是一个不可分割的工作单位。
ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
原子性:指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。
解决方法:在数据库管理系统(DBMS)中,默认情况下一条SQL就是一个单独事务,事务是自动提交的。 只有显式的使用start transaction开启一个事务,才能将一个代码块放在事务中执行。保障事务的原子性是 数据库管理系统的责任,为此许多数据源采用日志机制。如SQL Server使用一个预写事务日志,在将数据 提交到实际数据页面前,先写在事务日志上。
一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏 关系数据的完整性以及业务逻辑上的一致性。
解决方法:数据库机制层面上在一个事务执行之前和之后,数据会符合你设置的约束(唯一约束,外键约 束,Check约束等)和触发器设置。这一点是由SQL SERVER进行保证的。比如转账,则可以使用CHECK约束 两个账户之和等于2000来达到一致性目的。
隔离性: 多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必 须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之 前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。
持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
· 分布式数据库事务性:分布式数据库事务支持本地事务(和传统数据库的事务概念一致)和同步事务,同步事务是指在设备之间同步数据时,是以本地事务为单位进行同步,一次本地事务的修改要么都同步成功,要么都同步失败。 · 分布式数据库一致性:在分布式场景中一般会涉及多个设备,组网内设备之间看到的数据是否一致称为分布式数据库的一致性。分布式数据库一致性可以分为强一致性、弱一致性和最终一致性。
强一致性:指某一设备成功增、删、改数据后,组网内设备对该数据的读取操作都将得到更新后的值;
弱一致性:指某一设备成功增、删、改数据后,组网内设备可能能读取到本次更新数据,也可能读取不到, 不能保证在多长时间后每个设备的数据一定是一致的;
最终一致性:指某一设备成功增、删、改数据后,组网内设备可能读取不到本次更新数据,但在某个时间窗 口之后组网内设备的数据能够达到一致状态。
运作机制:分布式数据服务支撑HarmonyOS系统上应用程序数据库数据分布式管理,支持数据在相同账号的多端设备之 间相互同步,为用户在多端设备上提供一致的用户体验,分布式数据服务包含五部分:
· 服务接口:分布式数据服务提供专门的数据库创建、数据访问、数据订阅等接口给应用程序调用,接口支持 KV数据模型,支持常用的数据类型,同时确保接口的兼容性、易用性和可发布性;
· 服务组件:负责服务内元数据管理、权限管理、加密管理、备份和恢复管理以及多用户管理等,同时负责初 始化底层分布式DB的存储组件、同步组件和通信适配层;
· 存储组件:负责数据的访问、数据的缩减、事务、快照、数据库加密,以及数据合并和冲突解决等特性;
· 同步组件:连结了存储组件与通信组件,其目标是保持在线设备的数据库数据一致性,包括将本地产生的位 同步数据同步给其他设备,接收来自其他设备发送过来的数据,并合并到本地设备中;
· 通信适配层:负责调用底层公共通信层的接口完成通信管道的创建、连接,接收设备上下线消息,维护已连 接和断开设备列表的元数据,同时将设备上下线信息发送给上层同步组件,同步组件维护连接的设备列 表,同步数据时根据该列表,调用通信适配层的接口将数据封装并发送给连接的设备。
分布式数据服务架构:
应用程序通过调用分布式数据服务接口实现分布式数据库创建、访问、订阅功能,服务接口通过操作服务组件 提供的能力将数据存储至存储组件,调用同步组件实现将数据同步,同步组件使用通信适配层将数据同步至 远端设备,远端设备通过同步组件接收数据并更新至本端存储组件,通过服务接口提供给应用程序使用。
更多推荐
所有评论(0)