24、数据库新数据类型与移动计算应用解析

数据库新数据类型与移动计算应用解析

在数据库的发展历程中,早期存储的数据类型相对简单,这也导致早期 SQL 对数据类型的支持较为有限。然而,近年来,数据库对新数据类型的需求日益增长,如时间数据、空间数据和多媒体数据等。同时,移动计算的兴起也为数据库带来了新的挑战和机遇。

1. 时间数据

传统数据库通常只记录当前状态,而在许多应用场景中,存储和检索历史信息至关重要。例如,医疗数据库需要存储患者的病史,工厂控制系统需要分析传感器的当前和历史读数。这种存储世界状态随时间变化信息的数据库被称为时态数据库。

在数据库系统中,时间可分为系统测量的时间和现实世界观察到的时间。一个事实的有效时间是指该事实在现实世界中为真的时间区间集合,而事务时间是指该事实在数据库系统中生效的时间区间,由系统根据事务顺序自动生成。

时态关系是指每个元组都关联一个时间的关系,这个时间可以是有效时间或事务时间。如果同时存储有效时间和事务时间,则称为双时态关系。为了简化表示,每个元组通常关联一个单一的时间区间,对于不连续的时间区间,每个区间的元组会单独表示。

1.1 SQL 中的时间规范

SQL 标准定义了 date、time 和 timestamp 类型。date 类型包含 4 位年份(1 - 9999)、2 位月份(1 - 12)和 2 位日期(1 - 31);time 类型包含 2 位小时、2 位分钟和 2 位秒,还可以有可选的小数部分;timestamp 类型包含 date 和 time 的字段,秒字段有 6 位小数。

由于不同地区有不同的本地时间,SQL 还支持 time with time zone 和 timestamp with time zone 类型,用于指定本地时间与协调世界时(UTC)的差异。此外,SQL 支持 interval 类型,用于表示一段时间,与之前的时间区间概念不同,它不指定具体的开始和结束时间。

1.2 时态查询语言

没有时间信息的数据库关系有时被称为瞬时关系,因为它们反映了现实世界在某一时刻的状态。时态关系在某一时刻 t 的瞬时快照是指该时刻为真的元组集合,去除时间区间属性。

时态选择是涉及时间属性的选择操作,时态投影是投影中元组继承原关系元组的时间值,时态并是结果元组的时间值是参与并操作的元组时间值的交集,如果时间值不相交,则该元组从结果中排除。

已经有多种扩展 SQL 以支持时态数据的提案,SQL:1999 第 7 部分(SQL/Temporal)是目前正在开发的时态扩展标准。

2. 空间数据和地理数据

数据库对空间数据的支持对于基于空间位置的数据的高效存储、索引和查询非常重要。例如,存储一组多边形并查询与给定多边形相交的所有多边形,传统的索引结构如 B 树或关联索引无法高效处理这类查询,需要特殊的索引结构,如 R 树。

2.1 重要的空间数据类型
  • 计算机辅助设计(CAD)数据 :包括关于对象(如建筑物、汽车或飞机)构建方式的空间信息,还包括集成电路和电子设备的设计。
  • 地理数据 :如道路地图、土地利用地图、地形图、政治地图、地籍图等。地理信息系统是专门用于存储地理数据的数据库,许多数据库系统都添加了对地理数据的支持,如 IBM DB2 Spatial Extender、Informix Spatial Datablade 和 Oracle Spatial。
2.2 几何信息的表示

几何信息可以有多种表示方式,以下是一些常见的表示方法:
| 几何结构 | 表示方法 |
| — | — |
| 直线段 | 通过其端点的坐标表示,例如在地图数据库中,一个点的两个坐标可以是其纬度和经度。 |
| 折线 | 由一系列连接的直线段组成,可以通过包含线段端点坐标的列表表示。可以用折线近似表示任意曲线,将曲线分割成一系列线段。 |
| 多边形 | 可以通过按顺序列出其顶点来表示,也可以将多边形分割成一组三角形,每个三角形都带有多边形的标识符。圆和椭圆可以用相应的类型表示,也可以用多边形近似表示。 |
| 三维空间中的点和直线段 | 与二维空间的表示类似,只是点多了一个 z 分量。平面图形(如三角形、矩形和其他多边形)在三维空间中的表示变化不大,四面体和长方体可以用与三角形和矩形相同的方式表示,任意多面体可以通过分割成四面体来表示,也可以通过表示其面(每个面本身是一个多边形)以及面的内外侧来表示。 |

