显然,自动识别技术是物联网体系的重要组成部分,借此可以对每个物品进行标识和识别,并可以实时更新数据,是构造全球物品信息实时共享的重要组成部分,是物联网的基石。按照国际自动识别技术的分类标准,自动识别技术可以分为数据采集技术和特征提取技术两大类。......
2023-10-28
谈到对象管理,就要想到对象标识管理。
对象标识(OID)是由系统生成的,用于唯一地标识系统中的每个对象(无论是瞬时的或是永久的,系统创建的还是用户创建的)。永久对象的实现与瞬时对象的实现有所区别,因为前者必须提供全局唯一性。
永久对象标识的实现有两种通用解决方法,即基于物理的标识或基于逻辑的标识,它们各有优缺点。物理标识(POID)方法等同于对应对象物理地址的OID,这个地址可以是磁盘页面地址及其从基地址起始的位移。寻找这个对象的好处是可以直接从OID分析获得。其不利之处是,无论什么时候,当对象移动到不同页面时,所有的父对象和索引的指向都必须更新。
逻辑标识(LOID)方法为每个对象分配一个系统范围内的唯一OID。因为OID是不变的,所以对象的迁移无需额外开销。该方法是建立一个OID表,为每个OID捆绑一个物理对象地址。当然也要付出代价,增加的开销是每次存取对象时都需要查OID表。面向对象数据库系统倾向于使用逻辑标识方法,因为它适合于动态环境。
瞬时对象标识的实现与所使用的程序设计语言有关。
对于永久对象标识,可以是物理标识也可以是逻辑标识。物理标识可以是真实的对象地址,也可以是虚拟的对象地址,这取决于是否提供虚拟存储器。一般来说,物理标识方法更有效,但要求对象不迁移。逻辑标识方法则与面向对象程序设计语言有关,将对象均匀地分配给程序执行的间接表里。这个表存放的是逻辑标识,在Smalltalk里称为OOP(object oriented pointer)。这样,需要有相应机制管理对象的物理标识。对象迁移导致增加的开销是,每存取一次对象需要查一次表。
对象管理器面临的窘境是如何在普遍性和有效性之间恰当地选择折中方案。注意,选定对象的大小也很重要,使用小对象,导致对象标识数量大,可能会使得OID表十分大。所以,对象标识管理与对象存储技术密切相关。
在分布式对象DBMS中,使用LOID更合适,因为那些操作如重组(reclustering)、迁移(migration)、复制(replication)和分片(fragmentation)会频繁发生。但要注意,使用LOID会引起与分布相关的问题,如下。(www.chuimin.cn)
●LOID的生成:LOID在整个分布域里是唯一的。如果LOID在中心节点生成,则容易保证其唯一性。然而,在中心节点生成LOID模式又是我们不希望的,因为这存在潜在的网络开销和负载问题。在多服务器环境里,可以让每个服务器为其节点上的对象生成LOID。LOID的唯一性是通过将服务器标识作为LOID的一部分来得到保证的。因此,LOID由一个服务器标识和一个序列号组成。序列号是对象在磁盘上位置的逻辑表示。在一个特定的服务器中,序列号是唯一的,为了防止误删对象,序列号也不能重用。在对象存取期间,如果LOID里的服务器标识部分不直接用在对象定位标示上,则对象标识符起的是纯LOID的作用。如果使用该LOID的服务器标识符部分,则LOID起的是伪LOID的作用。
●LOID的映射定位和数据结构:LOID-to-POID映射信息的定位很重要。使用纯LOID,如果客户端可以同时直接连接多个服务器,则必须在客户机上呈现LOID-to-POID映射信息。如果使用伪LOID,则在服务器上只需呈现映射信息。映射信息在客户端上的呈现是我们不期望的,因为这种解决方式不是可伸缩的,即映射信息必须在可能存取该对象的所有客户端上更新。
LOID-to-POID映射信息通常以哈希表或B+树的形式存放起来。哈希表能提供快速存取功能,但不能随着数据库的大小而可伸缩。B+树是可伸缩的,但是需要消耗一定数量(取决于LOID数量的多少)的存取时间,需要复杂的并发控制和恢复策略。
在面向对象DBMS中,可以通过属性基于对象值从一个对象导航到另外一个对象,常用的对象是指针。在磁盘上通常采用对象标识符作为指针。然而在内存里,希望使用内存内指针来将一个对象导航到另外一个对象。这样,将磁盘上的指针转换成内存内指针的过程称为指针转换(pointer-swizzling)。通常有两种指针转换机制,分别是基于硬件模式的机制和基于软件模式的机制。
基于硬件模式里,使用操作系统的页面容错机制,即当页面放入内存时,所有指针都被“转换”(swizzled),并指向保留的虚拟存储器帧(virtual memory frames)。与这些保留的虚拟存储器帧对应的数据页面,只有真正存取这些页面时才载入内存。
基于软件模式里,将对象表用于指针转换。也就是说,指针被转换到指向对象表里的一个位置。
基于硬件模式的优点:当跨越一个特殊的对象层次时,由于对每个对象的存取不需要间接关联,因此性能更好。但也有其明显的缺陷:如果分组做得不好,即每页只存取很少几个对象,则页面故障机制的高开销使得基于硬件模式缺乏吸引力。基于硬件模式也不能防止客户去存取页面上已经删除的对象。而且在最坏的分组情况下,基于硬件模式可以耗尽虚拟内存空间。最后,因为基于硬件模式是面向页面的而不是面向对象的,所以很难提供对象级的并发控制、缓冲管理、数据传输和恢复特征。大多数情况下,在对象级操纵数据要好于在页面级操纵数据。
有关分布式数据库技术的文章
显然,自动识别技术是物联网体系的重要组成部分,借此可以对每个物品进行标识和识别,并可以实时更新数据,是构造全球物品信息实时共享的重要组成部分,是物联网的基石。按照国际自动识别技术的分类标准,自动识别技术可以分为数据采集技术和特征提取技术两大类。......
2023-10-28
为了提供恰当的对象存取,这些关系本质上可以将持久对象引导到物理分组。对象分组不太容易实现有两个原因。简单来说,如果给定一个类图,则可有三个基本的对象分组存储模型。然而,只有LOID允许对象的垂直分割和继承关系。主要困难是对象的父母被删除时,这个对象要重新分组。分布式系统中,DSM和NSM适合直接使用水平分割。......
2023-10-28
可串行化是经典数据库事务并发控制的正确性判据。 抽象数据类型集合的前向交换关系兼容和后向交换关系兼容分别如表15.3和表15.4所示。下面从可交换性上来讨论面向对象数据库的事务管理问题。对象系统中,如果使用封锁技术,则封锁颗粒会有变化。这是因为没有把对象的语义考虑在内。ADT上的事务执行需要多级机制。......
2023-10-28
对象从一个节点移动到另外一个节点,这是分布式系统的一个显著特点。这样就产生了新的问题,即对象迁移问题。另外一个问题是必须跟踪对象移动,以便能在其新地点找到该对象。处于激活或等待的对象不允许迁移,否则,会被阻塞。因为对象移动时,必须更新系统目录,以反映新的位置。组合对象的移动会涉及其参考的其他对象的移动,如对象组装方法。......
2023-10-28
SQL:1999[7]是ISO制定的一个国际标准。可以说SQL3是为面向对象SQL而定义的,计划作为对象-关系数据库管理系统的基础。与SQL-92相比,新的语言增加了面向对象的特征。JTC 1中的分委员会SC32负责数据库的标准问题,其中,WG3负责SQL标准,而WG4关注SQL/MM。......
2023-10-28
对象的分布设计比前面介绍的关系分布要复杂。对此,分割类是不容易的,原因是对象模型本身的难度。考虑到类和型的问题,对象世界里的分布设计由于对象状态和方法封装在一起而产生了新的问题。,Cn是不相交的。路径分片是将组合对象分组形成一个分片的概念。这样,索引包含一个指向组合对象的所有成分的指针,避免浏览类......
2023-10-28
从而,死锁是分布式数据库管理系统面临的严肃问题。要采取措施,先要分析是否出现死锁,通常称为死锁检测。等待图是帮助监测的一个有用工具。WFG是一个有向图,表示事务间的等待关系。图9.9是例9.7的WFG。WFG中有环出现就意味着有死锁存在。在分布式系统中,WFG的形式复杂得多,因为两个参与死锁的条件可能出现在不同的节点上,我们把它称为全局死锁。图9.9等待图WFG发现死锁后,就要设法打破死锁。......
2023-10-28
这种泛洪蔓延式的搜索就称为泛洪搜索。数据的定位取决于当前的DHT状态。分布式哈希表提供数据在节点上分布的全局视图。三种策略中,分布式哈希表优势明显,最吸引人。表16.1中心服务器、泛洪搜索和分布式哈希表三者的比较......
2023-10-28
相关推荐