590 likes | 809 Views
数据库技术交流. 大纲. 一、数据库技术发展和演进 二、分布式内存数据库技术发展现状 三、内存数据库的快速索引技术和压缩技术 四、内存数据库和磁盘数据库的区别 五、内存数据库的最新研究成果 六、传统数据库常用的分布式技术研究 七、 NoSQL 数据库的分布式技术研究. 一、数据库技术发展和演进-演进阶段. 以 硬件 为中心 在二十世纪七十年代,数据库的实现方案都把注意力集中在能提供联机的对信息的访问技术,着眼于获得处理效率,并尽可能最少使用价格昂贵的计算机硬件。 那时,能够为特殊硬件平台优化的那些由厂商专卖的即非开放式的数据库,是早期阶段用户唯一可能做出的选择。.
E N D
大纲 • 一、数据库技术发展和演进 • 二、分布式内存数据库技术发展现状 • 三、内存数据库的快速索引技术和压缩技术 • 四、内存数据库和磁盘数据库的区别 • 五、内存数据库的最新研究成果 • 六、传统数据库常用的分布式技术研究 • 七、NoSQL数据库的分布式技术研究
一、数据库技术发展和演进-演进阶段 • 以硬件为中心 • 在二十世纪七十年代,数据库的实现方案都把注意力集中在能提供联机的对信息的访问技术,着眼于获得处理效率,并尽可能最少使用价格昂贵的计算机硬件。 • 那时,能够为特殊硬件平台优化的那些由厂商专卖的即非开放式的数据库,是早期阶段用户唯一可能做出的选择。
一、数据库技术发展和演进-演进阶段 • 以用户为中心 • 二十世纪八十年代,硬件价格下降和个人计算机逐步普及,用户的信息需求显著上升,应用软件的开发生产效率成为关键的成功因素。 • 带有易于理解的、简单的、两维数据模型的关系型数据库管理系统,成为服务于用户查询和满足这类需求的大量报表生成的基础,并得到了广泛采用。
一、数据库技术发展和演进-演进阶段 • 以网络为中心 • Internet得到了迅猛发展,应用系统的架构从采用C/S结构转变为以Web应用为主的处理阶段。 • 随着经济向全球化发展,现代化企业为了要在竞争中取得成功,它们的业务活动已经和日益增加的复杂事务交易应用紧密地联系在一起。 • 企业级的运作活动已涉及巨大数量的数据的采集和利用,越是有能力将更多的用户连接到更多的应用系统功能上去,就越能取得更大的、竞争上的优势。 • 以往的关系数据库系统本身具有的限制,使它难以适应建立以网络为中心的、企业级快速事务交易处理应用的需求,而后关系型数据库技术能为网络为中心环境提供所需的性能、扩展性、互操作性和安全性。
一、数据库技术发展和演进-产品发展 • 层次化数据模型和网状数据模型。 • 特点: • 1.支持三级模式的体系结构,通过三种模式间的互相映射保证了数据库系统的物理独立性和逻辑独立性。 • 2.用存取路径来表示数据之间的联系。 • 3.独立的数据定义语言,模式一旦定义好,就很少修改。 • 4.导航性的数据操纵语言。
一、数据库技术发展和演进-产品发展 • 关系数据库系统。 • 特点: • 1.关系(即表)是唯一的一种数据结构类型。 • 2.关系操作采用关系代数来实现,特点是集合操作。 • 3.关系数据库的语言为非过程化语句,从导航语句中解脱出来。 • 4.采用数据完整性来保证数据的一致性。 • 5.数据独立性好,屏蔽了底层的物理环节。
一、数据库技术发展和演进-产品发展 • 新的应用需要,如面向对象的程序设计环境(CASE)、计算机辅助设计与制造(CAD/CAM)、地理信息系统(GIS)、多媒体应用、基于Web的电子商务,以及其他非商用领域的应用。对数据库提出了新的要求: • 1.存储和处理复杂对象。此类数据往往内部结构复杂,很难用普通关系结构表示。 • 2.支持复杂的数据类型,并要求对数据要有一定的扩展能力。 • 3.需要常驻内存的对象管理以及支持大量对象的存取和计算。 • 4.实现程序设计语言和数据库语言无缝地集成。
二、分布式内存数据库技术发展现状 • 经典的MySQL集群,通过读写分离,水平切分,实现海量数据存储。为应对海量数据存储,内存数据库同样需要做集群。垂直和水平切分策略,可用性策略与MySQL集群架构设计基本相同。如图所示,其中Ameoba是分布式数据库代理,它进行数据路由等控制。 • 唯一的不同是,由于内存数据库的高性能,可以不再进行读写分离设计。
二、分布式内存数据库技术发展现状 • 内存数据最终仍需要持久化到磁盘。这里需要一种混合分区(Hybrid Shard)来解决。即原来一个MySQL节点承担的一个水平分区,将由一个内存数据库节点和一个MySQL节点共同组成。 • 这种数据库架构将形成由两级数据库(2LDB),混合分区构成的集群。如图所示:
二、分布式内存数据库技术发展现状 • 通过引入内存数据库作为中间持久层,再加入分布式架构以支撑海量数据访问,这种架构设计颇具挑战。最先而易见的情况就是新架构的复杂度,正如大规模MySQL集群架构诞生初始一样。
二、分布式内存数据库技术发展现状 • 以 H2 ,一个开源的高性能内存数据库为例对所面临的挑战进行说明: • 1、整合 Ameoba 与 H2:Ameoba 是分布式数据库代理,它与 MySQL 整合已经在阿里巴巴核心业务中成功运用。如果仅将数据库节点看作一个存储,MySQL Node 和 H2 Node 并无本质区别。JDBC驱动,DB切分,路由,皆由Ameoba 统一负责。 • 2、分布式事务:数据库切分架构带来分布式事务问题,对一些事务要求较高的场景,这颇具挑战。目前一种比较一致意见和做法就是冷处理——尽量不用事务。 一致性问题根据业务的特点,采用数据订正来解决;个别业务使用补偿事务。因为目前大部分应用,即便是核心业务,对事务的要求也不高。
二、分布式内存数据库技术发展现状 • 3、高可用性:内存数据库一旦崩溃,数据不复存在。因此首先要做到数据快速异步写入MySQL作持久化存储。同时要有健壮的容错和failover机制,保证一个H2节点崩溃,同一逻辑分区中的替补H2节点立即顶替工作: • 一种方案是分布式数据库代理如 Ameoba 来解决,例如:每个Shard,H2至少设2个节点,采用Primary-Secondary模式,如图所示。
三、内存数据库的快速索引技术和压缩技术 • 内存数据库的索引选择应结合存储介质的特点,从而通过索引的建立保证内存数据库查询操作的高效性。 • 目前内存数据库常用的索引结构有hash索引和T树索引。 • hash索引:
三、内存数据库的快速索引技术和压缩技术 • T树索引:内存数据库中目前较广泛使用的一种树是结合B树和AVL树进化而来的T树。
三、内存数据库的快速索引技术和压缩技术 • 为提高内存空间利用率,在内存数据库的存储结构上进行了广泛的研究,采用空间效率和存储效率更高的存储结构。 • 研究主要集中在研究内存数据库中用于保存记录信息和索引节点信息的数据结构如何组织。 • 1、对索引存储结构的改进:在索引节点中直接保存相应记录的地址信息。 • 2、对记录数据存储结构的改进:使用基于域的存储结构。
三、内存数据库的快速索引技术和压缩技术 • 压缩技术 • 编码、控制抑制、行程编码、模式替代、差值压缩、变长编码和LZW压缩。
四、内存数据库和磁盘数据库的区别 • 传统数据库包括Oracle和MySQL等,如果按照数据存储的介质,我们可以把它们称为硬盘数据库,因为数据是存放在外部存储介质当中的。 • 相对应,还有一种数据库我们可以称它为内存数据库,它的数据全部存储在内存里,使用比较普遍的产品包括Oracle的TimesTen以及IBM的SolidDB等。
四、内存数据库和磁盘数据库的区别 • 比较:
四、内存数据库和磁盘数据库的区别 • 比较: • 1、存储介质:内存数据库处理的数据在内存;磁盘数据库的出具常驻磁盘。 • 2、系统特征: • (1)存取时间上的数量级的差别; • (2)磁盘是永久性的存储器,内存是易失型的; • (3)磁盘是块存储,内存是字节或字存储; • (4)数据的存储组织方式对性能影响不同,比如随机存取和顺序存取; • (5)存取方式不同,内存可由处理器直接存取。
四、内存数据库和磁盘数据库的区别 • 3、算法设计目标:磁盘数据库的算法设计目标是最少的I/O和最大的磁盘空间利用率;内存数据库的设计目标是CPU和内存空间的高效使用。 • 4、数据组织:对于磁盘,顺序存取的速度远高于随机存取,数据组织常用“记录集群”;对于内存,随机存取同样高效,因而无需使用“记录集群”。 • 5、查询处理:磁盘数据库查询的优化策略主要针对较少磁盘的存取次数;内存数据库要求极力减少比较次数。 • 6、恢复:内存数据库的最大弱点是内存的易失性,所以恢复相当重要。
五、内存数据库的最新研究成果 • 商业:(通用级内存数据库) • Oracle Timesten、Altibase、eXtremeDB (实时与嵌入式数据库) • 开源:(实时与嵌入式数据库) • FastDB • 开源:(分布缓存系统,基于memcache和BerkeleyDB开发,Key/Value操作) • MemcacheDB、Dbcached、Tbstore (非开源) • 其他: • 内存表传统数据库提供的内存表,如:sqlite、mysql临时表和内存表
五、内存数据库的最新研究成果 • Oracle TimesTen实时数据管理软件由三个基于内存中数据库、数据复制和高速缓存技术的产品组成。 • 1、内存优化的关系数据库; • 2、支持服务器间的实时数据复制,以获得高可用性和负载共享; • 3、应用程序层中的 Oracle 数据创建实时、 可更新的高速缓存。
五、内存数据库的最新研究成果 • 内存数据库TimesTen与基于磁盘的RDBMS架构比较 :
五、内存数据库的最新研究成果 • TimesTen模型--包括replication 和 Cache Connect:
五、内存数据库的最新研究成果 • Altibase是一个在事务优先的环境中提供高性能和高可用性的软件解决方案。 • Altibase支持客户端/服务器架构或嵌入式架构。 • Altibase产品已经走向混合型数据库。
五、内存数据库的最新研究成果 • ALTIBASE数据库的体系结构如下图所示:
五、内存数据库的最新研究成果 • Altibase复制技术架构:
五、内存数据库的最新研究成果 • eXtremeDB • 实时与嵌入式数据库 • 系统开销少 • 速度达到微秒级 • 完全驻留在主内存中,不使用文件系统(包括内存盘) • 数据管理量在32BIT下能达到20G • 提供C/C++的Library方便程序开发 • SQL(eXtremeSQL)支持 • 日志(eXtremeLog)支持 • 高可用性(eXtremeHA)支持
五、内存数据库的最新研究成果 系统架构: eXtremeDB运行时环境:
五、内存数据库的最新研究成果 eXtremeDB 开发环境: eXtremeSQL 操作概述:
五、内存数据库的最新研究成果 eXtremeDB Kernel Model 数据直接访问: eXtremeDB 日志管理:
五、内存数据库的最新研究成果 eXtremeDB 高可用性设计:
五、内存数据库的最新研究成果 • MemcacheDB • 前端memcached分布式缓存服务器。 • 后端Berkeley DB的持久化存储,异步主辅复制机制。 • 超高性能读写速度。 • 不支持内存对象的遍历操作,不支持复杂的查询操作,以key-value模式访问数据。 • 具备了事务恢复能力、持久化能力和分布式复制能力。 • 相关技术介绍:memcache_engine。
五、内存数据库的最新研究成果 MemcacheDB架构图:
五、内存数据库的最新研究成果 MemcacheDB多线程模式
五、内存数据库的最新研究成果 • DBcached基于 Memcached 和 NMDB 的分布式 key-value 数据库内存缓存系统。 • QDBM 或 Berkeley DB 作为后端数据库。 • DBcached= Memcached + 持久化存储管理器 + NMDB 客户端接口。 • 以key-value模式访问数据。 • 相关技术介绍: • Memcached 是一款高性能的,分布式的内存对象缓存系统。 • NMDB 是一款多协议网络数据库(dbm类)管理器,它由内存缓存和磁盘存储两部分构成,使用 QDBM 或 Berkeley DB 作为后端数据库。 • QDBM 是管理数据库的例程库,读写速度比 Berkeley DB 要快。
五、内存数据库的最新研究成果 • MemcacheDB和DBcached区别: • Memcache 服务器池故障转移导致的数据丢失,DBcached则会请求后端的 NMDB 取回数据。 • MemcacheDB 只使用了 Memcached 的协议和网络层,抛弃了 Memcached 的内存管理部分,而使用 Berkeley DB 数据库自身的缓存来实现,是围绕 Berkeley DB 进行开发的。 • DBcached 的设计方向是发挥 Memcached 的内存缓存性能优势,使之成为一个具有“故障转移”、“数据持久化存储”、“多服务器同时读写”的高并发内存缓存系统,它是围绕 Memcached 进行开发的。
五、内存数据库的最新研究成果 • MemcacheDB和DBcached区别: • Memcache 服务器池故障转移导致的数据丢失,DBcached则会请求后端的 NMDB 取回数据。 • MemcacheDB 只使用了 Memcached 的协议和网络层,抛弃了 Memcached 的内存管理部分,而使用 Berkeley DB 数据库自身的缓存来实现,是围绕 Berkeley DB 进行开发的。 • DBcached 的设计方向是发挥 Memcached 的内存缓存性能优势,使之成为一个具有“故障转移”、“数据持久化存储”、“多服务器同时读写”的高并发内存缓存系统,它是围绕 Memcached 进行开发的。
五、内存数据库的最新研究成果 • Berkeley DB是由sleepycat software开发的轻量级嵌入式数据库,它不仅适用于嵌入式系统,而且可以直接连接到应用程序内部,和应用程序运行在同一地址空间。传统的数据库一般作为独立服务器工作,而Berkeley DB是软件开发库,开发者将它嵌入到应用程序中,应用程序本身就是一个服务器,而只是利用嵌入式数据库开发来实现定制的数据库逻辑,避免了与应用服务器进程间通信的开销,因此Berkeley DB具有较高的运行效率,适用于资源受限的嵌入式系统。
五、内存数据库的最新研究成果 • Berkeley DB数据库系统可以大致分为五个子系统: • 1、存取管理子系统(Access Methods):为创建和访问数据库文件提供基本的支持。在没有事务管理的情况下,模块可单独使用,为应用程序提供快速高效的数据存取服务。 • 2、内存池管理子系统(Memory Pool):是Berkeley DB所使用的通用共享内存缓冲区,可以被应用程序单独使用。 • 3、事务子系统(Transaction):为Berkekey DB提供事务管理功能,保证操作的原则性、一致性和孤立性。适用于对需要事务保证的数据进行修改的场合。 • 4、锁子系统(Locking):提供进程之间以及进程内部的并发管理机制,为系统提供多用户读取和单用户修改同一对象的共享控制,可以被应用程序单独使用。 • 5、日志子系统(Logging):采用的是先写日志的策略,支持事务子系统进行数据恢复,保证数据一致性。
六、传统数据库常用的分布式技术研究 • 分布式数据库系统:分布式数据库系统是为地理上分散、而管理上又需要不同程度集中的信息管理系统,保证分布环境下逻辑集成数据的存取一致性、有效性、完整性等。 • 四个基本功能: • 应用程序的远程数据库操作(包括查询和更新操作)。 • 支持分布式数据库系统完全的或部分的透明性 • 对分布式数据库的管理和控制具有集中式数据库管理系统的功能 • 支持分布事务的并发和恢复。
六、传统数据库常用的分布式技术研究 • 三个主要成分: • 全局数据库管理系统(GDBMS):负责管理分布式数据库(DDB)中的全局数据,功能包括:链接、定位、策略、恢复、转换。 • 局部数据库管理系统(LDBMS):分布式数据库系统中各场地的数据库管理系统。 • 通讯管理程序(CM):保证分布式数据库系统中场地间信息传送。
六、传统数据库常用的分布式技术研究 • 分布式数据库系统的特点: • 物理分布性:数据不是存放在一个站点上; • 逻辑整体性:是与分散式数据库系统的区别; • 站点自治性:是与多处理机系统的区别; • 数据分布透明性; • 集中与自治相结合的控制机制; • 存在适当的数据冗余度7事务管理的分布性。
六、传统数据库常用的分布式技术研究 • 分布式数据库中数据的独立性和分布透明性:数据独立性是指用户或用户程序使用分布式数据库如同使用集中式数据库那样,不必关心全局数据的分布情况,包括全局数据的逻辑分片情况、逻辑片段站点位置的分配情况,以及各站点上数据库的数据模型等。也就是说,全局数据的逻辑分片、片段的物理位置分配,各站点数据库的数据模型等情况对用户和用户程序透明。所以,在分布式数据库中分布独立性也称为分布透明性。 • 分布透明性包括几个层次: • 分片透明性(完全分布透明性) • 位置透明性(中级分布透明性) • 局部数据模型透明性(低级分布透明性) • 无分布透明性:异构数据
六、传统数据库常用的分布式技术研究 • 按照不同标准描述分布式数据库系统的分类: • 按局部数据库管理系统的数据模型分类: • 同构性(homogeneous)(分为同构同质型和同构异质型)DDBS • 异构性(heterogeneous)DDBS • 按分布式数据库系统的全局控制系统类型分类: • 全局控制集中型DDBS • 全局控制分散型DDBS • 全局控制可变型DDBS
六、传统数据库常用的分布式技术研究 • 按照不同标准描述分布式数据库系统的分类: • 按局部数据库管理系统的数据模型分类: • 同构性(homogeneous)(分为同构同质型和同构异质型)DDBS • 异构性(heterogeneous)DDBS • 按分布式数据库系统的全局控制系统类型分类: • 全局控制集中型DDBS • 全局控制分散型DDBS • 全局控制可变型DDBS