2.3 设计数据库

传统的 CAD 系统在编辑或处理数据时将数据存储在内存中,编辑结束后再写回文件。这种方式存在数据转换成本高、读取文件效率低等问题,对于大型设计,可能无法将整个设计保存在内存中。面向对象的数据库设计很大程度上是由 CAD 系统的需求驱动的,它将设计组件表示为对象,对象之间的连接表示设计的结构。

设计数据库中存储的对象通常是几何对象,二维简单几何对象包括点、线、三角形、矩形和一般多边形,二维复杂对象可以由简单对象通过并、交和差运算形成。三维复杂对象可以由更简单的对象(如球体、圆柱体和长方体)通过相同的运算形成,三维表面也可以用线框模型表示。

设计数据库还存储对象的非空间信息,如材料信息,通常可以用标准的数据建模技术进行建模。在设计过程中,需要进行各种空间操作,如检索特定区域的设计部分,空间索引结构对于这些任务非常有用,空间完整性约束(如“两条管道不应位于同一位置”)对于避免设计错误也很重要,其实现依赖于高效的多维索引结构。

2.4 地理数据

地理数据具有空间性质,但与设计数据有所不同。地图和卫星图像是典型的地理数据,地图不仅可以提供位置信息,还可以提供与位置相关的详细信息,如海拔、土壤类型、土地利用和年降雨量等。

地理数据可以分为两类:
- 线数据 :由二维或多维的位图或像素图组成,例如卫星云覆盖图像,每个像素存储特定区域的云可见性。这些数据可以是三维的,如不同地区不同高度的温度,时间也可以作为一个维度,如不同时刻的地表温度测量值。设计数据库通常不存储线数据。
- 矢量数据 :由基本的几何对象组成,如二维的点、直线段、三角形和其他多边形,以及三维的圆柱体、球体、长方体和其他多面体。地图数据通常以矢量格式表示,河流和道路可以表示为多个直线段的组合,州和国家可以表示为多边形,拓扑信息(如海拔)可以通过将表面分割成覆盖相同海拔区域的多边形,并为每个多边形关联一个海拔值来表示。

2.5 地理数据的表示

地理特征(如州和大湖泊)通常表示为复杂多边形,一些特征(如河流)可以根据其宽度是否重要表示为复杂曲线或复杂多边形。与区域相关的地理信息(如年降雨量)可以表示为数组,为了节省空间,数组可以压缩存储,也可以用四叉树结构表示。

矢量表示在某些应用中比线表示更紧凑,对于某些任务(如绘制道路)更精确,但对于一些本质上基于线数据的应用(如卫星图像)则不适用。

2.6 地理数据的应用

地理数据库有广泛的用途,包括在线地图服务、车辆导航系统、公共事业公司的配电网络信息以及生态学家和规划者的土地利用信息。

基于网络的道路地图服务是地理数据的一个广泛应用,用户可以生成所需区域的在线道路地图,交互式地图便于调整地图大小以定位重要特征。道路地图服务还存储道路和服务信息,如道路路线、速度限制、道路条件、道路连接和单行道信息,用户可以利用这些信息获取从一个地点到另一个地点的指示,并查找所需的酒店、加油站或餐厅。

车辆导航系统安装在汽车上,提供道路地图和旅行规划服务,通常配备全球定位系统(GPS),可以精确确定车辆的当前位置,导航系统可以根据用户的位置、行驶方向和速度查询地理数据库,提供前方服务信息。

随着地下电缆和管道网络的增长,地理数据库对于公共事业公司越来越重要,详细的地图可以帮助避免施工过程中损坏其他公司的电缆,导致大规模服务中断。

2.7 空间查询

涉及空间位置的查询有多种类型:
- 邻近查询 :请求靠近指定位置的对象,例如查找距离给定点一定距离内的所有餐厅。最近邻查询请求距离指定点最近的对象,如查找最近的加油站,这种查询不需要指定距离限制。
- 区域查询 :处理空间区域,询问部分或完全位于指定区域内的对象,如查找给定城市地理范围内的所有零售商店。
- 区域交集和并集查询 :请求区域的交集和并集,例如查询年降雨量低且人口密度高的所有区域。

