一种PostgreSQL块存储设备读写模块制造技术

技术编号:14866295 阅读:48 留言:0更新日期:2017-03-20 13:53
本发明专利技术公开了一种PostgreSQL块存储设备读写模块,所述PostgreSQL块存储设备读写模块对PostgreSQL块存储设备中的PostgreSQL块进行管理的PostgreSQL块存储设备读写模块,所述PostgreSQL块存储设备读写模块架构在PostgreSQL数据库系统上。所述PostgreSQL块存储设备读写模块通过PostgreSQL块-数据表之间的映射关系表和空闲PostgreSQL块表对PostgreSQL块存储设备中的PostgreSQL块进行管理。本发明专利技术的PostgreSQL块存储设备读写模块对数据库的数据读写将会更为安全。数据库的数据将按照我们制定的规则保存到块设备内,从安全上来说更为安全。而且,由于使用分布式存储,将会使得数据将会分片保存,并保存多份到不同的数据节点内,就安全度而言是单磁盘百倍以上。

【技术实现步骤摘要】

本专利技术涉及一种PostgreSQL数据库存储设备,尤其涉及一种PostgreSQL块存储设备读写模块
技术介绍
随着互联网、移动互联网和物联网的发展,我们迎来了一个海量数据的时代,而数据库内保存的数据也越来越多,而我们需要的查询时间反而要越来越小。现在的众多应用场景都需要后台的存储具有高并发,高容量,高响应。高速的入库需求迫使我们不得不放弃实时索引,而大数据量的数据扫描又被存储端的I/O所限制。现在的PostgreSQL数据库系统中,高并发的多数据库扫描需要碰到基本都是随机读,而与此同时,普通磁盘的吞吐量已经不能满足需求。为了适应大数据量的应用场景,官方推出的PostgreSQL-XC、PostgreSQL-XL这两个MPP数据库还没有成熟,而且还存在很多安全性问题。而传统的提速方案仅仅是利用集中式存储的高I/O(输入/输出)来在一定程度上提高整个系统的。但这种提升依旧存在很大的资源浪费。如图1所示,原有的PostgreSQL数据库系统底层存储架构在文件系统上,从表到磁盘需要经过:表空间,文件系统,逻辑卷、磁盘这四层最终才会写入到物理磁盘内。这样的架构首先会使得磁盘的I/O形成衰减。最终的磁盘I/O利用率只能达到80%左右,甚至更低。其次,当数据库表存在大量小表的情况下,势必会增加文件系统的压力。而且对于数据库操作而言,表的写入读出都较为随机,极容易造成磁盘碎片,而大量的随机读写,也必将会使得整个数据的读写性能下降。对于小数据量的数据库而言,现有的缺点也许不明显。但现在更多的使用场景是大数据量、高并发、高I/O。这些使用场景下,这些缺点将会大大影响数据库性能。此外在不同的操作系统迁移中也需要极复杂的数据库迁移操作。普通磁盘的I/O速度较低,传统的解决方法是使用集中式存储(即磁盘阵列)。这种方式只是简单的提高磁盘的I/O速度,而且成本极高,具有一定的局限性。如图2和图3所示,PostgreSQL数据库系统现有的后台存储架构:数据库的数据操作每条记录都有几个主要标识。表ID、记录所在blackid、文件类型、行记录对应的标识。现有的PostgreSQL数据库系统读写表操作需要:a根据表ID查找到这个表的表空间,然后定位到文件系统中表空间的位置。b根据文件类型要获取到指定的表文件。一般一个表会包含3种类型的文件。fsm文件:其中存放了数据表文件中空闲空间的信息。vm文件:标记了数据表文件中哪些文件块没有失效的元组。表数据文件:此文件主要用于存储数据,但是此文件大小会有一定的限制,普通情况下会保存2G,超过2G的文件会分文件保存。c根据记录号以及fsm文件,定位page。而一般的操作系统对于打开的文件数会有限制。PostgreSQL数据库系统内部使用自己的虚拟文件管理来管理文件句柄,来保证能够同时打开很多的表。对于数据库而言可能同时存在很多的表,而PostgreSQL数据库系统采用1个表多个文件方式来保存数据。当打开一个文件的时候,会首先到文件句柄管理中找一下是不是存在已经打开的文件句柄。根据文件句柄设定一下offset。d从文件中取到对应的page,并取到对应的行。根据记录的blockid定位到文件,读取指定大小的块。而这些记录就保存在page内。现有技术中,采用集中式存储作为数据库后端。1、采用集中式存储(磁盘阵列等)做为存储后端。把集中式存储提供的磁盘挂载到PostgreSQL数据库系统所安装的机器。并根据不同的操作系统格式化成不同的文件系统。2、把数据库中的数据指定到集中式存储提供的磁盘。此种方法仅仅硬性提高后端的I/O吞吐量,并没有从原理上提高底层I/O的利用率。而且就安全性而言,这种方法并没有对数据做任何层面的保护,依旧让数据暴露在外。只能够在一定程度上实现数据库系统的提速。但是对于高安全高性能的需求来说,我们不能仅仅依靠这种纯硬件的加速而忽略软件本身的优化。以上是原有的PostgreSQL数据库系统存储架构。以上结构存在以下几个缺点:第一、数据库数据文件直接暴露在操作系统中,数据存在安全隐患,数据安全也就得不到保证,对于一些对安全级别要求较高的使用环境而言是个极大的安全漏洞。第二、对磁盘的使用必经过文件系统层。就linux系统下较为流行的文件系统而言,采用64位空间来记录块数量和i-节点数量,对于数据库系统,可能存在及大量的表,每个表都将可能至少存在3个以上的文件,导致一个文件夹内存在极多的文件。文件系统进行块分配时,基本上都是按照4K一个块的模式进行分配。同时我们数据库申请的时候都是以8K为单位进行申请。也就是说系统分配的块总是比我们的表的块要小。这样导致的直接问题就是数据库的业务块杂乱的分配到磁盘上。导致的直接问题就是磁盘寻道时间长,读写速度减慢。假如我们的数据库中存在一个极大的表,文件系统在处理的时候效率极其低。例如,在ext3文件系统中100MB的文件就需要近25600个数据块。而对于PostgreSQL数据库系统而言,达到或超过GB级别的表处理会很常见,而且是随机的读写。第三、文件系统的扩容也非常麻烦。除了已知的极个别商业文件系统外,其他的文件系统扩容多会要求关闭数据库。第四、数据库在不同的系统之间进行迁移及其复杂,对操作人员专业知识要求较高。
技术实现思路
本专利技术要解决的技术问题是提供一种PostgreSQL块存储设备读写模块,通过该PostgreSQL块存储设备读写模块的读写,数据库数据文件不会直接暴露在操作系统中,消除了数据存在的安全隐患,数据安全也就得到了保证,对于一些对安全级别要求较高的使用环境而言消除了一个极大的安全漏洞。为了解决上述技术问题,本专利技术的PostgreSQL块存储设备读写模块是对PostgreSQL块存储设备中的PostgreSQL块进行管理的PostgreSQL块存储设备读写模块,所述PostgreSQL块存储设备读写模块架构在PostgreSQL数据库系统上。所述PostgreSQL块存储设备读写模块通过PostgreSQL块-数据表之间的映射关系表和空闲PostgreSQL块表对PostgreSQL块存储设备中的PostgreSQL块进行管理。所述PostgreSQL块-数据表之间的映射关系表包括字段Relfilenode、Reltablespace、本文档来自技高网
...

