?

開源數據庫數據存儲的實現路徑分析

2016-12-21 11:11向華偉
電子技術與軟件工程 2016年20期
關鍵詞:數據存儲

向華偉

摘 要 文章首先對PostgreSQL開源數據庫的特點進行了簡要分析,在此基礎上對PostgreSQL開源數據庫的數據存儲實現路徑進行論述。期望通過本文的研究能夠對促進開源數據庫的推廣應用有所幫助。

【關鍵詞】開源數據庫 PostgreSQL 數據存儲

數據庫是一種能夠對數據進行存儲和管理的“倉庫”,它是一個應用領域中通用的數據處理系統,是長期存儲在計算機內可進行共享的數據集合。開源數據庫是未進行加密,源代碼為開放性的數據庫,目前主流的開源數據庫有MySQL數據庫、PostgreSQL數據庫、Ingres r3 數據庫、MaxDB數據庫、InterBase數據庫,每個數據庫均有其特性。本文以PostgreSQL數據庫為對象,重點對其數據存儲的實現路徑進行研究。

1 PostgreSQL開源數據庫的特點分析

PostgreSQL是一款具有豐富特色的開源數據庫管理系統,其不但功能齊全,而且還具有商業級數據庫管理系統的特性,在某些方面甚至超越了商業數據庫。PostgreSQL可在各種平臺上應用,支持異步Copy、預寫日志容錯、表空間機制,同時還支持多種字符編碼,易于擴展,在多用戶并發方面有著極其優異的表現。大體上可將PostgreSQL的特性歸納為以下幾個方面:

1.1 開放性

PostgreSQL支持的數據類型較多,如IP地址、數組、幾何圖元、文本、數值等,同時該數據庫還允許用戶自定義正規的SQL類型。

1.2 可編程性

該數據庫能夠為用戶提供大量的API,如OBDC、Libpq等,給用戶的開發使用提供了條件。

1.3 可定制性

該數據庫可以通過多種編程語言來實現函數功能,如PHP、Ruby、Java、C++等等。對于數據庫而言,函數又被稱之為存儲過程,它的輸出結果可以在查詢中當做表來使用,這一特點使PostgreSQL具備了可定制的特性。

1.4 索引

在PostgreSQL數據庫中,用戶既可以使用數據庫內置的GIN、Hash表、GiST進行索引,也可以自定義索引,GiST作為通用索引的基礎結構,其為多種索引策略的實現提供了支撐。

2 PostgreSQL開源數據庫的數據存儲實現路徑

對于PostgreSQL數據庫而言,在存儲層的設計中,需要重點考慮的問題是應通過何種方式存儲對象規模,尤其是一些大數據的存儲。

2.1 數據外存的實現

2.1.1 relation與外部文件的對應

用戶是PostgreSQL數據庫的使用者,對于這些使用者而言,每一個二維表都是一個邏輯概念,在邏輯當中包含了兩部分內容,一部分是表定義,另一部分是表數據。前者的主要作用是對用戶的邏輯進行展示,它需要被數據庫系統保存,存放表定義的地方即表空間;后者從物理的角度上講,是以文件的形式存儲在操作系統當中,即可存放在系統的表空間當中,也可存放在用戶自定義的表空間當中。數據一般都是以文件的形式被存儲在表空間當中的,換言之數據是表空間的物理外在形式。從代碼的角度進行分析,可通過relpathbackend函數對邏輯概念與物理存儲之間的關系進行查看,具體步驟如下:先按照RelFileNode指定的關系,找出與外存相對應的文件或是文件位置,然后根據入口的第一個參數mode,拼接出外存文件的路徑,再利用mode中的spcNode的值,判斷應當在哪個表空間上進行物理存儲操作,最后便可得出數據的具體存儲位置。

2.1.2 系統relation的存儲

對于PostgreSQL數據庫系統而言,它的relation存儲是將數據存放在預先創建的表空間當中,這里需要創建兩個表空間,一個是base,另一個是global。

2.2 數據內存的實現

從操作系統的角度上講,在PostgreSQL數據庫當中,數據的存儲就是對一些二進制的信息進行存儲,整個存儲過程無法獲悉文件的內容,文件本身的邏輯含義主要取決于應用層面,讀入的數據會存放于數據緩沖區當中,換言之,數據的邏輯含義始于緩沖區。

2.2.1 表數據頁存儲

在PostgreSQL開源數據庫管理系統當中,數據的存儲格式主要有以下幾種類型:系統表數據、日志文件、用戶表數據以及用戶自行創建的數據等。由于數據對象的創建方式存在一定的差別,以序列和視圖為例,它們的創建并不涉及任何數據,僅僅是一個單純的定義,而用戶自定義的表則是由定義和數據兩部分組成,這些信息在實際存儲中,會以tuple的形式存儲于數據庫系統當中,因此,在數據庫的存儲格式中,數據分為兩個部分,一部分為頁頭,另一部分為tuple數據組。根據這一前提條件,通過對PagaAddltem函數中lower和upper變量賦值方式的分析,便可獲得tuple的存儲方式。

2.2.2 大數據的處理

系統表可用于視圖、序列等定義信息的存儲,每個表都是以元祖的形式存儲在pg_class當中。由于每個表均與一個外存文件相對應,其文件名稱則是以該對象的filenode號命名。Relfilenode的結構如下:

typedef struct RelFileNode

{

Oid spcNode; /*tablepace*/

Oid dbNode; /*database*/

Oid relNode; /*relation*/

}Relfilenode;

從上面這個結構當中可以看出,在PostgreSQL數據庫系統當中,表空間、數據庫、關系標識、物理存儲是與該結構唯一對應的。如果一個文件當中存儲的內容過多,在表超過1GB后,這些文件便會被分裂為大小在1GB左右的段,首段的文件名與filenode相同,其余各段則可用filenode1、filenode2、filenode3來表述,由此能夠防止不同操作系統對文件大小的限制。

3 結論

綜上所述,在大數據時代的背景下,開源數據庫已經逐步成為業內研究的重點,尤其是與數據庫關聯最為密切的數據存儲問題,更成為重中之重。本文主要針對主流開源數據庫中的PostgreSQL進行了分析,并對其數據存儲的實現路徑進行了論述,以期能為開源數據庫的推廣使用提供幫助。

參考文獻

[1]蔡佳作,歐爾格力.基于PostgreSQL的地理空間數據存儲管理方法研究[J].青海師范大學學報(自然科學版),2016(06):67-68.

[2]陳愷萌,盧科,岳麗華.PostgreSQL閃存緩沖區置換算法擴展與性能驗證[J].計算機科學與探索,2012(08):54-56.

[3]許彥.基于PostgreSQL存儲引擎的多線程化方法研究與實現[D].武漢:華中科技大學,2012.

[4]董紀英,燕志偉,梁正玉.SQLite、MySQL、PostgreSQL關系型數據庫管理系統比較[J].電腦編程技巧與維護,2014(07):98-99.

作者單位

云南電網有限責任公司信息中心 云南省昆明市 650200

猜你喜歡
數據存儲
簡單的數據修復
大數據時代檔案信息建設的認識和實踐
基于MSP430的Micro SD卡存儲功能實現與評測
基于結構圖設計LDPC碼及其性能仿真
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合