空间查询通常可以结合空间和非空间要求,例如查找提供素食菜单且每餐费用低于 10 欧元的最近餐厅。由于空间数据本质上是图形化的,通常使用图形查询语言进行查询,查询结果也以图形方式显示。已经有对 SQL 的扩展,允许关系数据库高效存储和检索空间信息,并允许查询混合空间和非空间条件。

2.8 空间数据的索引

传统的索引结构(如关联索引和 B 树)不适用于空间数据,因为它们只处理一维数据,而空间数据通常是二维或多维的。以下是几种用于空间数据索引的结构:
- k - d 树 :通过递归地将空间划分为更小的部分来对空间数据进行索引,类似于二叉树和 B 树对一维数据的处理方式。每个内部节点根据一个维度将空间划分为两部分,交替循环使用不同的维度进行划分,直到节点中的点数小于给定的最大值。k - d - B 树是 k - d 树的扩展,允许每个内部节点有多个子节点,类似于 B 树扩展二叉树,以降低树的高度,更适合二级存储。
- 四叉树 :每个节点关联一个矩形区域,根节点关联整个目标空间。非叶节点将其区域划分为四个相等大小的象限,每个象限对应一个子节点。叶节点的点数在 0 到一个固定的最大值之间,如果一个节点对应的区域点数超过最大值,则会创建子节点。四叉树 PR 用于存储点,其空间划分基于区域。区域四叉树可用于存储数组(线)信息,如果一个节点覆盖的数组值都相同,则该节点为叶节点,否则将其划分为四个子节点。
- R 树 :是一种平衡树结构,用于对矩形和其他多边形进行索引,类似于 B + 树。每个节点关联一个最小边界矩形(MBR),叶节点存储索引的多边形,内部节点存储子节点的 MBR 和指向子节点的指针。MBR 用于加速矩形与索引多边形的重叠检查,如果查询矩形与多边形的 MBR 不重叠,则该多边形也不可能与查询矩形重叠。

R 树的操作包括:
- 搜索 :由于兄弟节点的 MBR 可能重叠,搜索包含一个点的多边形或与给定多边形相交的多边形时,可能需要遍历多个子节点路径。
- 插入 :插入一个多边形时,选择一个叶节点来存储它。理想情况下,选择有空间且其 MBR 包含该多边形 MBR 的叶节点,但可能不存在这样的节点,或者查找成本很高。因此,通常采用启发式算法,从根节点开始遍历,如果某个子节点的 MBR 包含该多边形的 MBR,则随机选择一个;如果都不满足,则选择与该多边形 MBR 重叠最大的子节点继续遍历。如果叶节点已满,则需要对节点进行分裂,分裂时采用启发式方法将节点中的条目划分为两个子集,使得子集的 MBR 总面积或重叠最小。
- 删除 :可以像 B + 树一样进行删除操作,从兄弟节点借用条目或合并兄弟节点,如果节点的填充率低于要求。也可以将填充率不足的节点中的所有条目重新分配给兄弟节点,以提高条目的聚集性。

虽然 R 树的存储效率比 k - d 树和四叉树高,但查询可能更慢,因为需要遍历多个路径。四叉树的空间连接操作比 R 树更简单,因为每个区域的四叉树划分方式相同。由于 R 树与 B 树相似且存储效率高,它及其变体在支持空间数据的数据库系统中很受欢迎。

以下是一个简单的 mermaid 流程图,展示 R 树插入操作的主要步骤:

graph TD;
    A[开始插入多边形] --> B{查找合适的叶节点};
    B -- 有合适叶节点 --> C[插入多边形];
    B -- 无合适叶节点 --> D{选择子节点};
    D -- 子节点 MBR 包含多边形 MBR --> E[随机选择子节点继续遍历];
    D -- 无包含情况 --> F[选择重叠最大子节点继续遍历];
    C --> G{叶节点是否已满};
    G -- 未满 --> H[插入完成];
    G -- 已满 --> I[节点分裂];
    I --> J[更新父节点 MBR];
    J --> H;
    E --> B;
    F --> B;

