多数现有的数据中心都是采用服务器虚拟化技术构建的。服务器虚拟化的实现方式主要有两种。......
2023-11-18
虚拟化是云计算的一个基本概念,虚拟化提供可伸缩性和灵活的计算环境。
虚拟化是指使用虚拟化技术将一台计算机虚拟为多台逻辑计算机。这样,在一台计算机上可以同时运行多台逻辑计算机,每台逻辑计算机上可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术使用软件的方法重新定义和划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,从而提高IT资源的利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
总之,虚拟化是在计算资源上构建一个间接层,隔离特定的实现细节,提供抽象的视图。
在资源和访问之间提供这么一个间接层可以获得甚多好处,可以增加灵活性和敏捷性,减少成本和开销。那么数据管理服务的虚拟化是怎样的呢?
我们可以区分两种虚拟化:物理虚拟化和逻辑虚拟化。物理虚拟化是指在物理设备(如一个端点上的计算节点和另一个端点上的存储系统)上构建抽象层,使得计算节点和存储系统如同在同一个端点一样,尽管它们其实远隔两地。这样所有的基础设施设备,如交换机、路由器都纳入了计算资源的虚拟视图。具体来说,物理虚拟化的抽象对象包括处理器、内存、网络、存储等。
逻辑虚拟化是从非物理角度看虚拟化,这里我们从数据管理角度来分析。
●数据库服务器(database server):数据库服务器负责实时提供数据库服务,在一个多数据库环境中,扮演不要求用户拥有基础软件和硬件设置的角色。
●数据库模式和数据库:这级抽象考虑的是,相同数据库模式(拥有公共数据集和私有数据集)的多个租借者/租户(multiple tenants)或者不同用户组维护各自的数据库。
虚拟化有很多好处,但有得必有失,也有其局限性。首先,物理虚拟化隐蔽了物理资源的细节,但如果应用试图让自己的行为和物理层密切适配,就会显示出不足。在数据库应用中,这也很常见。例如,缓存的大小对数据的物理规划算符(哈希或嵌套循环连接)实现十分重要,优化索引扫描和表格扫描与存储系统密切相关等。虚拟化后就无法借助调整缓存来优化算符实现了。
1.虚拟化软件栈
从数据库应用的角度,可以分层说明虚拟化软件栈。一般将虚拟化软件栈分为四层。
●层1:私有操作系统(private operating system)。
●层2:私有进程/私有数据库(private process/private database)。
●层3:私有模式(private schema)。
●层4:共享表(shared tables)。
1)层1:私有操作系统
在这一层(私有OS),物理虚拟化发生在硬件资源级别(CPU、内存、网络等),可以使用虚拟机管理器(virtual machine monitor),如VMware、Xen[4]或KVM[5]来实现虚拟化。在这一层,数据管理体系结构拥有自己的操作系统、数据库服务器和数据库。结果,不同的应用是隔离的,拥有不同的安全性、性能和可用性。同时,每个应用消耗的资源很多,因为基础硬件的复用率和使用率低。
2)层2:私有进程/私有数据库
这一层开始在数据库服务器中实现逻辑虚拟化。有两种实现方式:每个虚拟数据库服务器以一个或几个专有进程来执行;所有虚拟数据库服务器以服务器实例的形式执行,每个应用在这个服务器上创建一个专有数据库。
这个体系结构中的应用需要的专享资源少于第一层时的情况。从好的方面讲,可伸缩性好多了。
3)层3:私有模式
第三层用于实现数据库级的虚拟化。每个应用访问专有的表和索引,它们随即映射到一个物理数据库上。不同的应用可以以共享方式使用同一个物理数据库。与上面所述层级相比,应用之间的隔离要弱一些,数据库的设施,如缓存管理、日志等都是共享的。第三层的资源使用率和可伸缩性要好于第一、二层,每台机器可支持几千个应用。在这层,需要对现有的数据库管理系统进行修改,以便隐藏其他用户数据库对象和每个应用发生的活动。
4)层4:共享表
第四层是共享表格层,应用共享软件栈的所有成分。在这里,数据库模式(database schema)虚拟化了,让每个应用看到的是一个私有的模式。然而,所有的私有模式都映射到同一个系统模式上。这种形态适用于SaaS应用,每个租户(即应用)使用相同的或相似的数据库模式。通常,这种数据库称为多租户数据库(multi-tenant-databases)。这种虚拟化提供最小的应用间隔。安全性可以强加在应用上,或者在数据库系统上使用行级授权(row-level-authorization)。
由于失去了应用间的自然隔离,所以数据库管理系统的复杂性很高,如查询优化器必须知道交织数据(intermingled data)、数据库运维(备份、恢复或某个租户的迁移)复杂化了。可伸缩性在这里十分显著。
这四层的比较如表17.1所示。
表17.1 四层的比较
注:“-”表示弱,“+”表示强,“++”表示很占优势,“--”表示很弱势。
2.硬件虚拟化
如前所述,硬件虚拟化(hardware virtualization)是第一层,特征是私有操作系统(private OS)。这里,被模拟的是独立的计算机、存储设备和网络基础设施,硬件资源是共享的,操作系统是私有的。
机器(计算机)虚拟化历史要追溯到1972年,IBM公司就在其S/370机上使用了虚拟机管理器的概念,给该机器打上了“Virtual Machine Facility/370”标签。现在,机器虚拟化已十分普遍。在虚拟机环境里,虚拟机管理器会配置在硬件和操作系统之间,与非虚拟化时一样,应用与操作系统打交道。然而,此时操作系统运行在用户模式下,应用的系统调用要由操作系统传递给硬件。熟悉操作系统的读者可知,操作系统存在用户模式和系统模式两个层面,只有系统模式才真正与硬件打交道。因为虚拟化后的操作系统运行在用户模式下,硬件拦截的调用和传递的请求是通过虚拟机管理器运行在(操作系统的)特权模式下实现的。虚拟机管理器处理来自操作系统的请求,将之映射到已存在的硬件上。为了能运行在不同的硬件配置上,虚拟机管理器只提供有限的虚拟硬件成分。因为虚拟硬件成分组是固定的,由运行在不同硬件平台上的虚拟机管理器实现,虚拟机可以方便在不同的硬件间迁移。
3.虚拟存储
虚拟存储(virtual storage)与其他硬件成分(如CPU和内存)的虚拟化类似,但是在数据管理体系结构中,虚拟存储扮演着重要的角色,因为它要负责保存永久的数据,常常是数据敏感应用的瓶颈。在一个灵活、面向服务的体系结构里,更需要关注存储问题。存储的虚拟化允许定义虚拟存储设备,设置了一个间接层。无论何时,应用存取设备时,适当的驱动器或操作系统获取调用,将之重新定向到本地磁盘或者网络上的某个外部存储设备(如磁盘阵列)的某个分区。
引入虚拟存储的好处包含以下几个方面。
●避免和最小化停工期(minimize/avoid downtime):可以按需与系统运行时实现管理虚拟存储设备。这样,一些破坏性操作,如改变RAID的级别或重新对文件系统实现大小分配,都无需停机就可以实施。确切地说,存储的虚拟化允许非破坏性地创建、扩展和删除虚拟存储(逻辑单元),非破坏性地进行数据加固和迁移,非破坏性地重新配置存储器。
●改善性能(improve performance):引入间接层实现虚拟化以后,自然会受到一定的性能惩罚。但存储虚拟化会带来存储性能的改善。虚拟存储可以帮助在多个物理存储器上实现分布,以提高负载均衡。更进一步,虚拟存储可以按需动态分配,数据的存放可以受到控制,避免竞争。
●改善可靠性和可用性(improve reliability and availability):虚拟存储可以大大改善存储目标的可靠性和可用性,例如可以透明地在不同的磁盘和存盘阵列上维护数据副本。
●简化/加固管理(simplify/consolidate administration):虚拟存储给操作系统提供了一致的接口,简化了软件开发和管理。异构的存储系统(无论是物理磁盘还是固态盘)可以统一起来。管理和加固任务,如备份、恢复、归档可以进一步得到简化。
4.模式虚拟化
如前所述,硬件虚拟化提供的是较低级的虚拟化。从数据库应用上看,许多租户也希望获得类似SaaS的服务,使用相同或相似的数据结构或数据库模式。除了有相似的元数据外,许多租户指定的应用会部分地在共享数据库上工作,可以一次存储、多应用使用。因此,从数据管理层面看,许多租户实体(在关系型概念上是表格)不仅有相同的结构,内容上也会有重复。(www.chuimin.cn)
数据库中,租户的数据和元数据的明显复用可以降低数据管理成本,一个多租户数据库的大小显然小于各个租户数据库的总和。为了实现这一点,需要虚拟层为不同的租户提供隔离的视图,让不同的租户在共享数据库上看到的和感觉到的是一个个私有的数据库,这称为模式虚拟化(schema virtualization)。
使用模式虚拟化,多个租户的数据存放在同一个数据库模式里。在数据库模式上,虚拟层为每个租户仿真出一个私有模式。这些私有模式只是虚拟存在。从租户共享内容方式来看,有四种模式虚拟化方式,且共享程度逐次递升。
●公共元数据(common metadata):共享元数据时,租户共享一个表的定义,但表内容不共享。每个租户存取共享表的元组。但是,每个元组只能由一个租户存取。
●本地共享数据(locally shared data):在这个级别共享本地数据,允许租户共享表的定义和表的部分内容。每个租户可以存取元组,其中有些元组允许其他租户存取,但不是让所有租户共享元组。
●全局共享数据(globally shared data):全局共享数据时,租户共享表格的定义和表格部分内容。每个租户可以存取多个元组,有些元组可以让所有租户平等地存取。
●公共数据(common data):租户共享表的定义和表的全部内容。所有租户可以存取所有元组。
表17.2 关系“产品”
应用中往往需要定制,例如在客户关系管理(customer relationship management,CRM)中,应用十分复杂且每个租户安装时需要定制。定制化意味着每个租户看到的是基础数据库基础设施内容上的不同视图。应用的定制常常包括数据库级别上的模式调整,如电子商务中商户需要对表格的属性进行扩展。例如,企业中,一般都会有一个关系“产品”(product),如表17.2所示。
表17.2中,生产方1提供的产品是“M.Phone P1”和“TV 65”等(第一列标示为1),生产方2提供的产品是“M.Phone P2”等(第一列标示为2)。下面对定制化中学者们提出的一些技术和解决方案进行讨论。
1)扩展表格
定制化主要是实现扩充/添加功能。这类扩充/添加服务型功能,往往由服务供应商提供。租户按需登记自己的扩展功能,供应商负责实现。
假设有两个租户分别是两个不同的公司(其业务分别聚焦于手机和电视机,即表17.2中的生产方1和生产方2),它们都有一个表来记录自己的产品。租户1需要对手机产品进行扩充,如增加显示屏大小的描述,如表17.3所示;租户2需要对电视机进行扩展,描述分辨率是高清(1920×1080)还是超高清4 KB(3840×2160),如表17.4所示。
表17.3 租户1的产品表
表17.4 租户2的产品表
租户的虚拟表既包含基表上的列,也包含登记扩展的列。如果租户查询自己的虚拟表,虚拟层会从基表里选取租户要的元组,对其实施与登记扩展的其他表格的连接运算,以便获得所需结果。这个过程很像视图处理。插入、更新和删除操作必须实施在基表和所有登记扩展的列上。插入时,需要将虚拟表上的列分解成基表上的列和扩展的列,然后在基表和扩展表上实施。带谓词的更新和删除操作要求虚拟层确定哪些元组受到影响。虚拟层会探测涉及表里的哪些元组和给定谓词匹配。取决于限定谓词,虚拟层会将元组列表组合或关联起来,构成一个列表。最后传递给所有涉及的表(关系)。
尽管有了扩展表,数据库系统的大多数特征,如约束/限制、索引或聚集在系统表层面依然可用,无需进行修改。不足的是,附加的连接运算会在虚拟层上增加开销。
2)通用表
全称系统模式(generic system schema)允许整合任意的虚拟模式。通用表(universal table)就展示了一种可能的全称系统模式。这里,系统模式包含由固定字节串或字符串的列构成的单一表。通用表的每个元组对应于租户虚拟表里的一个元组。系统负责把每个元组和租户与从属于他/她的虚拟表关联起来。更进一步,创建虚拟表时,系统把每个虚拟表里的列和通用表里的通用列关联。从虚拟表到通用表的映射存放在数据目录里。无论何时,租户往虚拟表里插入一个元组,虚拟层映射每个值到对应的通用列。
表17.3和表17.4的租户1和租户2的产品表可以构成一个通用表(universal table),如表17.5所示。
表17.5 通用表
由表17.5可知,通用表的每一行记录谁(租户)、拥有哪个表(Table)和该虚拟表有哪些列(如表17.5中的Col1和Col2)。
如果租户想查询虚拟表,虚拟层会改写这个查询,使之与通用表相符。每个表的参考指针为通用表所替换,指向的所有列为对应的通用列所替换。此外,虚拟层把每个列的指向封装在新的转移操作(cast operation)里,把值映射回原始技术类型里。
因为全称模式不反映任何应用特点的数据模式,所以提供了最大的定制灵活性。租户可以调节和适配自己的虚拟模式而不会影响系统模式。查询重写程序简单,不会在查询上强加附加连接运算。而必需的迁移操作会引入查询处理的额外开销。更进一步,全称类型化的列阻碍直接的约束保护和索引支持,两者必须直接在原始表上实施。
3)透视表
透视表(pivot table)代表另一种全称系统模式。透视表也称垂直模式(vertical schema),是以三元组形态存储的关系形态。它由五个列组成,包含一个元组和虚拟表的每个值、一个通用化类型列中包含值,其他四个值分别指向租户、虚拟表、虚拟列和该值属于的虚拟元组。表的名称和列名可以直接存放在透视表里,但会产生严重的名字冗余。因此,表名和列名会在规范化后放入附加的系统目录表中,其形态如表17.6所示。
表17.6 透视表
由表17.6可知,透视表用于记录租户、表标识(表中的Table)、行标识(Row)、虚拟表列名(Col)及其值(Value)。
4)块表
块表(chunk table)也是一种解决方案,它将通用表和透视表结合起来。各种虚拟列的数目会很大,但是技术性类型(如整数(Int)、串(String))数目却很少,不高于一个单租户系统。当只有很少技术类型时,可以跨许多虚拟表找到一定的技术类型组合。例如,许多元组可由整数、串对或串三元组组成。块表将租户数据分解成频繁技术类型组合的块(chunk)。系统模式为每个频繁组合构成一个块表,它包含各个块,租户元组伴随块编号以及指向租户的指针、虚拟表和虚拟元组。租户元组可能跨不同的块表,也可能多个块在同一个快表里。系统维护虚拟表的映射。每个列映射到一对一的块表和块号。
块表的形态如表17.7所示。
表17.7 块表
由表17.7可知,按技术类型由整数(Int)和串(String)组合成块,记作Chunk 1和Chunk 2。块表中记录了租户、表标识、行标识、块号及值组合(如1(Int)、M.Phone P1(String)),用%表示空值。
租户查询数据时,虚拟层将该查询改写成块表上的查询。这个映射融合通用表和透视表重写过程。像通用表一样,虚拟层租户表虚拟列指向转至块表上的对应列。类似于透视表,如果同意虚拟表涉及多个块,则执行块表上的自连接(self-join)运算。
其他技术这里不再赘述,有兴趣的读者请参阅参考文献[7]。
有关分布式数据库技术的文章
2003年,采用最新半虚拟化技术实现的开源Xen推出,并在数据中心用户群体中流行开来。Xen的推出使得虚拟化技术的研究和应用更加普及。这项技术改变了x86架构对虚拟化支持的效能,x86架构由此成为虚拟化技术发挥作用的重要平台之一。......
2023-11-18
为了集成海量的、异构的、多形态的数据,首先要将它们的描述统一起来,这就引出了对集成数据的元数据描述和管理的要求。事实上,人们对元数据的理解和认识还存在不少争议,迄今尚未形成真正统一的元数据定义。与数据字典不同,数据仓库主要是将元数据进行分析处理。2)元数据分类元数据广泛存在的多形态导致到目前还没有形成一个统一的分类标准。......
2023-10-28
信息技术的进步为图书馆信息服务创新提供了基础,促使图书馆信息服务向网络化和虚拟化发展。个人云的发展也引起了图书馆界的关注,用户对个人云的使用以及与图书馆服务和资源的关系。个人云服务很有可能成为图书馆未来一个新的服务模式。另一方面要创建图书馆云存储平台,不但可为图书馆提供大量基础设施,还可为用户提供便捷、安全、实时的信息服务。......
2023-07-25
查询优化的本地化分层聚焦于将查询转换成本地数据。一个全局关系可以通过应用重构规则来重构,从而导出一个关系代数程序,其操作数是数据片,这个程序称为本地化程序。将分布查询分配到节点上的自然办法是生成查询,让每个全局关系使用本地化程序来代替。这可以看成是在一棵分布查询的算符树上将叶子用与本地化程序对应的子树来替代。数据水平分片关系的连接也可以简化。......
2023-10-28
目前虚拟化技术在处理器体系结构中,已经占据一席之地。本章所强调的虚拟化技术是指在一个处理器系统[109]中运行多个虚拟处理器系统的技术。因此处理器需要为虚拟化环境设置专门的硬件,以支持多个虚拟处理器系统在一个物理环境中的资源共享。虚拟化技术的核心是通过VMM集中管理物理资源,而每个虚拟处理器系统通过VMM访问实际的物理资源。本章重点关注的是VMM对外部设备的管理,而在外部设备中重点关注对PCI设备的管理。......
2023-10-20
未来,虚拟现实技术将在以下几个领域获得重大进展。产品设计虚拟现实技术可以帮助进行产品设计。这时,应用虚拟现实技术就可以充分显示出其优势。图3-5虚拟现实教学课堂虚拟现实在教育方面有它独特的作用。VR虚拟现实的应用将是一个重大的变革,让很多曾经只可意会不可言传的知识呈现在学生面前,更加直观,更加容易理解。这也是他们希望用前沿的虚拟现实技术来控制火星上的机器人的主要原因,另一方面也减轻宇航员的压力。......
2023-08-18
目前,Xen已应用于许多不同的商业和开源应用程序,如服务器虚拟化、基础设施即服务及桌面虚拟化。此版本Xen的设计是基于半虚拟化技术实现,要求修改客户机操作系统。成立XenSource的目的是为了基于Xen VMM,为用户提供一个完整的虚拟化解决方案。图3-6 Xen 3.0虚拟化架构在Xen虚拟化架构中,虚拟机被称为虚拟域。......
2023-11-18
相关推荐