最近一段時間應客戶要求需要用到PostgreSQL數據庫,雖然自己搞Oracle已經很久了,但也對其他的數據庫非常感興趣,那麼就開始吧。
1 . 簡介
- PostgreSQL是一個對象關係型數據庫管理系統,其代碼完全開源.用戶可以對其進行二次開發,並根據需要以開源或閉源的形式發佈。
- PostgreSQL的功能非常強大,深受數據庫開發者和使用者喜愛。
- PostgreSQL於2017年、2018年連續兩年被DB一Engines評選爲[年度數據庫」。
- 截止到目前PostgreSQL已經12.1版本。
- 擁有一系列插件:空間數據庫擴展插件PostGIS,外部表訪問插件postgres_fdw, oracle_fdw。
- 兩個網址:
官方地址:www.postgresql.org
中文社區:www.postgres.cn
1.1 一些概念
1) 元組Tuple = 行Row
2) 域Field = 字段Column
3) 數據庫簇? =
4) 表空間:是一個存儲位置,表空間允許數據庫管理員定義一個文件系統位置。代表數據庫對象(表、索引等)的文件可以存儲在該文件目錄下。
5) 數據段(segment)和數據頁(Page)
a.數據段 = 每個表和索引都保存在一個單獨的文件中,每個文件就是一個數據段。默認表或者索引超過1G,會被拆分成另外一個數據段。命名規則:filenode(段1)filenode.1(段2)b.數據頁 = 默認8K,最大32K,大小是編譯時確定的。
1.2 存儲結構
所有ORACLE的童鞋都知道數據庫體系架構是學習數據庫非常重要的知識點,也是作爲DBA最初需要學習的。那麼Postgresql的體系架構如何呢?
1) 一個數據庫簇(database cluster)包含多個database
2) 在一個database下有多個table
3) 在database和table之間根據需要可以引入一層邏輯schema
4) 表空間對應文件系統中的一顆目錄樹,每個數據庫在表空間目錄下有一個對應的子目錄(以數據庫OID命名)
5) 每個表和索引都可以創建單獨的數據文件,它們以表或索引的filenode命名,filenode可以在系統表pg_class中查詢到。表還可以創建其他輔助文件,如_fsm和_vm爲後綴的文件。
1.3 進程體系架構
1) 當接收客戶端連接請求後,Postmaster會創建一個新的postgres進程,並讓該進程專門服務新的客戶端連接,直到該連接關閉爲止。
2) 後臺管理進程:bgWriter,WAL Writer,CheckPointer,AutoVacuum,實現刷寫髒頁,記錄WAL日誌,空間回收等功能。
1.4 PostgreSQL 10新特性
- 邏輯複製:用於分發數據的訂閱/發佈框架
- 聲明式表分區:便於用戶劃分數據
- 提高查詢並行性:攻克用戶的分析難題
- 同步複製的法定副本數提交:有信心地發佈數據
- 安全性加強:SCRAM-SHA-256身份驗證:保障數據訪問安全
2. 安裝
2.1 Window安裝
略
2.2 Linux安裝
這裏主要描述下在Centos7下的安裝步驟,官網上有相關的安裝介紹比較詳細。具體如下:
1、安裝rpm文件
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2、安裝客戶端
yum install postgresql10
3、安裝服務端
該步驟執行後,會自動創建postgres用戶。
yum install postgresql10-server
4、初始化
/usr/pgsql-10/bin/postgresql-10-setup initdb
5、設置自動啓動並且啓動postgresql服務
systemctl enable postgresql-10
systemctl start postgresql-10
啓動postgre之後,可以看到如下進程:
postgresql的安裝比較簡單,官網上有明確的操作步驟
安裝後,就可以用root切換postgres 進入數據庫
su - postgres
在postgres用戶下直接命令psql就可以進入postgres數據庫了
注意:
- 需要說明的是,安裝完成後,自動爲操作系統建立了一個名爲postgres的用戶,密碼爲空;同時也自動爲數據庫建立了一個postgres的用戶,密碼也爲空。
- rpm包安裝的PostgreSQL的數據目錄,默認在/var/lib/pgsql/data