综上所述,时间数据、空间数据和多媒体数据的处理以及移动计算环境下的数据库应用为数据库领域带来了新的挑战和机遇。通过合理选择和应用相应的数据类型、查询语言和索引结构,可以提高数据库的性能和应用的效率。在移动计算方面,需要考虑设备的特点和限制,采用合适的策略来处理数据的一致性和通信成本等问题。未来,随着技术的不断发展,这些领域的研究和应用将不断深入和拓展。

数据库新数据类型与移动计算应用解析

3. 多媒体数据库

目前,多媒体数据(如图像、声音和视频)大多存储在数据库之外的文件系统中。当存储的多媒体对象数量较少时,这种存储方式没有问题,但当数量增加时,数据库的特性(如事务更新、查询便利和索引)变得至关重要。

3.1 多媒体数据存储面临的问题

将多媒体数据存储在数据库之外会带来一些问题。一方面,难以提供基于多媒体数据实际内容的索引功能;另一方面,可能会导致数据不一致,例如数据库中记录了文件,但文件内容缺失,或者反之。因此,将数据本身存储在数据库中是更可取的做法。

3.2 存储多媒体数据需考虑的方面
  • 支持大对象 :多媒体数据(如视频)可能占用数GB的存储空间,数据库需要支持大对象。大对象可以分割成小片段存储在数据库中,也可以存储在文件系统中,数据库通过指针(通常是文件名)指向该对象。正在开发的 SQL/MED 标准允许将外部数据(如文件)视为数据库的一部分。
  • 连续媒体数据的交付 :某些类型的数据(如声音和视频)需要以恒定的速度交付,这些数据被称为等时数据或连续媒体数据。例如,如果声音数据不能及时提供,会出现声音跳跃;如果提供过快,会导致缓冲区溢出,造成数据丢失。在交付连续媒体数据时,需要协调从磁盘捕获数据的过程,通常按周期捕获数据,每个周期为每个消费者捕获 n 秒的数据并存储在内存缓冲区中,同时将上一周期捕获的数据从缓冲区发送给消费者。周期的选择是一个权衡,短周期使用较少内存但需要更多磁盘臂移动,长周期减少磁盘臂移动但增加内存需求并可能延迟数据的初始交付。当有新请求时,需要进行准入控制,检查是否有足够的资源满足请求。
  • 基于相似性的检索 :在许多多媒体数据库应用中,基于相似性的检索是必要的。例如,在存储指纹图像的数据库中,需要检索与给定指纹图像相似的指纹。传统的索引结构(如 B + 树和 R 树)无法用于此目的,需要创建特殊的索引结构。
3.3 多媒体数据格式

由于多媒体数据需要大量字节来表示,因此压缩存储和传输至关重要。对于图像数据,最常用的格式是 JPEG,它由联合图像专家组(Joint Picture Experts Group)创建。对于视频数据,将每个视频帧编码为 JPEG 格式会造成浪费,因为连续的视频帧通常非常相似。运动图像专家组(Moving Picture Experts Group)开发了 MPEG 系列标准来编码视频和音频数据,这些编码利用了帧序列的相似性以实现更高的压缩率。MPEG - 1 可以将一分钟的视频和音频(每秒 30 帧)存储在约 12.5MB 的空间中(相比之下,仅视频的 JPEG 格式约为 75MB),但会引入一定的视频质量损失,大致相当于 VHS 录像带的质量。MPEG - 2 专为数字广播系统和数字视频光盘(DVD)设计,引入的视频质量损失可忽略不计,它可以将一分钟的视频和音频压缩到约 17MB。音频编码也有多种标准,如 MP3(MPEG - 1 第 3 层)、RealAudio 等。

3.4 连续媒体数据的交付

连续媒体数据(如视频和音频)的系统具有实时信息交付的要求:
- 数据必须足够快地交付,以避免声音或视频结果出现跳跃。
- 数据交付速度不能导致系统缓冲区溢出。
- 不同数据流之间的同步必须保持。

为了以可预测的方式在正确的时间向大量数据消费者提供数据,需要仔细协调从磁盘捕获数据的过程。通常,数据按周期捕获,在每个周期(假设为 n 秒)内,为每个消费者捕获 n 秒的数据并存储在内存缓冲区中,同时将上一周期捕获的数据从缓冲区发送给消费者。周期的选择是一个权衡:短周期使用较少内存但需要更多磁盘臂移动,浪费资源;长周期减少磁盘臂移动但增加内存需求并可能延迟数据的初始交付。当有新请求时,准入控制机制会检查是否有足够的资源(在每个周期内)满足请求,如果可以则允许,否则拒绝。

