乖宝贝网欢迎您的光临!
 

内存数据库优于查询的存储结构的研究与设计

2013-5-14 编辑:admin 来源:乖宝贝网 阅读次数:
  导读:据《硅谷》杂志2012年第23期刊文称,以内存数据库数据存储结构研究重点,以提高数据查询效率为目的,提出在内存数据库现有的N-Array存储结构中利用离散存储结构思想对其改进的方案,并给出具体的设计及实现方式。随后以属性选择查询为主要评估点,对N-Array存储结构和改进的存储结...
据《硅谷》杂志2012年第23期刊文称,以内存数据库数据存储结构研究重点,以提高数据查询效率为目的,提出在内存数据库现有的N-Array存储结构中利用离散存储结构思想对其改进的方案,并给出具体的设计及实现方式。随后以属性选择查询为主要评估点,对N-Array存储结构和改进的存储结构的查询效率进行全方位分析和对比,最后得出结论:改进的存储结构在属性的选择查询上能更好的利用到系统的缓存优势,在内存数据库的查询效率上它是有意义的。
  
  随着当今的应用对数据库的要求越来越高,尤其表现在高实时性的要求上,传统的磁盘数据库已经开始显得很疲惫,很难再有更多的提高[1]。
  在磁盘数据库系统中,数据是以文件格式存储在磁盘上,而在内存数据库中,数据以数据本身的形式直接存储在主存中;同时内存又有着读写速度比磁盘快、相比于磁盘顺序访问的随机访问,所有的的这些特点这些都使得内存数据库在实时性上有着比磁盘数据库先天的优势。目前在国内,中国联通的BSS(BusinessSportSysem,业务支撑系统),中国移动的Boss(Business&OperationSupportSystem,业务运营支撑系统),中国电信的SIN(SharedInformationData,共享信息数据平台),以及HLR(HomeLocationRegister,归属位置寄存器)、VLR(VisitorLoeationRegister,拜访位置寄存器)等,都己开始采用了内存数据库技术[2]。内存数据库的研究及应用正朝者越来越深入与广泛的方向迈进[3]。、
  1内存数据库查询优化的关键点
  数据库的查询优化依赖于数据的存储方法、索引的结构等[4]。在查询优化的策略上,内存数据库和磁盘数据库关键点却是不同的:磁盘数据库查询优化的关键是减少磁盘的访问量(有时甚至用牺牲CPU时间代价的方式来减少磁盘I/O次数)。在内存数据库系统中,当前活动的事务需要访问的所有数据都在内存中,这样就完全没有了事务对磁盘的访问,数据的存在形式不再作为大量磁盘上存储的文件看待而作为内存中能直接寻址到的大量数据。由于通过指针访问数据,I/O不再是系统瓶颈,内存空间利用率和CPU的访问效率则成了内存数据库查询效率优化的关键[5]。
  目前市场上虽然已经存在了一些商业化的内存数据库产品,但它们都不是很成熟。这些产品在存储结构的设计上,更多注重于内存空间的利用率,而忽略了CPU的内存访问效率及缓存的利用问题。这也导致现有内存数据库存储结构已成为当前内存数据库性能可逾越的一大瓶颈。所以业界对内存数据库的新的存储结构的研究与改进也一直在进行中。
  2改进存储结构的研究与设计
  2.1改进存储结构的提出
  在N-Array存储结构中数据表中的记录是连续存放的,并且在记录内部,记录的属性也是按顺序存储。这种结构是非常节省存储空间的,而且实现起来也相对比较简单,目前主流的内存数据库包括SQLite、fastDB、eXtremDB都采用有这种存储结构对数据进行存储。
  然而在内存数据库的实际应用中,N-Array存储结构查询效率却不够理想,尤其是在遇到属性选择查询时。因为在N-Array存储结构中,查询程序要访问某条记录的属性前必须要先要访问到整条记录,然后根据属性在记录内部具体的偏移位置拿到具体的属性值。因此在执行属性选择查询过程中,CPU会产生一些不必要的内存访问;再加上相同的属性值在内存中的不连续分布,查询时也很难充分利用到缓存。
  在离散存储结构中,在对表的数据进行存储时先对表按照其属性进行分区,将一个完整的表划分为多个单独的子表,每个子表存储与原表中对应属性的数据。离散存储结构对表进行分区的思想就是以对提高属性查询效率为初衷的。因为把数据表中相同属性的值存放在一起,在根据某一属性查询时,查询程序就可以直接在相应的子表中进行,这能大大减少了对数据存储区域的访问。再加上相同属性值在内存中连续紧密分布特性,在属性选择查询时CPU也能更有效的利用到缓存。
  但是离散存储结构也有它非常明显的局限性,当属性分区过多,查询性能会下降的特别厉害。由于在离散存储结构中同一条记录属性值的离散分布,它必须要处理数据重组问题。把属于同一记录的属性值组装到一起必须要做子表与子表的连接操作,理论上两个表做连接操作的代价与这两个表的各自记录数相乘的结果成正比,即笛卡尔积。在离散存储结构中,CPU的处理时间会因数据重组而大幅度增加,同时这种数据重组的中间结果也需要大量临时内存来保存直到查询结束,这往往使得离散存储结构有点得不偿失。
  2.2改进存储结构的设计与实现
  改进的存储结构是在N-Array存储结构的上的改进,页面依然作为最基本数据储存单元,一个页面内存放一条或多条记录。不同N-Array存储结构之处在于:在页面内部,记录及其属性的存储策略发生了改变。
  具体而言若要用改进的存储结构在内存页面中存储一个具有有n个属性的数据表时,在页面内就会有n+1个分区。第一个分区为页面头部信息,其余n个分区分别用来存放这n个不同属性的值。假设现有学生表(学号,姓名,年龄),若用改进的存

文章出自:乖宝贝网www.gbb51.com,尊重版权是美德,转载请保留原地址,感谢合作!