公务员期刊网 论文中心 正文

内存数据库数据结构研究

内存数据库数据结构研究

内存数据库在数据密集型行业领域的日常工作中起到了十分关键的作用,能够实时、高效地满足技术人员对于数据的访问需求。本文分别对内存数据库的记录数据组织结构以及内存数据库的索引数据结构进行了详细地说明和分析,进而对内存数据库的数据结构进行更好地掌握,来不断提升内存数据库的性能。

1内存数据库的记录数据结构

1.1区段式数据结构

从目前的发展情况来看,大部分内存数据都是数据在关系表的基础上所建立的一种关系数据库,而技术人员将数据存储到内存数据库中时,往往使用的是二维关系表来进行的,因此,二维关系表在当前的内存数据库中也得到了广泛的应用。一方面,利用二维关系表保存数据可以维护数据的描述信息。描述信息包含了数据的字段名、表名、索引、类型等内容,这些信息是用于描述数据在关系表中的信息。另一方面,利用二维关系表保存数据可以维护数据的记录信息。记录信息指的是数据被存储在关系表中的每一条记录内容。这类基于关系表的内存数据库通常会采用区段式的数据组织结构,来将内存数据库的共享内存划分为若干个不同的分区,在每一个分区中存储一个内存数据库中的关系;而每一个分区又要分成若干个长度相等的段,这些段就是内存数据库共享内存进行动态分配的一个单位,而内存数据库中的数据,就是存储在段中的一个记录块当中。在内存数据库中采取区段式的数据组织结构,需要对每一项数据都标志其区号、断号以及槽号。这样一来,就可以快速查询到数据在内存数据库中的具体位置,大大提升了数据查询的效率。值得注意的是,数据的分区号必须对应其关系表名;而数据的槽号要对数控在段内的偏移和长度进行记录。

1.2基于对象的数据结构

近年来,基于对象的数据结构技术不断进行发展,因此在内存数据库中也得到了更加广泛的应用,与区段式的数据组织结构成为了内存数据库中两种重要的数据结构。在内存数据库中使用基于对象的数据组织结构时,无论是对数据的存储、记录,还是对数据的索引,都是要通过对象来完成。因此,基于对象的数据组织结构,是以对象为单位,来将内存数据库的共享内存进行分配,主要记录了对象与对象之间,以及索引对象之间的联系,整个内存数据库的运行都是通过对象自身来维持的。基于此,在内存数据库中建立基于对象的数据组织结构时,需要利用指针来维持对象之间的联系,进而达到对数据进行存储、记录、处理以及索引等目的。目前,在内存数据库中应用基于对象的数据组织结构,主要是通过对象之间的联系,来提升对于数据管理工作的效率和质量。相比较于区段式的数据组织结构来说,基于对象的数据组织结构更加简单,只要为各项数据及其记录建立相应的对象,就能够实现对数据的管理工作。

1.3影子内存式数据结构

影子内存式数据组织结构在内存数据库中主要包含了两个部分,第一个部分就是数据在内存数据库中的主拷贝;而另外一个部分,就是数据在内存数据库中的影子拷贝。在内存数据的日常运行当中,每次技术人员在对数据进行查询时,都会同时产生两个地址,一个在内存数据库的主拷贝当中,另一个是在内存数据库的影子内存当中,所产生的双地址先使对内存数据库的影子内存进行试探,在试探失败的情况下再对内粗数据库的主拷贝进行试探。除此之外,在内存数据库中建立影子内存式数据组织结构,在数据进行更新时,主要环节和流程都是在内存数据库的影子内存当中进行,并在内存数据库的活动日志中进行记录;同时,在数据进行提交时,还会在内存数据库的影子内存中产生一个后映像,并拷贝到内存数据库的主拷贝当中。首先,影子内存式数据组织结构将后映像与用户区进行了整合,减少了数据的日志缓冲区,提升了数据管理工作的效率。其次,影子内存式数据组织结构在内存数据库产生故障,或是数据错误时,只删除影子内存中的数据就可以,使数据管理工作更加便捷。

2内存数据库的索引数据结构

2.1磁盘和内存

通常情况下,数据库内部存储的索引构成同磁盘系统中的索引构成存在差异,磁盘中的索引工作是对最小磁盘多次查找及对其内部空间的实际占用,内存中的索引工作不会对磁盘最小化进行多次查找,工作的重心全部放在内存中。因此,内存中的索引工作是最小程度占用内存并使整体时间减少,这种关系构建在磁盘内存的基础上,在索引时不需要保存精确的数值,内在的存储能够为元组指明方向,必要的时候可以对这些指针进行查看以便能够获得精确的数值,这种做法有以下几种优势:第一,通过单一元组内部指针就能够查找到其和内在的精确数值,在一定程度上能够减少磁盘索引的实际大小。第二,在对长段字节索引时可以将长段字节进行压缩,使搜索变得容易。第三,当需要更新磁盘中的索引时,可移动的指针价值会低于移动属性数值。第四,独立元组指针可以对内部任意字段展开访问,索引中使用特别的方式多属性要求将会变少。

