浅析内存数据库

(整期优先)网络出版时间:2023-08-31
/ 2

浅析内存数据库

张洁鑫

武警警官学院  四川成都  610213

摘要:随着各个领域对实时数据处理的需求不断增长,基于磁盘的数据库系统已无法满足实时处理及近实时处理的需求,通过将数据库核心数据乃至所有数据放在内存中,内存数据库能够满足数据并发访问控制的要求。本文描述了内存数据库的产生背景,阐述了内存数据库的体系结构及其优劣势,对内存数据库做了一个较为全面的介绍。

关键词:实时处理;内存;数据库

一、内存数据库产生背景

1.内存数据库的产生

内存数据库就是把数据放到存储器中进行运算的数据库系统。相比于磁盘,内存的数据读取速率要提高好几个数量级,把大量数据记录到内存中比在硬盘上存取更可以大大提高实际应用的能力。随着科学技术迅猛发展,应用于传统数据管理领域的基于磁盘结构的数据库系统由于较高的延迟已经不能够满足人们对数据库系统的实时的要求,而随着内存价格越来越低以及存储芯片集成度越来越高,这使得存储容量已经不再是限制基于内存的数据库系统产生的瓶颈。

2.内存数据库与磁盘数据库的差异

存储介质性质不同。内存数据库将数据存储在内存中。内存作为易失存储介质,仅能在通电的情况下保存数据。磁盘数据库将数据存储在磁盘中,磁盘作为永久存储介质,能够永久保存数据,并且断电后数据不会丢失。

数据读取差异。在内存数据库中,内存数据库通过指针直接访问数据,使得内存数据库的查询优化与磁盘数据库不同。当数据存储在磁盘上时,无论是数据编址方式还是数据索引方式的优化措施均是以降低I/O次数为最终目的。磁盘数据库通常使用B树、B+树或Hash等索引技术。

二、内存数据库关键技术

内存数据库存储管理的内容就是确定内存数据库数据的组织结构。内存数据库在RAM中存储数据,而内存可以被 CPU直接访问,所以内存数据库数据组织结构的设计目标是为内存数据库的关系表数据和索引提供合适的数据结构以加速数据操作速度和提升有限内存空间的利用率。

1.组织结构

内存数据库中关系的存储通常采用基于关系模型的分级结构,同时还强调了元数据与数据应分区组织以提高数据安全性。存储结构分两层:段和分区。其中,段是可变长的,是内外存 I/O 的单位,也是内存空间分配和数据库恢复的单位。一个段由多个长度固定的分区组成,每个段存放一个关系,但并不要求构成一个段的分区空间上连续。分区则是基本内存分配回收单元,其长度固定。就内存数据库整体而言,整个数据库维护一个段表, 段表中的每一项是一个段控制块。

2.数据索引结构

哈希索引。哈希技术在数据库系统的数据存储和访问中占有重要的地位。它把通过将关键字哈希函数直接映射为对应的存储地址。对内存数据库,哈希仍是一种非常有效的数据组织技术,而且得到了发展,形成了多种形式的哈希方法和技术。

T树T树是一种一个节点中包含多个索引项的平衡二叉树,并且自从它被提出以后早已经迅速应用于内存数据库中并已经进一步成为目前内存数据库中最主要索引结构。作为一种新提出的数据结构,T树的本质是AVL树和B树的结合体。从索引项的大小还是算法的复杂度来说,T树的都要比传统磁盘数据库所用的B+树抑或R树要精简得多。就传统的B+树而言,键值和数据指针都存储在索引项中。但是,在内存数据库中,由于处理器能够根据内存地址使用指针进行随机访问,T树索引项中只需要保存指向数据的指针即可。不论是从空间复杂度上还是消除索引结构本书所带来的问题上,T树都比传统磁盘数据库所使用的B+树强得多。此外,就搜索算法而言,T树的搜索算法采用折半查找,每访问到一个新的索引节点,索引的范围就能够减少一半,这无疑大大加快了数据查找速度。

3.数据库恢复

数据库恢复是用来保证数据库在发生软、硬件故障时,把数据库从错误状态

恢复到一致、正确状态的技术。数据恢复技术是数据库的一个重要组成部分,不仅决定了系统的可靠性,对系统的运行效率也有很大影响,是衡量数据库性能的重要指标。

正是由于内存介质的易失性,内存数据库必须要在磁盘或者其它非易失性存储器中保存它的备份,以防系统崩溃导致内存中的数据丢失。内存数据库恢复处理大体上分为两步,首先是内存数据库在正常运行时每隔规定的时间不间断地将数据库中的数据更新备份到磁盘中储存的数据备份中,其次是在内存数据库崩溃后将被分在磁盘的备份数据恢复到内存中去以供处理器调用。

与传统的磁盘数据库相比,在内存数据库中,正常事务并不需要访问磁盘数据库的,仅仅在检查点和数据库恢复时才需要访问磁盘上的数据库备份。内存数据库崩溃后,它必须通过存储在磁盘上的备份数据向内存重装数据库,然后在这个备份基础上根据它记载的日志加以操作,从而恢复到最近的一致性状态。

三、内存数据库的优势与劣势

1.内存数据库的主要优点

高性能读写。因为在RAM存储数据,省去了磁盘I/O的开销,减少了数据库的延迟,在数据访问上内存数据库可以达到传统磁盘数据库所不能达到的微秒级别。

扩展简单。内存数据库通常将数据库存储为非结构化或半结构化,非结构的数据使数据库的扩展更加直接,由于存储数据的方式,内存数据库的扩展更加简单。

2.内存数据库的主要缺点

存储容量有限尽管现在内存加容量迅速增大,但与传统外存相比较仍不占优势。外存往往是以TB为单位而内存却多以GB为单位。受限于容量限制的内存,内存数据库并不能用于海量数据的高性能读写,并且没有原生的可扩展机制,不具有扩展能力。因此,对于时下火热的大数据而言,海量数据往往以PB为单位,类似的用来存储大数据数据库并不适合放在内存中。内存数据库适合的场景往往主要局限在较小数据量的高性能操作和运算上。

数据安全问题。内存易失性的特性使得内存数据库更需要注重数据库安全。一旦内存数据库崩溃,与磁盘数据库相比,从物理磁盘恢复数据需要花费更多的时间和代价。因此在使用内存数据库的时候,通常需要提前对内存上的数据采取一些保护机制,比如备份、日志及与磁盘数据库同步等方式保护数据。

四、总结

随着内存容量的加大和价格的降低,内存数据库越来越用在更多的场合。内存数据库具有传统的磁盘数据库无法比拟的优越性,相信解决了内存数据易失的问题,内存数据库会具备更多的应用。

参考文献

[1]张琪. 实时内存数据库的设计与实现[D].武汉科技大学,2008.

[2]郭波. 内存数据库存储管理研究[D].华中科技大学,2012.

[3]梁智兴. 内存数据库恢复技术研究[D].重庆大学,2010.

[4]郭一帆,陈亚峰. 内存数据库关键技术研究[J]. 数字技术与应用,2013,05:141.