GB | BIG5
|
| 首頁 > 數據庫 > 其它 > 正文 |
 |
| PostgreSQL7.0手冊-程序員手冊 -37. 擴展的 SQL: 概述 |
| 編譯:何偉平 laser@zhengmai.com.cn (2001-04-21 22:57:55) |
第三十七章. 擴展 SQL:概述
內容
擴展性是如何工作的
Postgres 類型系統
關 Postgres 系統表
在本章的剩余部分,我們將討論你如何通過增加下面幾種對象來擴展 PostgresSQL查詢語言:
函數
類型
操作符
聚集
擴展性是如何工作的
Postgres 是可擴展的是因為它的操作是表驅動的.如果你對標準的關系系統熟悉,你知道它們把與數據庫,表,字段等的信息存儲在一個被稱為系統表的地方.(有些系統稱這些為數據字典).這些表在用戶面前表現為表,和其他表一樣,只不過 DBMS 把它自己內部的信息存放在此.Postgres 和標準的關系型數據庫的系統表有一個關鍵區別是Postgres 在它的系統表裡面存儲了更多的信息 -- 不僅是關表和列/字段的信息,而且還有關它們的類型,函數,訪問方式等的信息.這些表可以被用戶修改,而且由Postgres 的內部操作是以這些表為基礎的,這就意味著 Postgres 可以被用戶所擴展.相比之下,傳統的數據庫系統只能通過修改DBMS 內部的硬代碼或裝載由 DBMS 供應商提供的特殊的模塊來擴展.
Postgres 與大多數其他數據庫管理器不同的是它還可以通過動態裝載的方法與用戶書寫的代碼偶合在一起.也就是說,用戶可以把一個目標代碼文件(例如,一個編譯好的 .o 文件或一個共享庫)聲明為一個新類型或函數的實現,這時Postgres 將根據需要裝載它們.用 SQL 寫的代碼甚至更容易加入到服務器中去.這種可以"動態地"更改其操作的能力使Postgres 特別適合新應用和新存儲結構的快速定型.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Postgres 類型系統
Postgres 的類型系統可以有好幾種方法分解開來.類型可以分為基本類型和復合類型.基本類型是那些用象C 這樣的語言實現的(例如 int4)。這些數據類型通常與那些常被認為是"抽象數據類型"的類型對應;Postgres 對這些數據類型只能通過用戶提供的方法來操作,並且對這些數據類型的特性的理解只限用戶所描述的范圍.復合類型是當用戶創建表時創建的,EMP是復合類型的一個例子.
Postgres 對這些類型的存儲方法只有一種(在存儲表的所有記錄的文件裡),但是用戶可以從查詢語言中"深入觀察"這些屬性,而且可以通過在字段上定義索引(這類)方法來優化對這些類型的檢索.Postgres的基礎類型可以進一步分為內建類型和用戶定義類型.內建類型(象 int4)是那些編譯進入系統裡面去的類型.用戶定義類型是那些由用戶用面提到的方法創建的類型.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
關 Postgres 系統表
在介紹了擴展性的基本概念,我們現在看看系統表實際上是個什布局.你目前可以忽略這章,但是如果沒有這一章的信息,面的一些章節的內容會變得很難懂,所以你最好把這一章打上標記,以備查詢.所有系統表都具有以 pg_ 開頭的名稱.下面的表格包含可能對最終用戶有用的信息.(還有許多其他系統表,但是很難得有機會直接對它們進行查詢.)
表 37-1. Postgres 系統表
表名稱 描述
pg_database 數據庫
pg_class 表
pg_attribute 表屬性
pg_index 從索引
pg_proc 過程 ( C 和 SQL)
pg_type 類型 (包括基本類型和復合類型)
pg_operator 操作符
pg_aggregate 聚集和聚集函數
pg_am 訪問方法
pg_amop 訪問方法操作符
pg_amproc 訪問方法支持函數
pg_opclass 訪問方法操作符表
圖 37-1. 主要的Postgres 系統表
參考手冊給出了關這些表和它們的字段的更多的詳細信息.不過,主要的 Postgres 系統表 顯示了系統表的主要成員和它們的字段.(與其他表無關的字段在這裡沒有顯示出來,除非它們是主鍵的一部分.)這個表看起來或多或少有些難懂,除非你真正看了這些表的內容而且看了它們之間是如何相關的.從現在開始,我們要從這個圖裡面挖出下面這些東西:
在面的幾章裡,我們將提供一些在系統表上的聯合查詢--這些查詢展示了我們在擴展系統時所需要的信息.仔細研究這張圖會讓我們對這些聯合查詢(通常是三或四路聯合)更容易理解,因為這樣你就能看到在查詢裡用到的字段是其他表的外部鍵字.
許多不同的特性(表,屬性,函數,類型,訪問模式等.)是按照這個結構緊密集成在一起的.因而一個簡單的 create 命令就有可能更改許多這些表.
類型和過程是這個圖表的核心.
注意:我們在這裡多多少少把 過程 和 函數 混起來用.
幾乎每個表都包含其他一個或多個表的字段的引用.例如, Postgres 經常使用類型簽名(例如,函數或操作符的)來標識其他表的唯一記錄.
有許多字段和關系有明顯的含義,但是還有許多(尤其是那些與訪問模式打交道的字段)沒有(明顯含義).表 pg_am,pg_amop,pg_amproc,pg_operator 和 pg_opclass 之間的關系尤其難以理解,所以我們將在討論完基本擴展更深入地討論之(在類型接口和用索引的操作符章節之).
--------------------------------------------------------------------------------
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
PostgreSQL7.0手冊-附錄-文檔 (2001-04-21 23:50:44) PostgreSQL7.0手冊-附錄-日期/時間支持-CVS 倉庫 (2001-04-21 23:48:48) PostgreSQL7.0手冊-教程 -73. Postgres SQL 高級特性 (2001-04-21 23:45:36) PostgreSQL7.0手冊-教程 -72. 查詢語言 (2001-04-21 23:44:40) PostgreSQL7.0手冊-教程 -71. 開始 (2001-04-21 23:42:54) PostgreSQL7.0手冊-教程 -70. 體系結構 (2001-04-21 23:41:58) PostgreSQL7.0手冊-教程 -69. SQL (2001-04-21 23:41:23) PostgreSQL7.0手冊-開發者手冊 -68. 分頁文件 (2001-04-21 23:39:22) PostgreSQL7.0手冊-開發者手冊 -67. 端接口 (2001-04-21 23:38:34) PostgreSQL7.0手冊-開發者手冊 -66. gcc 缺省優化 (2001-04-21 23:37:20)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |