Page 382 - 《软件学报》2024年第6期
P. 382

2958                                                       软件学报  2024  年第  35  卷第  6  期


                 数据新鲜度为代价的. 如果数据库需要更好地提高                AP  端读取数据的新鲜度, 则需要提高同步的频率, 但可能会增
                 大同步任务对资源的抢占, 从而干扰写负载的执行, 即降低                 TP  端性能.
                  2.2.3    会话一致性
                    会话一致性模型要求读请求返回某个前缀序列对应的数据版本, 且不晚于会话内上一时刻返回的版本. 为此,
                 TP  和  AP  端可以使用不同的标识号管理器进行独立的数据版本管理, 且各                   AP  端之间的标识号管理器也相互独
                 立. 需要注意的是, 每个     AP  端的标识号管理器通过回放的版本确定各自的标识号, 而非重新分发标识号.
                    会话一致性允许不同会话读取不同的数据版本, 所以在                   3  种模型中数据同步要求最宽松. 数据库在会话的缓
                 存中维护增量版本以用于         AP  端读取数据. 单机数据库系统一般基于           COW  机制创建会话快照以维护增量数据版
                 本, 在内存中进行数据拷贝以实现同步; 分布式数据库系统则一般会在会话的缓存中回放版本以同步数据, 而各会
                 话缓存中的数据版本和已在存储中持久化的版本可能不一致, 所以当 AP                       查询读取的数据未命中缓存时, 分布式
                 数据库系统需要从存储中获取与缓存中版本对齐的版本数据, 从而保证缓存和存储快照的一致性.
                    单机  HTAP  数据库系统一般通过读取当前会话缓存的快照进行数据版本的追踪; 而在分布式场景下, 当从存
                 储中获取数据版本时, 可能存在不同的数据版本追踪方式. 如果底层存储支持版本追踪, 为了避免等待底层存储同
                                                      版本标识号
                 步到与缓存一致的版本, 就要求缓存的版本始终不早于存储的版本, 那么                       AP  端可以从存储中读取与缓存一致的
                 较旧版本, 读取延迟较低, 但是会降低读取的数据新鲜度; 如果存储不支持版本追踪, 那么要求缓存的版本始终不
                 晚于存储的版本, 那么       AP  端则需要在读取后将存储中的版本回放到与缓存一致的数据版本上, 提升了数据新鲜
                 度, 但增大了延迟.
                    综上所述, 会话一致性模型的实现一般是基于以缓存版本为基础的快照一致性, 在单机中由于创建多个会话
                 的数据快照, 内存数据拷贝效率较高, 同步代价低, 但往往会带来较大的内存开销; 而在分布式场景下由于缓存中
                 需要同步的日志量少, 同步效率高. 但是, 在维护缓存与存储之间的一致性要求下, 数据库需要设计复杂的机制来
                 保证快照完整性, 同时, 当数据库系统存在多个              AP  会话时, 应用层需要解决多个        AP  节点宕机重连导致的数据版
                 本不一致问题.
                    从上述   3  种一致性模型的总结来看, 数据共享模型与分布式数据库的一致性模型间存在一定的关联, 但不完
                 全相同. 对于同一数据不存在多个物理副本的情况, 数据共享模型约束了读取时该数据版本的可见性, 而一致性模
                 型不考虑这种情况. 对于同一数据存在多个物理副本的情况, 数据共享模型的约束与一致性模型的要求相对应, 但
                 关注的角度不同. 数据共享模型会约束数据库读取之前写入的版本的新鲜程度, 不关注各物理副本内容的一致性;
                 而一致性模型要求各物理         (或多数) 副本内容相同      [38] , 不关心版本的差异. 两者对数据的约束最终都依赖于多副本
                 之间的同步方式, 以达成数据在某个维度上的一致性状态.
                    因此, 数据共享模型的具体实现与一致性强度的具体实现紧密相关, 不同的一致性级别对应数据共享模型中
                 不同强度的约束, 在      HTAP  数据库系统中具有不同的实现机制, 表现出不同的特征                 (总结见表    1, 其中  n 为当前版
                 本更新序列的长度). 在线性一致性模型下, TP            端和  AP  端共用一套标识号管理器以实现标识号的分配, 并通过快
                 速地同步保证两者的数据版本同步推进, 使得读请求可以读取到最新的版本; 在顺序一致性模型下, AP                               端可以具
                 有独立的一套标识号管理器, 基于批次的方式进行数据同步, 使得在读请求获取的版本与最新版本之间有统一的
                 时间偏移; 在会话一致性模型下, 每个          AP  端的会话可以有不同的标识号管理器, 但会话内基于缓存一致性有序推
                 进数据版本, 因此 AP    端所见版本与最新版本之间存有不统一的版本偏移.


                                            表 1    HTAP  数据库系统数据共享模型特征

                   一致性级别          p        q                              版本同步             版本可见性
                   线性一致性            0       0   TP/AP使用统一标识号管理器          基于事务号         当且仅当最新版本可见
                                                                                      各AP所见版本与最新版本
                   顺序一致性            n       0   TP/AP拥有独立标识号管理器 基于日志号或Epoch号
                                                                                         有一致的版本偏差
                                                TP有统一的标识号管理器; 每                       各AP所见版本与最新版本
                   会话一致性          n        n                            基于缓存一致性


                                                 个AP有独立标识号管理器                           可有不同的版本偏差
   377   378   379   380   381   382   383   384   385   386   387