目前,许多制造商提供视频点播服务器,现有系统基于文件系统,因为现有的数据库系统无法提供这些应用所需的实时响应。视频点播系统的基本架构包括:
| 组件 | 描述 |
| — | — |
| 视频服务器 | 多媒体数据存储在多个磁盘(通常采用 RAID 配置)中,大容量系统可能使用三级存储设备存储访问频率较低的数据。 |
| 终端 | 人们通过各种设备(如个人计算机和连接到小型低成本微型计算机的电视机)观看多媒体数据。 |
| 网络 | 多媒体数据从服务器传输到终端需要高容量的网络。 |

3.5 基于相似性的检索

在许多多媒体应用中,数据在数据库中只是近似描述。以下是一些例子:
- 图形数据 :数据库中表示略有不同的两个图形或图像,用户可能认为它们是相同的。例如,商标注册系统需要识别之前注册的所有相似商标。
- 声音数据 :基于语音识别的用户界面允许用户通过语音发出命令或识别数据元素,需要检查用户输入与系统中存储的命令或数据元素的相似性。
- 手写数据 :手写输入可用于识别数据库中存储的手写数据元素或手写命令,同样需要检查相似性。

相似性的概念通常是主观的且因用户而异,但检查相似性通常比语音或手写识别更成功,因为输入可以与系统中已有的数据进行比较,系统的可选范围有限。有多种算法可用于通过检查相似性找到与给定输入的最佳匹配,一些系统(如基于语音激活的按名称呼叫电话系统)已商业化。

4. 移动计算机与个人数据库

两种技术趋势的结合使得在某些应用中,集中控制和管理的假设不再完全正确:
- 个人计算机(尤其是便携式计算机)的使用越来越广泛。
- 相对低成本的无线数字通信基础设施的发展,基于无线局域网、数字蜂窝分组网络和其他技术。

4.1 移动计算的应用场景

移动计算在许多应用中很有用,例如:
- 许多出差的专业人员使用便携式计算机在旅途中工作和访问数据。
- 快递服务使用便携式计算机跟踪包裹。
- 紧急服务在灾难现场、医疗紧急情况等场景中使用便携式计算机访问信息和输入相关数据。

便携式计算机通过无线电通信,使得机器不再有固定的位置和网络地址。与位置相关的查询是一类受便携式计算机驱动的有趣查询,其中用户(计算机)的位置是查询的一个参数,该参数值由用户提供或越来越多地由全球定位系统(GPS)提供。例如,旅行者信息系统为驾驶员提供酒店、道路服务等数据,对当前路线前方服务的查询处理需要基于用户的位置、移动方向和速度。现在,汽车中越来越多地集成了导航辅助功能。

便携式计算机的电池电量是一种稀缺资源,这一限制影响了系统设计的许多方面。为了提高能源效率,一种有趣的做法是采用数据的定期广播,减少便携式系统发送查询的需求。同时,越来越多的数据由用户管理的机器存储,这些机器有时可能会断开网络连接,这就产生了用户在断开连接时继续工作的需求与数据全局一致性需求之间的冲突。

4.2 移动计算模型

移动计算环境由便携式计算机(称为移动主机)和有线计算机网络组成。移动主机通过称为移动支持站的计算机与有线网络通信,每个移动支持站管理其覆盖区域(称为小区)内的移动主机。移动主机可以在不同小区之间移动,且移动不一定在相邻小区之间进行。在小区域(如建筑物内),移动主机可以通过无线局域网连接,这种连接成本更低,减少了传输负担。

移动主机可以直接通信,但这种通信只能在相邻主机之间进行,随着蓝牙标准的出现,这种直接通信变得更加普遍。蓝牙使用短距离数字无线电,允许在距离小于 10 米的范围内实现高速无线连接(最高可达 721kbps),最初设计用于替代电缆,现在最有前景的应用是便携式计算机、个人数字助理(PDA)、手机和智能应用之间的临时连接。