【技术保护点】
一种PostgreSQL块存储设备读写模块,其特征在于:所述PostgreSQL块存储设备读写模块是对PostgreSQL块存储设备中的PostgreSQL块进行管理的PostgreSQL块存储设备读写模块,所述PostgreSQL块存储设备读写模块架构在PostgreSQL数据库系统上。

【技术特征摘要】
1.一种PostgreSQL块存储设备读写模块,其特征在于:所述PostgreSQL
块存储设备读写模块是对PostgreSQL块存储设备中的PostgreSQL块进行
管理的PostgreSQL块存储设备读写模块,所述PostgreSQL块存储设备读
写模块架构在PostgreSQL数据库系统上。
2.根据权利要求1所述的PostgreSQL块存储设备读写模块,其特征在
于:所述PostgreSQL块存储设备读写模块通过PostgreSQL块-数据表之间
的映射关系表和空闲PostgreSQL块表对PostgreSQL块存储设备中的
PostgreSQL块进行管理。
3.根据权利要求2所述的PostgreSQL块存储设备读写模块,其特征在
于:所述PostgreSQL块-数据表之间的映射关系表包括字段Relfilenode、
Reltablespace、Forknum、Blockid、Blockno,所述空闲PostgreSQL块表
包括字段Blockid、Isfree、Dev。
4.根据权利要求3所述的PostgreSQL块存储设备读写模块,其特征在
于:所述PostgreSQL块存储设备读写模块,具有以下子模块:
分配PostgreSQL块的子模块,
回收PostgreSQL块的子模块,
定位PostgreSQL块的子模块,
读出PostgreSQL块中数据的子模块,
写入PostgreSQL块中数据的子模块。
5.根据权利要求4所述的PostgreSQL块存储设备读写模块,其特征在
于:
所述分配PostgreSQL块的子模块采用就近分配策略或冷热数据分层分
配策略给PostgreSQL数据表分配PostgreSQL块,所述就近分配策略是
PostgreSQL块就近分配策略或空闲PostgreSQL块表记录就近分配策略,所
述冷热数据表分层分配策略是常用数据表分配策略或近期使用数据表分配
策略,所述PostgreSQL块就近分配策略是在数据表上次分配的PostgreSQL
块前后就近寻找空闲PostgreSQL块分配给数据表,所述空闲PostgreSQL块
表记录就近分配策略是从空闲PostgreSQL块表记录中寻找第一个空闲

\tPostgreSQL块,所述常用数据表分配策略是经常使用的数据表优先分配到
较快的PostgreSQL块设备上,所述近期使用数据表分配策略是将近期使用
数...

【专利技术属性】
技术研发人员:朱晓伟
申请(专利权)人:深圳市华讯方舟软件技术有限公司深圳市华讯方舟科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1