• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      開(kāi)源數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)的實(shí)現(xiàn)路徑分析

      2016-12-21 11:11:51向華偉
      電子技術(shù)與軟件工程 2016年20期
      關(guān)鍵詞:數(shù)據(jù)存儲(chǔ)

      向華偉

      摘 要 文章首先對(duì)PostgreSQL開(kāi)源數(shù)據(jù)庫(kù)的特點(diǎn)進(jìn)行了簡(jiǎn)要分析,在此基礎(chǔ)上對(duì)PostgreSQL開(kāi)源數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)路徑進(jìn)行論述。期望通過(guò)本文的研究能夠?qū)Υ龠M(jìn)開(kāi)源數(shù)據(jù)庫(kù)的推廣應(yīng)用有所幫助。

      【關(guān)鍵詞】開(kāi)源數(shù)據(jù)庫(kù) PostgreSQL 數(shù)據(jù)存儲(chǔ)

      數(shù)據(jù)庫(kù)是一種能夠?qū)?shù)據(jù)進(jìn)行存儲(chǔ)和管理的“倉(cāng)庫(kù)”,它是一個(gè)應(yīng)用領(lǐng)域中通用的數(shù)據(jù)處理系統(tǒng),是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)可進(jìn)行共享的數(shù)據(jù)集合。開(kāi)源數(shù)據(jù)庫(kù)是未進(jìn)行加密,源代碼為開(kāi)放性的數(shù)據(jù)庫(kù),目前主流的開(kāi)源數(shù)據(jù)庫(kù)有MySQL數(shù)據(jù)庫(kù)、PostgreSQL數(shù)據(jù)庫(kù)、Ingres r3 數(shù)據(jù)庫(kù)、MaxDB數(shù)據(jù)庫(kù)、InterBase數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)均有其特性。本文以PostgreSQL數(shù)據(jù)庫(kù)為對(duì)象,重點(diǎn)對(duì)其數(shù)據(jù)存儲(chǔ)的實(shí)現(xiàn)路徑進(jìn)行研究。

      1 PostgreSQL開(kāi)源數(shù)據(jù)庫(kù)的特點(diǎn)分析

      PostgreSQL是一款具有豐富特色的開(kāi)源數(shù)據(jù)庫(kù)管理系統(tǒng),其不但功能齊全,而且還具有商業(yè)級(jí)數(shù)據(jù)庫(kù)管理系統(tǒng)的特性,在某些方面甚至超越了商業(yè)數(shù)據(jù)庫(kù)。PostgreSQL可在各種平臺(tái)上應(yīng)用,支持異步Copy、預(yù)寫(xiě)日志容錯(cuò)、表空間機(jī)制,同時(shí)還支持多種字符編碼,易于擴(kuò)展,在多用戶(hù)并發(fā)方面有著極其優(yōu)異的表現(xiàn)。大體上可將PostgreSQL的特性歸納為以下幾個(gè)方面:

      1.1 開(kāi)放性

      PostgreSQL支持的數(shù)據(jù)類(lèi)型較多,如IP地址、數(shù)組、幾何圖元、文本、數(shù)值等,同時(shí)該數(shù)據(jù)庫(kù)還允許用戶(hù)自定義正規(guī)的SQL類(lèi)型。

      1.2 可編程性

      該數(shù)據(jù)庫(kù)能夠?yàn)橛脩?hù)提供大量的API,如OBDC、Libpq等,給用戶(hù)的開(kāi)發(fā)使用提供了條件。

      1.3 可定制性

      該數(shù)據(jù)庫(kù)可以通過(guò)多種編程語(yǔ)言來(lái)實(shí)現(xiàn)函數(shù)功能,如PHP、Ruby、Java、C++等等。對(duì)于數(shù)據(jù)庫(kù)而言,函數(shù)又被稱(chēng)之為存儲(chǔ)過(guò)程,它的輸出結(jié)果可以在查詢(xún)中當(dāng)做表來(lái)使用,這一特點(diǎn)使PostgreSQL具備了可定制的特性。

      1.4 索引

      在PostgreSQL數(shù)據(jù)庫(kù)中,用戶(hù)既可以使用數(shù)據(jù)庫(kù)內(nèi)置的GIN、Hash表、GiST進(jìn)行索引,也可以自定義索引,GiST作為通用索引的基礎(chǔ)結(jié)構(gòu),其為多種索引策略的實(shí)現(xiàn)提供了支撐。

      2 PostgreSQL開(kāi)源數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)路徑

      對(duì)于PostgreSQL數(shù)據(jù)庫(kù)而言,在存儲(chǔ)層的設(shè)計(jì)中,需要重點(diǎn)考慮的問(wèn)題是應(yīng)通過(guò)何種方式存儲(chǔ)對(duì)象規(guī)模,尤其是一些大數(shù)據(jù)的存儲(chǔ)。

      2.1 數(shù)據(jù)外存的實(shí)現(xiàn)

      2.1.1 relation與外部文件的對(duì)應(yīng)

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

      2.1.2 系統(tǒng)relation的存儲(chǔ)

      對(duì)于PostgreSQL數(shù)據(jù)庫(kù)系統(tǒng)而言,它的relation存儲(chǔ)是將數(shù)據(jù)存放在預(yù)先創(chuàng)建的表空間當(dāng)中,這里需要?jiǎng)?chuàng)建兩個(gè)表空間,一個(gè)是base,另一個(gè)是global。

      2.2 數(shù)據(jù)內(nèi)存的實(shí)現(xiàn)

      從操作系統(tǒng)的角度上講,在PostgreSQL數(shù)據(jù)庫(kù)當(dāng)中,數(shù)據(jù)的存儲(chǔ)就是對(duì)一些二進(jìn)制的信息進(jìn)行存儲(chǔ),整個(gè)存儲(chǔ)過(guò)程無(wú)法獲悉文件的內(nèi)容,文件本身的邏輯含義主要取決于應(yīng)用層面,讀入的數(shù)據(jù)會(huì)存放于數(shù)據(jù)緩沖區(qū)當(dāng)中,換言之,數(shù)據(jù)的邏輯含義始于緩沖區(qū)。

      2.2.1 表數(shù)據(jù)頁(yè)存儲(chǔ)

      在PostgreSQL開(kāi)源數(shù)據(jù)庫(kù)管理系統(tǒng)當(dāng)中,數(shù)據(jù)的存儲(chǔ)格式主要有以下幾種類(lèi)型:系統(tǒng)表數(shù)據(jù)、日志文件、用戶(hù)表數(shù)據(jù)以及用戶(hù)自行創(chuàng)建的數(shù)據(jù)等。由于數(shù)據(jù)對(duì)象的創(chuàng)建方式存在一定的差別,以序列和視圖為例,它們的創(chuàng)建并不涉及任何數(shù)據(jù),僅僅是一個(gè)單純的定義,而用戶(hù)自定義的表則是由定義和數(shù)據(jù)兩部分組成,這些信息在實(shí)際存儲(chǔ)中,會(huì)以tuple的形式存儲(chǔ)于數(shù)據(jù)庫(kù)系統(tǒng)當(dāng)中,因此,在數(shù)據(jù)庫(kù)的存儲(chǔ)格式中,數(shù)據(jù)分為兩個(gè)部分,一部分為頁(yè)頭,另一部分為tuple數(shù)據(jù)組。根據(jù)這一前提條件,通過(guò)對(duì)PagaAddltem函數(shù)中l(wèi)ower和upper變量賦值方式的分析,便可獲得tuple的存儲(chǔ)方式。

      2.2.2 大數(shù)據(jù)的處理

      系統(tǒng)表可用于視圖、序列等定義信息的存儲(chǔ),每個(gè)表都是以元祖的形式存儲(chǔ)在pg_class當(dāng)中。由于每個(gè)表均與一個(gè)外存文件相對(duì)應(yīng),其文件名稱(chēng)則是以該對(duì)象的filenode號(hào)命名。Relfilenode的結(jié)構(gòu)如下:

      typedef struct RelFileNode

      {

      Oid spcNode; /*tablepace*/

      Oid dbNode; /*database*/

      Oid relNode; /*relation*/

      }Relfilenode;

      從上面這個(gè)結(jié)構(gòu)當(dāng)中可以看出,在PostgreSQL數(shù)據(jù)庫(kù)系統(tǒng)當(dāng)中,表空間、數(shù)據(jù)庫(kù)、關(guān)系標(biāo)識(shí)、物理存儲(chǔ)是與該結(jié)構(gòu)唯一對(duì)應(yīng)的。如果一個(gè)文件當(dāng)中存儲(chǔ)的內(nèi)容過(guò)多,在表超過(guò)1GB后,這些文件便會(huì)被分裂為大小在1GB左右的段,首段的文件名與filenode相同,其余各段則可用filenode1、filenode2、filenode3來(lái)表述,由此能夠防止不同操作系統(tǒng)對(duì)文件大小的限制。

      3 結(jié)論

      綜上所述,在大數(shù)據(jù)時(shí)代的背景下,開(kāi)源數(shù)據(jù)庫(kù)已經(jīng)逐步成為業(yè)內(nèi)研究的重點(diǎn),尤其是與數(shù)據(jù)庫(kù)關(guān)聯(lián)最為密切的數(shù)據(jù)存儲(chǔ)問(wèn)題,更成為重中之重。本文主要針對(duì)主流開(kāi)源數(shù)據(jù)庫(kù)中的PostgreSQL進(jìn)行了分析,并對(duì)其數(shù)據(jù)存儲(chǔ)的實(shí)現(xiàn)路徑進(jìn)行了論述,以期能為開(kāi)源數(shù)據(jù)庫(kù)的推廣使用提供幫助。

      參考文獻(xiàn)

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

      [2]陳愷萌,盧科,岳麗華.PostgreSQL閃存緩沖區(qū)置換算法擴(kuò)展與性能驗(yàn)證[J].計(jì)算機(jī)科學(xué)與探索,2012(08):54-56.

      [3]許彥.基于PostgreSQL存儲(chǔ)引擎的多線(xiàn)程化方法研究與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2012.

      [4]董紀(jì)英,燕志偉,梁正玉.SQLite、MySQL、PostgreSQL關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)比較[J].電腦編程技巧與維護(hù),2014(07):98-99.

      作者單位

      云南電網(wǎng)有限責(zé)任公司信息中心 云南省昆明市 650200

      猜你喜歡
      數(shù)據(jù)存儲(chǔ)
      簡(jiǎn)單的數(shù)據(jù)修復(fù)
      大數(shù)據(jù)時(shí)代檔案信息建設(shè)的認(rèn)識(shí)和實(shí)踐
      淺談電力大數(shù)據(jù)平臺(tái)關(guān)鍵技術(shù)研究與應(yīng)用
      基于Android開(kāi)發(fā)的APP數(shù)據(jù)存儲(chǔ)研究
      哈希算法在物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)中的應(yīng)用
      空難事故跨媒體信息采集與檢索方法的研究
      基于STM32的AD采集與SD卡數(shù)據(jù)存儲(chǔ)
      淺談信息系統(tǒng)工程和POJO模型組件開(kāi)發(fā)
      基于MongoDB的調(diào)查決策系統(tǒng)數(shù)據(jù)存儲(chǔ)方案設(shè)計(jì)
      大型在線(xiàn)式UPS及監(jiān)控系統(tǒng)在中控機(jī)房的應(yīng)用
      科技視界(2016年4期)2016-02-22 13:10:37
      黎川县| 潢川县| 厦门市| 平南县| 青河县| 新疆| 桂林市| 陕西省| 西盟| 岳阳县| 翼城县| 海原县| 灵川县| 新巴尔虎左旗| 邵阳市| 鄂托克前旗| 三门峡市| 博罗县| 读书| 凤翔县| 济源市| 贵港市| 龙海市| 杨浦区| 化隆| 闽清县| 永和县| 定边县| 蕉岭县| 南川市| 合川市| 龙游县| 宁南县| 玛纳斯县| 阿巴嘎旗| 塔河县| 中卫市| 镇巴县| 光泽县| 浦北县| 通化县|