移动计算的网络基础设施主要由两种技术组成:无线局域网(如 Avaya 的 Orinoco 局域网)和基于分组的蜂窝电话网络。早期的蜂窝系统使用模拟技术,主要用于语音通信,第二代数字系统仍然侧重于语音应用,第三代(3G)和 2.5G 系统基于分组网络,更适合数据应用,语音只是其中一种应用(尽管在经济上很重要)。

蓝牙、无线局域网和 2.5G/3G 蜂窝网络使得各种设备能够以低成本进行通信,这些通信产生的大量会计、控制和管理数据形成了巨大的数据库,由于通信的即时性,需要实时访问这些数据库,这为系统带来了新的限制。

由于许多便携式计算机的尺寸和功率限制,采用了替代的内存层次结构,除了磁盘存储外,还可以包含闪存。如果移动主机包含硬盘,可以允许硬盘在不使用时停止旋转以节省能源。同样,尺寸和能源限制也影响了便携式设备使用的屏幕类型和大小,开发者通常会创建特殊的用户界面来适应这些限制。为了满足基于网络的数据展示需求,无线应用协议(Wireless Application Protocol,WAP)成为无线访问互联网的标准,基于 WAP 的浏览器可以访问使用无线标记语言(Wireless Markup Language,WML)的特殊网页,WML 是基于 XML 设计的,适用于移动和无线网页浏览的限制。

4.3 路由和查询处理

如果两个主机中有一个是移动的,它们之间的路由可能会随时间变化,这对网络层产生了显著影响,因为基于位置的网络地址在系统中不再恒定。

移动计算也直接影响数据库查询处理。在选择分布式查询处理策略时,需要考虑通信成本,而移动计算使通信成本动态变化,增加了优化过程的复杂性。此外,还需要考虑以下几种成本概念:
- 用户时间 :在许多专业应用中,用户时间是非常宝贵的资源。
- 连接时间 :在某些蜂窝电话系统中,连接时间是分配货币成本的单位。
- 传输字节数或数据包数 :在某些数字蜂窝电话系统中,这是计算成本的单位。
- 基于时间的成本 :通信成本根据是否在高峰时段或低谷时段发生而变化。
- 能源消耗 :电池电量是有限的资源,无线通信中接收无线电信号比发射信号消耗的能量少,因此数据的传输和接收对移动主机的能源需求不同。

4.4 广播数据

对于经常请求的数据,由便携式计算机的支持站连续循环传输这些数据通常比根据移动主机的请求传输更可取。例如,股票报价信息就是典型的广播数据。使用广播数据有两个原因:
- 移动主机避免了传输数据请求的能源成本。
- 大量移动主机可以同时接收广播数据,无需额外成本,从而更有效地利用可用的传输带宽。

移动主机可以在数据传输时接收数据,而无需消耗能源发送请求。移动主机可能有非易失性存储来缓存广播数据以供后续使用。对于给定的查询,移动主机可以通过确定是否可以仅使用缓存中的数据来处理查询,以最小化能源成本。如果缓存中的数据不足,有两种选择:等待数据传输或发送数据请求。为了做出这个决定,移动主机需要知道数据的传输时间。

广播数据可以按照固定时间表或可变时间表传输。在固定时间表的情况下,移动主机使用已知的固定时间表确定数据的传输时间;在可变时间表的情况下,需要在已知的无线电频率和已知的时间间隔内传输传输时间表本身。

可以将传输介质建模为具有高延迟的磁盘,数据请求在请求的数据被传输时被视为得到响应,传输时间表类似于磁盘的索引。

以下是一个简单的 mermaid 流程图,展示移动主机处理查询时对广播数据的使用策略:

graph TD;
    A[接收到查询] --> B{缓存数据是否足够};
    B -- 足够 --> C[使用缓存数据处理查询];
    B -- 不足 --> D{数据是否即将广播};
    D -- 是 --> E[等待数据广播];
    D -- 否 --> F[发送数据请求];
    E --> C;
    F --> G[接收数据并处理查询];
4.5 断开连接和一致性

由于无线通信可能按连接时间收费,一些移动主机有动机在相当长的时间段内断开连接。没有无线连接的便携式计算机在使用过程中大部分时间处于断开状态,只有定期连接到其主机计算机(物理连接或通过计算机网络)。

