標籤:font support 吸引 sybase amp 流程 str 封裝 程式
https://zh.wikipedia.org/wiki/PostgreSQL
PostgreSQL是自由的對象-關係型資料庫伺服器(資料庫管理系統),在靈活的BSD-風格許可證下發行。它在其他開放原始碼資料庫系統(比如MySQL和Firebird),和專有系統比如Oracle、Sybase、IBM的DB2和Microsoft SQL Server之外,為使用者又提供了一種選擇。
PostgreSQL不尋常的名字導致一些讀者停下來嘗試拼讀它,特別是那些把SQL拼讀為"sequel"的人。PostgreSQL開發人員把它拼讀為"post-gress-Q-L"。(Audio sample,5.6k MP3)。它也經常被簡略念為"postgres"。
在PostgreSQL中程式員可以用一組可觀的支援語言中任何一種來寫這種邏輯。
- 類似於Oracle的過程語言PL/SQL的叫做PL/PgSQL的內建語言,在處理查詢密集的過程時提供了獨特的優勢。
- 流行指令碼語言比如Perl,Python,Tcl,和Ruby的封裝器,允許利用它們在字串處理和串連到廣闊的外部函數庫的力量。
- 需要把複雜邏輯編譯到機器代碼所能提供的高效能的過程可以利用C或C++。
- 在更加深奧的方面,R統計語言的處理器允許資料庫查詢利用它的一組豐富的統計函數。
程式員可以把代碼作為函數插入伺服器中,它是使代碼類似於預存程序的一個小封裝器。以這種方式SQL代碼可以調用(比如)C代碼或反之。
- 效能增進,因為資料庫引擎在一個時間一個地方調用所有的邏輯,減少了在客戶和伺服器之間的來回往返的次數。
- 可靠性增進,因為資料驗證代碼集中到一個地方,就在伺服器上,而不用依賴在多個客戶應用中的同步邏輯,它們甚至可能以多種程式設計語言寫成。
- 通過向伺服器增加有用的抽象,客戶代碼可以變得更短小和簡單。
這些優勢合起來可以證實PostgreSQL從編程角度是最進階的資料庫系統。使用PostgreSQL可以顯著的減少很多項目的整體編程時間,這種優勢隨著項目複雜而增長。
通過函數,可以在資料庫伺服器端執行指令程式。儘管這樣的指令程式可以使用基本的SQL語句寫成,但是由於其缺乏流程式控制制等功能,所以在PostgreSQL中引入了使用其它程式語言編寫函數的能力,包括:
- 一個內建的名為PL/pgSQL的過程語言,類似於Oracle的PL/SQL;
- 包括PL/Perl,PL/PHP,PL/Python,PL/Ruby,PL/sh,PL/Tcl與PL/Scheme在內的指令碼語言;
- 編譯語言:C,C++,或Java(通過PL/Java)。
- R統計語言(PL/R)。
以上部分的語言,甚至可以在觸發器內執行。PostgreSQL支援行返回函數:它們的輸出是一系列行類型資料的集合,可以在查詢中當作表來使用。函數也可以被定義成以建立者或者調用者的身份運行。在某些場合,或者其他的資料庫產品中,函數也會被稱為“預存程序”,但技術上這兩者並未有太大分別。
吸引我注意的是上面所說的,有強大的編程能力。以前一直用 T-SQL寫SP,覺得它的表達能力非常有限,正想尋找一個有強大的編程能力的資料庫引擎。
官網:
https://www.postgresql.org/
https://www.postgresql.org/download/linux/redhat/
簡單的安裝命令,但版本不是最新的:
yum install postgresql-server
若想安裝最新版本,需要添加repo.
https://yum.postgresql.org/repopackages.php
Please note that PostgreSQL YUM repository depends on EPEL repository for some packages. RHEL/CentOS/, etc.
users should install EPEL repo RPM along with PGDG repo RPMs to satisfy dependencies.
1: EPEL (Extra Packages for Enterprise Linux)
https://support.rackspace.com/how-to/install-epel-and-additional-repositories-on-centos-and-red-hat/
CentOS and Red Hat Enterprise Linux 6.x
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpmsudo rpm -Uvh epel-release-6*.rpm
CentOS and Red Hat Enterprise Linux 7.x
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmsudo rpm -Uvh epel-release-latest-7*.rpm
2: PGDG repo
https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm
成功安裝後會發現:
/etc/yum.repos.d
目錄出了幾個檔案:
-rw-r--r--. 1 root root 957 12月 10 15:32 epel.repo
-rw-r--r--. 1 root root 1056 12月 10 15:32 epel-testing.repo
-rw-r--r--. 1 root root 1364 12月 10 15:57 pgdg-96-centos.repo
-rw-r--r--. 1 root root 1012 12月 10 15:45 pgdg-96-centos.repo.backup
輸入命令:
# yum info postgresql96-server
若出現路徑錯誤, 需要分別修改一下路徑:
http://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6.2-x86_64/
最後成功提示包資訊,說明配置成功。
最後執行:
[[email protected] yum.repos.d]# yum groupinstall "PostgreSQL Database Server 9.6 PGDG"
...
已安裝:
postgresql96.x86_64 0:9.6.1-1PGDG.rhel6
postgresql96-contrib.x86_64 0:9.6.1-1PGDG.rhel6
postgresql96-libs.x86_64 0:9.6.1-1PGDG.rhel6
postgresql96-server.x86_64 0:9.6.1-1PGDG.rhel6
完畢!
說明安裝成功。
CentOS 6安裝PostgreSQL