view2postgresql的系統(tǒng)表和數(shù)據(jù)類型

view2postgresql的系統(tǒng)表和數(shù)據(jù)類型

ID:27538945

大?。?2.18 KB

頁數(shù):6頁

時(shí)間:2018-12-04

view2postgresql的系統(tǒng)表和數(shù)據(jù)類型_第1頁
view2postgresql的系統(tǒng)表和數(shù)據(jù)類型_第2頁
view2postgresql的系統(tǒng)表和數(shù)據(jù)類型_第3頁
view2postgresql的系統(tǒng)表和數(shù)據(jù)類型_第4頁
view2postgresql的系統(tǒng)表和數(shù)據(jù)類型_第5頁
資源描述:

《view2postgresql的系統(tǒng)表和數(shù)據(jù)類型》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫

1、View2Postgresql的系統(tǒng)表和數(shù)據(jù)類型和其他人多數(shù)DBMS相比,postgresql在更大程度上使用丫“數(shù)據(jù)驅(qū)動”。為什么這么說呢?按照TomLane的解釋,原因如下:?postgresql使用一套系統(tǒng)表描述數(shù)據(jù)庫表,表中的每一列,每個(gè)索引等等;?除此以外,postgresql同樣使用系統(tǒng)表存儲數(shù)據(jù)類型、函數(shù)、操作符和索引的訪問方法等等信息;?通過增加新的數(shù)據(jù)字典,postgresql可以很方便的擴(kuò)展。我們知道,在關(guān)系數(shù)據(jù)庫屮,為了數(shù)據(jù)庫系統(tǒng)的控制,必須提供數(shù)據(jù)字典的功能。數(shù)據(jù)字典不僅存儲各種對象的描述,而且存儲這些數(shù)據(jù)對象的細(xì)節(jié)信息。K中系統(tǒng)

2、表是Postgresql數(shù)據(jù)庫存放結(jié)構(gòu)元數(shù)據(jù)的地方,表現(xiàn)為存放有系統(tǒng)信息的普通表和視圖。在postgresql每一個(gè)數(shù)據(jù)庫巾都有單獨(dú)的一趕系統(tǒng)表,這麵表人多是在數(shù)據(jù)庫創(chuàng)建吋從template數(shù)據(jù)庫拷貝過來的,描述該數(shù)據(jù)庫的屬性。如果想看源碼的W,可以看看src/include/catalogR隸下的"pg_xxx.h"文件,這牲文件相應(yīng)地定義丫"pg_xxx*?系統(tǒng)表的數(shù)據(jù)結(jié)構(gòu)。另外,indexing.h文件定義了所有的系統(tǒng)表索引,toasting.h定義了所有系統(tǒng)表的TOAST表。2.1基本系統(tǒng)表pg_class表pg_t、lass存儲表以及與表結(jié)構(gòu)類

3、似的數(shù)據(jù)庫對象的信息,包括索引、序列、試圖、復(fù)合數(shù)裾類型、TOAST表等等。每一個(gè)對象在Pg_daSS表中都表現(xiàn)為一個(gè)元組,并且分配一個(gè)OID作為唯一標(biāo)識(該屬性作為隱藏屬性,不能直接訪問)。pg_attribute表pg_attribute表存儲數(shù)掘庠表屮的每個(gè)屬性的信息,對于表的每一個(gè)屬性,都有一個(gè)對應(yīng)的元組描述其屬性,例如屬性名、屬性的數(shù)據(jù)類型、默認(rèn)值、非NULL約朿等等。pg」ndex表pgjndex表存儲索引的具體信息,把索引和索引對應(yīng)的表關(guān)聯(lián)起來。這里需要說明的是,由于索引也是表,所以索引也在pg_class表和pg_attribute表中右

4、對成的元組。因此,pg_index表中的姆個(gè)元組包含索引在pg_class表巾對應(yīng)的元組的OID和基礎(chǔ)表(即索引建立在該表上)的OID,同吋,也包含了計(jì)算索引所使用的表的列的信息以及索引的運(yùn)算表達(dá)式。以上是postgresql數(shù)據(jù)庫中最ffi要的三張系統(tǒng)表,還有很多其他的表就不在此一一列出了,比如pg_tablespace、pg_database等等。這些表的信息"f以通過select語句來獲取。2.2與函數(shù)相關(guān)的系統(tǒng)表pg_proc表pg_proc表對函數(shù)進(jìn)行了定義。每一個(gè)函數(shù)在該表屮都對應(yīng)一個(gè)組,也含函數(shù)名。輸入?yún)?shù)類型,返回類型以及對函數(shù)的定義(可

5、能是文本,可能是一段編譯型語句,也可能是對可執(zhí)行代碼的引用)。編譯過的函數(shù)可以靜態(tài)地鏈接到服務(wù)器上,或者在存儲在共亨庫內(nèi),當(dāng)?shù)谝淮问褂迷搸鞎r(shí)動態(tài)的裁入<這些編譯過的函數(shù)一般都使用C編寫,當(dāng)然理論上你可以有別的選擇。pg」anguage表Pg_langUage表定義了函數(shù)實(shí)現(xiàn)所使用的語言。主耍支持了C語言和SQL語句。一些可選的語言括pl/pgsql、tel和ped。這些語言是由動態(tài)鏈接的處理程序提供支持的,服務(wù)器內(nèi)核并不關(guān)注其中細(xì)節(jié)。以下足一些示例函數(shù):C:int4squarc_int4(int4x)returnx氺x;}把上面的函數(shù)編譯成共享庫文件,這

6、樣聲明:CREATEFUNCTIONsquare(intd)RETURNSint4AS’/path/to/square.so,,’square_int4,LANGUAGE’(T;PL/PGSQL:CREATEFUNCTIONsquare(int4)RETURNSint4AS’beginreturn$1*$1;end;’LANGUAGEplpgsql’與聚集函數(shù)相關(guān)的系統(tǒng)表2.3pg_aggregate表pg_aggregate表定義了我們熟悉的這些聚集函數(shù),比如:min()、max()、count()等。特個(gè)聚集函數(shù)涉及一個(gè)運(yùn)行時(shí)的數(shù)據(jù)類型,一個(gè)更新函數(shù)

7、,一個(gè)最終輸出函數(shù),共冋完成了一個(gè)聚集函數(shù)的功能。--Theworkingstateisa2-elementintegerarray,sumandcount.—Weusesplit(n)asaquick-and-dirtywayofparsingww.visal58.comtheinputarray--value,whichcomesinasastringlike’{l,2}’.Therearebetterways…createfunctiontcl_int4_accum(int4[],int4)returnsint4[]assetstate[split

8、$1〃{,}〃]setnewsum[expr{[lindex$state1]+$

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。