欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種PostgreSQL塊存儲設(shè)備讀寫模塊的制作方法

文檔序號:9865603閱讀:940來源:國知局
一種PostgreSQL塊存儲設(shè)備讀寫模塊的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明設(shè)及一種化stgreS化數(shù)據(jù)庫存儲設(shè)備,尤其設(shè)及一種化stgreS化塊存儲設(shè) 備讀寫模塊。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)和物聯(lián)網(wǎng)的發(fā)展,我們迎來了一個海量數(shù)據(jù)的時代,而數(shù) 據(jù)庫內(nèi)保存的數(shù)據(jù)也越來越多,而我們需要的查詢時間反而要越來越小?,F(xiàn)在的眾多應(yīng)用 場景都需要后臺的存儲具有高并發(fā),高容量,高響應(yīng)。高速的入庫需求迫使我們不得不放棄 實時索引,而大數(shù)據(jù)量的數(shù)據(jù)掃描又被存儲端的I/O所限制?,F(xiàn)在的化stgreS化數(shù)據(jù)庫系統(tǒng) 中,高并發(fā)的多數(shù)據(jù)庫掃描需要碰到基本都是隨機讀,而與此同時,普通磁盤的吞吐量已經(jīng) 不能滿足需求。
[0003] 為了適應(yīng)大數(shù)據(jù)量的應(yīng)用場景,官方推出的PostgreS化-XC、PostgreS化-化運兩 個MPP數(shù)據(jù)庫還沒有成熟,而且還存在很多安全性問題。而傳統(tǒng)的提速方案僅僅是利用集中 式存儲的高1/〇(輸入/輸出)來在一定程度上提高整個系統(tǒng)的。但運種提升依舊存在很大的 資源浪費。
[0004] 如圖1所示,原有的化stgreS化數(shù)據(jù)庫系統(tǒng)底層存儲架構(gòu)在文件系統(tǒng)上,從表到磁 盤需要經(jīng)過:表空間,文件系統(tǒng),邏輯卷、磁盤運四層最終才會寫入到物理磁盤內(nèi)。
[0005] 運樣的架構(gòu)首先會使得磁盤的I/O形成衰減。最終的磁盤I/O利用率只能達到80% 左右,甚至更低。其次,當數(shù)據(jù)庫表存在大量小表的情況下,勢必會增加文件系統(tǒng)的壓力。而 且對于數(shù)據(jù)庫操作而言,表的寫入讀出都較為隨機,極容易造成磁盤碎片,而大量的隨機讀 寫,也必將會使得整個數(shù)據(jù)的讀寫性能下降。對于小數(shù)據(jù)量的數(shù)據(jù)庫而言,現(xiàn)有的缺點也許 不明顯。但現(xiàn)在更多的使用場景是大數(shù)據(jù)量、高并發(fā)、高I/O。運些使用場景下,運些缺點將 會大大影響數(shù)據(jù)庫性能。此外在不同的操作系統(tǒng)遷移中也需要極復(fù)雜的數(shù)據(jù)庫遷移操作。
[0006] 普通磁盤的I/O速度較低,傳統(tǒng)的解決方法是使用集中式存儲(即磁盤陣列)。運種 方式只是簡單的提高磁盤的I/O速度,而且成本極高,具有一定的局限性。
[0007] 如圖2和圖3所示,PostgreSQL數(shù)據(jù)庫系統(tǒng)現(xiàn)有的后臺存儲架構(gòu):
[000引數(shù)據(jù)庫的數(shù)據(jù)操作每條記錄都有幾個主要標識。表1D、記錄所在black id、文件類 型、行記錄對應(yīng)的標識?,F(xiàn)有的化stgreS化數(shù)據(jù)庫系統(tǒng)讀寫表操作需要:
[0009] a根據(jù)表1D查找到運個表的表空間,然后定位到文件系統(tǒng)中表空間的位置。
[0010] b根據(jù)文件類型要獲取到指定的表文件。一般一個表會包含巧巾類型的文件。
[001。 fsm文件:其中存放了數(shù)據(jù)表文件中空閑空間的信息。
[0012] vm文件:標記了數(shù)據(jù)表文件中哪些文件塊沒有失效的元組。
[0013] 表數(shù)據(jù)文件:此文件主要用于存儲數(shù)據(jù),但是此文件大小會有一定的限制,普通情 況下會保存2G,超過2G的文件會分文件保存。
[0014] C根據(jù)記錄號W及fsm文件,定位page。
[0015] 而一般的操作系統(tǒng)對于打開的文件數(shù)會有限制。PostgreS化數(shù)據(jù)庫系統(tǒng)內(nèi)部使用 自己的虛擬文件管理來管理文件句柄,來保證能夠同時打開很多的表。對于數(shù)據(jù)庫而言可 能同時存在很多的表,而化stgreS化數(shù)據(jù)庫系統(tǒng)采用1個表多個文件方式來保存數(shù)據(jù)。當打 開一個文件的時候,會首先到文件句柄管理中找一下是不是存在已經(jīng)打開的文件句柄。根 據(jù)文件句柄設(shè)定一下off set。
[0016] d從文件中取到對應(yīng)的page,并取到對應(yīng)的行。
[0017]根據(jù)記錄的blockid定位到文件,讀取指定大小的塊。而運些記錄就保存在page 內(nèi)。
[0018] 現(xiàn)有技術(shù)中,采用集中式存儲作為數(shù)據(jù)庫后端。
[0019] 1、采用集中式存儲(磁盤陣列等)做為存儲后端。把集中式存儲提供的磁盤掛載到 化stgreS化數(shù)據(jù)庫系統(tǒng)所安裝的機器。并根據(jù)不同的操作系統(tǒng)格式化成不同的文件系統(tǒng)。
[0020] 2、把數(shù)據(jù)庫中的數(shù)據(jù)指定到集中式存儲提供的磁盤。
[0021] 此種方法僅僅硬性提高后端的I/O吞吐量,并沒有從原理上提高底層I/O的利用 率。而且就安全性而言,運種方法并沒有對數(shù)據(jù)做任何層面的保護,依舊讓數(shù)據(jù)暴露在外。 只能夠在一定程度上實現(xiàn)數(shù)據(jù)庫系統(tǒng)的提速。但是對于高安全高性能的需求來說,我們不 能僅僅依靠運種純硬件的加速而忽略軟件本身的優(yōu)化。
[0022] W上是原有的化stgreSQL數(shù)據(jù)庫系統(tǒng)存儲架構(gòu)。W上結(jié)構(gòu)存在W下幾個缺點:
[0023] 第一、數(shù)據(jù)庫數(shù)據(jù)文件直接暴露在操作系統(tǒng)中,數(shù)據(jù)存在安全隱患,數(shù)據(jù)安全也就 得不到保證,對于一些對安全級別要求較高的使用環(huán)境而言是個極大的安全漏桐。
[0024] 第二、對磁盤的使用必經(jīng)過文件系統(tǒng)層。
[0025] 就linux系統(tǒng)下較為流行的文件系統(tǒng)而言,采用64位空間來記錄塊數(shù)量和i-節(jié)點 數(shù)量,對于數(shù)據(jù)庫系統(tǒng),可能存在及大量的表,每個表都將可能至少存在3個W上的文件,導(dǎo) 致一個文件夾內(nèi)存在極多的文件。
[0026] 文件系統(tǒng)進行塊分配時,基本上都是按照4K一個塊的模式進行分配。同時我們數(shù) 據(jù)庫申請的時候都是W8K為單位進行申請。也就是說系統(tǒng)分配的塊總是比我們的表的塊要 小。運樣導(dǎo)致的直接問題就是數(shù)據(jù)庫的業(yè)務(wù)塊雜亂的分配到磁盤上。導(dǎo)致的直接問題就是 磁盤尋道時間長,讀寫速度減慢。
[0027] 假如我們的數(shù)據(jù)庫中存在一個極大的表,文件系統(tǒng)在處理的時候效率極其低。例 如,在ext3文件系統(tǒng)中100MB的文件就需要近25600個數(shù)據(jù)塊。而對于PostgreS化數(shù)據(jù)庫系 統(tǒng)而言,達到或超過GB級別的表處理會很常見,而且是隨機的讀寫。
[0028] 第Ξ、文件系統(tǒng)的擴容也非常麻煩。除了已知的極個別商業(yè)文件系統(tǒng)外,其他的文 件系統(tǒng)擴容多會要求關(guān)閉數(shù)據(jù)庫。
[0029] 第四、數(shù)據(jù)庫在不同的系統(tǒng)之間進行遷移及其復(fù)雜,對操作人員專業(yè)知識要求較 局。

【發(fā)明內(nèi)容】

[0030] 本發(fā)明要解決的技術(shù)問題是提供一種PostgreS化塊存儲設(shè)備讀寫模塊,通過該 PostgreS化塊存儲設(shè)備讀寫模塊的讀寫,數(shù)據(jù)庫數(shù)據(jù)文件不會直接暴露在操作系統(tǒng)中,消 除了數(shù)據(jù)存在的安全隱患,數(shù)據(jù)安全也就得到了保證,對于一些對安全級別要求較高的使 用環(huán)境而言消除了一個極大的安全漏桐。
[0031] 為了解決上述技術(shù)問題,本發(fā)明的PostgreSQL塊存儲設(shè)備讀寫模塊是對 化stgreS化塊存儲設(shè)備中的化stgreS化塊進行管理的化stgreS化塊存儲設(shè)備讀寫模塊,所 述化stgreS化塊存儲設(shè)備讀寫模塊架構(gòu)在化stgreS化數(shù)據(jù)庫系統(tǒng)上。
[0032] 所述化stgreS化塊存儲設(shè)備讀寫模塊通過化stgreS化塊-數(shù)據(jù)表之間的映射關(guān)系 表和空閑化stgreS化塊表對化stgreS化塊存儲設(shè)備中的化stgreS化塊進行管理。
[00削所述PostgreSQL塊-數(shù)據(jù)表之間的映射關(guān)系表包括字段Re If ilenode、 Rel1:ablespace、Forknum、Blockid、Blockno,所述空閑化 stgreSQL 塊表包括字段 Blockid、 Isfree^Devo
[0034] 所述化stgreS化塊存儲設(shè)備讀寫模塊,具有W下子模塊:
[0035] 分配化stgreS化塊的子模塊,
[0036] 回收化stgreS化塊的子模塊,
[0037] 定位化stgreS化塊的子模塊,
[0038] 讀出化stgreS化塊中數(shù)據(jù)的子模塊,
[0039] 寫入化stgreS化塊中數(shù)據(jù)的子模塊。
[0040] 所述分配PostgreS化塊的子模塊采用就近分配策略或冷熱數(shù)據(jù)分層分配策略給 化stgreS化數(shù)據(jù)表分配化stgreS化塊,所述就近分配策略是化stgreS化塊就近分配策略或 空閑化stgreS化塊表記錄就近分配策略,所述冷熱數(shù)據(jù)表分層分配策略是常用數(shù)據(jù)表分配 策略或近期使用數(shù)據(jù)表分配策略,所述化stgreS化塊就近分配策略是在數(shù)據(jù)表上次分配的 化stgreS
當前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
上林县| 襄樊市| 阳春市| 会泽县| 澎湖县| 闽清县| 武威市| 东阿县| 石泉县| 宁都县| 济源市| 九江市| 紫云| 雷州市| 永丰县| 清水河县| 石楼县| 昭觉县| 亚东县| 甘洛县| 天门市| 从江县| 镇江市| 洪湖市| 桑植县| 安平县| 河北省| 铜梁县| 民丰县| 洞口县| 安顺市| 历史| 天津市| 十堰市| 彰化市| 迁安市| 同德县| 景德镇市| 廉江市| 永新县| 公安县|