2.2哈希索引

这种索引方式会对哈希函数进行定义,使用系统中数据搜索将其传送到哈希函数相匹配的哈希数值进行计算,将索引项目同匹配的哈希数值在某种程度上建立联系。因为储存不同的哈希数值对应的索引数据地址通常是线性变化的,因此使用这种方式能够更加迅速的找出不同哈希数值的第一个地址,通过哈希索引方式完成数据的准确查找往往只用常数复杂的时间。对不同的数据进行索引通常会获得相同的答案,因此需要对不同的哈希值设置动态数据表,用来存储对应的哈希数据搜索记录。想要设置一条索引时,在其中运用哈希函数就可以轻易得到对应的数值,通过获取的数值快速找到哈希值数据库中的第一个地址,将地址信息传送到数据链中。如果想要通过这种方式寻找特定的信息时,可以对索引中存在的数值使用哈希函数获得哈希数值,通过这个数值找到对应的第一个地址,在数据链中找到想要获得的真正地址数据。日常中对哈希索引进行建立和维护并不困难,但选择正确的哈希函数却十分困难,当哈希函数中的哈希数值过小,很可能会使数据链变长,最终导致数据链循环时间过久,工作效率降低。

2.3T树索引

人们在过去使用的大多数磁盘中的数据库都是运用B树这种索引方式,使用B树这种索引方式对数据进行查找能够在一定程度上使磁盘实际查找次数得到减少,提升磁盘内部的I/0效率。在内部存储数据中使用B树方式,会使数据库中实际的覆盖比例降低。现阶段,内部存储数据中使用较多的索引是将B树同AVL树两种相融合最终形成的T形树。这种T形树定点中有数据、指针两种区域,其中数据区域又包括大量的目标,即按照一定顺序组合不同的重要数值,指针区域包括一个父定点指向和两个子定点指向,定点有着边界数值(GLB)和边界数值(LUB)。从内部定点角度说,GLB数值是进行相关操作时上一定点中的最大数据,LUB数值是进行相关操作时下一定点中的最小数据。T形树是一种树形结构,具备优秀的二叉索引属性,在其内部独立定点中存在不同的数据,同时具备着不错的保存修改功能。T树定点还具有两种属性:最小和最大两种充满度,充满度含义为定点中所有信息值的数量。T树在不同定点中存储资料,避免出现大量资料在定点中保存导致数据范围覆盖比例小的状况。定点中数据保存方式使树形结构查询数据总量变小,因为T树型是AVL树型的优化,具备后者的平衡优势,提升实际索引功效。在使用T树这种方式搜索时,主要索引操作有:中序遍历、平衡、旋转及定点维护。哈希索引在查找数值时速度相对较快,T树这种索引方式具备树形索引本身的二叉优势,且内部设计拥有良好的存储属性,这两种索引方式如今应用均较为频繁。

2.4数组索引

用户想要在短暂时间内查询到需要的数据,索引是数据查询中的必备条件。内部存储数据中的索引不能够保存精确的数据,存储时将信息向元组指引,如果有需求可以通过这些指引获得数值。将数组用作一种索引结构优势为占用相对较小的内部空间,内部构成并不复杂,能够在短暂时间完成搜索。这种方式同样有一些缺点,在数据变换时移动的方式为O(n),在不间断移动的环境中效果相对较低,如果查询的背景为相对静止,这种方式为最优的选择。数据索引过程中使用B树结构,受其自身属性影响在搜索时会接触少量的定点。大多数系统运行中将B树优化为B+树,这种方式能够将全部数据存储在内部树枝节点位置,但从内部存储数据角度思考,B树结构优势大于B+树结构,这是因为内部存储时将数据分散保存会造成空间的浪费。B树中内部存储的利用效果较好,因此在内部存储数据时多数使用这种方式。哈希结构连接多用于数据内部存储平稳环境中,它是一种相对静止的结构工作速度较快,但这种优势也对其工作带来一定局限,这种结构只可以在静态环境中使用,如果背景转换为动态它将不会运行,在补充哈希数据表格时需要严格参考其设定的大小,如果预计的数值过小运行的效果将会大幅度下降,如果数值过大将会浪费大量的运行空间。能够扩展的哈希索引使用哈希动态表格,因此并不能知道设定的大小,一个哈希定点能够存储不同的数据,如果容量已满将会自动形成两个定点。

结论:

综上所述,记录数据组织结构和索引数据结构是内存数据库中重要的组成部分,在实际应用的过程中,技术人员必须要根据实际情况来对内存数据库的数据结构进行调整和完善;同时,技术人员在使用内存数据库的同时,还要配以磁盘数据库作为备份数据库,进而更好地防止数据出现丢失、泄露等严重问题。

作者:陈露娟 令狐东杨 单位:贵州轻工职业技术学院

相关文章阅读