化塊前后就近尋找空閑化stgreS化塊分配給數據表,所述空閑化stgreS化塊表記 錄就近分配策略是從空閑化stgreS化塊表記錄中尋找第一個空閑化stgreS化塊,所述常用 數據表分配策略是經常使用的數據表優先分配到較快的化stgreS化塊設備上,所述近期使 用數據表分配策略是將近期使用數據表優先分配到較快的化stgreS化塊設備上,所述冷熱 數據表分層分配策略用于具有兩塊W上不同讀寫速度的化stgreS化塊設備上;
[0041 ]所述回收PostgreS化塊的子模塊用于回收數據表不再使用的PostgreS化塊,從 化stgreS化塊-數據表之間的映射關系表中刪除對應的PostgreS化塊記錄,到空閑表中將 相應化stgreS化塊的記錄設置為空閑;
[0042] 所述定位化stgreS化塊的子模塊用于將數據表中的頁定位到化stgreS化塊設備 指定的位置上;
[0043] 所述讀出PostgreS化塊中數據的子模塊用于讀取指定塊內指定位置指定大小的 數據;
[0044] 所述寫入PostgreS化塊中數據的子模塊用于寫入指定塊內指定位置指定大小的 數據。
[0045] 所述寫入化stgreS化塊中數據的子模塊W加密方式將數據寫入化stgreS化塊中; 相應地,
[0046] 所述讀出PostgreS化塊中數據的子模塊W解密的方式將數據讀出返回給數據庫 業務層。
[0047] 所述加密的方式是采用將用戶密碼與數據異或計算后進行存儲加密的方式;
[0048] 所述解密的方式是采用將用戶密碼與從PostgreS化塊中讀出的數據異或計算后 反回給數據庫業務層加密的方式。
[0049] 所述空閑化stgreS化塊表中的Dev字段對不同的存儲設備進行標識實現擴容。
[0050] 將所述化stgreS化塊-數據表之間的映射關系表和所述空閑化stgreS化塊表從原 庫復制到新庫,將化stgreS化塊存儲設備從原庫所在的計算機遷移到新庫所在的計算機。 [0051 ]所述PostgreSQL塊是分配給PostgreSQL數據庫系統中數據表的最小單位,所述 PostgreS化塊的存儲容量大于4KB,所述PostgreS化塊存儲設備讀寫模塊通過基于 化stgreS化塊存儲設備的數據讀寫方法對所述化stgreS化塊進行讀寫操作。
[0化2]所述化stgreS化塊的存儲容量是8邸的正整數倍。
[0053]所述化stgreS化塊的存儲容量是8邸之2的自然數次方倍。
[0054]所述 PostgreS 化塊的存儲容量是 1MB、2MB、4MB、8MB、16MB、32MB、64MB、128MB、 256MB、512MB或1024MB。
[0055] 一種基于化stgreS化塊存儲設備的數據讀寫方法,利用如前面所述的化stgreS化 塊存儲設備讀寫模塊對如前面所述的化stgreS化塊進行讀寫。
[0056] A、在數據庫后臺驅動層中,PostgreSQL塊存儲設備讀寫模塊的驅動完成對塊文件 的操作,其主要任務為:
[0057] a、通過文件句柄管理器管理上層業務對底層設備的讀寫接口,實現提供高并發的 讀寫接口;
[005引b、實現對化stgreS化塊存儲設備的覆蓋寫,直接定位到化stgreS化塊存儲設備的 指定位置,并寫入指定長度的數據;
[0059] B、根據所述化stgreS化塊-數據表之間的映射關系表oid、表空間定位到指定塊設 備的指定位置,通過表的pageid定位到塊設備的某個偏移。
[0060] 化stgreS化數據庫系統中的每一個表分配有至少一個所述化stgreS化塊,而且可 動態地增量分配化stgreS化塊;
[0061 ] 每個化stgreS化塊可寫入512個8邸的化stgreS化塊數據庫系統的頁,一個塊設備 可W包含無數多個表,一個表將可W包含無限多個化stgreS化塊,運些塊文件信息被保存 在化stgreS化塊-數據表之間的映射關系表內;
[0062] 通過1個oid能獲取到一個數據表的所有化stgreS化塊的信息,而運些化stgreS化 塊信息會順序地組成整個的所述化stgreS化塊-數據表的文件,運個表的pageid郵k就是運 個表內部的偏移,同時也就能夠確定是運個塊文件的第幾個塊,至此獲得我們想要獲取的 頁在塊設備內位置。
[0063] 本發明的化stgreS化塊設備讀寫存儲模塊與現有技術相比具有W下有益效果。
[0064] 1)數據庫的數據將會更為安全。數據庫的數據將按照我們制定的規則保存到塊設 備內,從安全上來說更為安全。而且,由于使用分布式存儲,將會使得數據將會分片保存,并 保存多份到不同的數據節點內,就安全度而言是單磁盤百倍W上。
[0065] 2)查詢速度、讀寫速度能夠有極大提升,在相同的后端存儲情況下能夠達到10% ~20%的速度提升。運個提升對于數據庫而言是十分可觀的。
[0066] 3)數據庫業務和數據分離。只要是同一個版本的數據庫,就能夠在不同的操作系 統中自由遷移。只要能夠通過設定在數據塊頭部的驗證碼,就能夠實現數據庫的直接掛載。 能夠自由的從linux不同版本之間進行遷移,也能夠和windows操作系統平臺進行相互遷 移。
[0067] 4)數據庫在不同的系統之間進行遷移及其簡單,對操作人員專業知識要求不高。
【附圖說明】
[0068] 下面結合附圖和【具體實施方式】對本發明的化stgreS化塊、PostgreS化塊設備讀寫 存儲模塊及基于化stgreS化塊存儲設備的數據讀寫方法作進一步的詳細描述。
[0069] 圖1是現有技術中操作系統的文件系統讀寫分層結構示意圖。
[0070] 圖2是現有技術中操作系統的文件系統存儲空間分配結構示意圖。
[0071] 圖3是現有技術中操作系統的文件系統磁頭讀寫原理示意圖。
[0072] 圖4是本發明的PostgreSQL塊、PostgreSQL塊設備讀寫存儲模塊及基于 化stgreS化塊存儲設備的數據讀寫方法的結構、原理示意圖。
【具體實施方式】
[0073] 實施例一:
[0074] 如圖4所示,本發明的PostgreS化塊是分配給化stgreS化數據庫系統中數據表的 最小單位,所述化stgreS化塊的存儲容量等于4MB。
[00巧]當然,也可W是,所述化stgreS化塊的存儲容量大于4邸。
[0076] 還可W是,所述化stgreS化塊的存儲容量是8邸的正整數倍。
[0077] 又可W是,所述化stgreS化塊的存儲容量是8邸之2的自然數次方倍。
[007引更可W是,所述PostgreS化塊的存儲容量是1MB、2MB、8MB、16MB、32MB、64MB、 128MB、256MB、512MB 或 1024MB。
[0079] 實施例二:
[0080] 如圖4所示,本發明的PostgreS化塊存儲設備讀寫模塊是對PostgreS化塊存儲設 備中如前面所述的化stgreS化塊進行管理的化stgreS化塊存儲設備讀寫模塊。
[0081 ]所述化stgreS化塊存儲設備讀寫模塊可W架構在化stgreSQL數據庫系統上。
[0082] 所述化stgreS化塊存儲設備讀寫模塊通過化stgreS化塊-數據表之間的映射關系 表和空閑化stgreS化塊表對化stgreS化塊存儲設備中的化stgreS化塊進行管理。
[0083] 所述PostgreSQL塊-數據表之間的映射關系表包括字段Re If ilenode、 Rel1:ablespace、Forknum、Blockid、Blockno,所述空閑化 stgreSQL 塊表包括字段 Blockid、 Isfree^Devo
[0084] 所述化stgreS化塊存儲設備讀寫模塊,具有W下子模塊:
[00化]分配化stgreS化塊的子模塊,
[00化]回收化stgreS化塊的子模塊,
[0087] 定位化stgreS化塊的子模塊,
[0088] 讀出化st