在断开连接期间,移动主机可能仍然可以操作,用户可能会提出查询并请求更新本地存储或缓存的数据,这会带来一些问题:
- 可恢复性 :如果移动主机发生灾难性故障,在断开连接的机器上进行的更新可能会丢失,由于移动主机是单点故障,难以模拟稳定存储。
- 一致性 :本地缓存的数据可能会过时,但移动主机在重新连接之前无法发现这种情况。同样,移动主机上的更新在重新连接之前无法传输。

在分布式系统中,通过物理网络连接时,网络分区被视为一种故障情况,但在移动计算中,通过断开连接进行分区是正常操作的一部分。因此,需要允许在分区情况下继续访问数据,尽管存在数据不一致的风险。

对于仅由移动主机更新的数据,在移动主机重新连接时传输更新相对简单。但如果移动主机缓存了只读数据副本,而其他计算机可能会更新这些数据,缓存的数据可能会变得不一致。当移动主机重新连接时,可能会收到失效通知,告知缓存中哪些条目已过时,但在断开连接期间可能会丢失一些失效通知。一种简单的解决方案是在重新连接时使整个缓存失效,但这种极端方法成本很高。

如果移动主机和系统其他部分都可能进行更新,检测冲突更新会更加困难。基于版本编号的方案允许从断开连接的主机更新共享文件,但这些方案不能保证更新的一致性,而是保证如果两个主机独立更新同一版本的文档,当主机直接交换信息或通过共同主机交换信息时,冲突最终会被发现。

版本向量方案可以检测文档副本独立更新时的不一致性,该方案允许文档副本存储在多个主机中。基本思想是每个主机 i 在存储每个文档 d 的副本时,同时存储一个版本向量 {Vd,i[j]},其中每个条目对应于可能更新该文档的其他主机 j。当主机 i 更新文档 d 时,将版本号 Vd,i[i] 加 1。

当两个主机 i 和 j 相互连接时,在交换更新的文档之前,需要确定副本是否一致:
1. 如果两个主机的版本向量相同(即对于每个 k,Vd,i[k] = Vd,j[k]),则文档 d 的副本相同。
2. 如果对于每个 k,Vd,i[k] ≤ Vd,j[k] 且版本向量不相同,则主机 i 的文档 d 副本比主机 j 的副本旧,主机 i 用主机 j 的副本替换自己的副本和版本向量。
3. 如果存在一对主机 k 和 m,使得 Vd,i[k] < Vd,j[k] 且 Vd,i[m] > Vd,j[m],则副本不一致,即 i 的 d 副本包含主机 k 进行的更新但未传输到主机 j,j 的 d 副本包含主机 m 进行的更新但未传输到主机 i,可能需要手动干预来合并更新。

版本向量方案最初是为处理分布式文件系统中的故障而设计的,由于便携式计算机通常存储与服务器系统中相同的文件副本,实际上构成了一个经常断开连接的分布式文件系统,因此该方案变得更加重要。它也适用于集群系统,其中主机定期连接而不是连续连接,需要交换更新的文档,还适用于复制数据库。

然而,版本向量方案未能解决共享数据更新中更困难和重要的问题,即调和不一致的数据副本。在某些应用中,许多应用可以通过在每台计算机上执行导致远程计算机更新的操作来自动进行调和,如果更新操作可交换(即无论执行顺序如何都产生相同结果),这种解决方案有效。在某些应用中可能有替代技术,但在最坏的情况下,需要用户解决不一致性问题。自动处理这些不一致性以及帮助用户解决无法自动处理的不一致性仍然是一个研究领域。

此外,版本向量方案需要移动主机重新连接时与其支持站进行大量通信,可以将一致性检查推迟到需要数据时进行,但这种延迟可能会增加数据库的全局不一致性。

断开连接的可能性和无线通信成本限制了第 19 章中研究的分布式系统事务处理技术的实际应用。通常,让用户在移动主机上准备事务并要求他们将事务提交到服务器执行更为可取。涉及多台计算机且包含移动主机的事务在事务提交期间可能会面临长时间的阻塞,除非断开连接情况很少或可预测。

综上所述,随着数据库对新数据类型(时间数据、空间数据和多媒体数据)的需求增加以及移动计算的兴起,数据库领域面临着新的挑战和机遇。合理处理这些新数据类型,采用合适的查询语言、索引结构和移动计算策略,可以提高数据库性能和应用效率,满足不断发展的应用需求。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值