12、分布式系统中的数据标识与位置无关性

分布式系统中的数据标识与位置无关性

1. 分布式系统的保证

分布式系统能够提供一些重要的保证,这些保证涵盖了从简单明显的,如“能读取到刚写入的数据”,到复杂强大的,如“所有节点最终收敛到相同状态”。在确保这些保证的过程中,往往需要进行权衡,放弃一些保证以换取其他保证。

我们常常期望数据有固定的位置,但在很多情况下,这种保证是无法实现的。相反,我们可以选择一种允许独立于位置访问数据的保证。当我们意识到自己做出了数据存储于特定位置的假设时,就可以选择不同的保证。

2. 身份标识的分离

实现位置无关性的首要任务是将对象的身份标识与其存储位置分离。当位置成为身份标识的一部分时,对象会与该位置的机器产生某种关联。为了达到最佳效果,用户应能够从任何位置轻松识别对象,而无需进行额外的通信。

下面来看看常见的身份标识机制,先从依赖位置的选项开始,如自增 ID 和 URL,然后再比较与位置无关的选项,如 GUID 和哈希。

3. 自增 ID

在涉及关系型数据库时,经常会使用自增 ID。大多数数据库管理系统在插入操作时会自动生成这些 ID。最常见的对象标识方式就是使用插入表时生成的数字。

自增 ID 是生成唯一主键的好方法,它单调递增,非常适合用于聚簇索引。在插入新记录时,使用递增的主键不会导致页面分裂。它也是理想的外键,比被引用表的其他列更紧凑,并且不会改变。大多数数据库管理系统会采取措施阻止或防止对自增列的更新,以保持其唯一性和作为引用的实用性。

然而,自增 ID 虽然在数据库内部表示身份方面表现出色,但在将身份扩展到数据库之外时却不是一个好选择。尽管使用方便使其成为默

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值