PG(postgresql)數據庫


PG(postgresql)數據庫
PG是一個強大的開源對象關系型數據庫系統。使用和擴展了sql語句,結合許多安全存儲和擴展最復雜數據工作負載的功能,PG可靠性,數據完整性,強大的功能集,可擴展性以及軟件背后的開源社區的奉獻精神贏得了良好的聲譽,以始終如一地提供高性能和創新的解決方案。除了免費和開源之外,Postgre SQL還具有高度的可擴展性。例如,你可以定義自己的數據類型,構建自定義SQL函數(此sql函數在另一篇帖子討論:點此跳轉),甚至可以編寫來自不同編程語言的代碼,而不需要重新編譯數據庫。
 
基本操作命令:
Insert語句:INSERT INTO TABLE_NAME (column1,column2) VALUES (value1,value2)
SELECT語句:SELECT * FROM TABLE_NAME
UPDATE語句:UPDATE TABLE_NAME SET column1=value1,column2=value2 where [條件]
DELETE語句:DELETE FROM TABLE_NAME WHERE [條件];
條件查詢有:
AND 條件 OR 條件 AND & OR 條件 NOT 條件
LIKE 條件 IN 條件 NOT IN 條件 BETWEEN 條件
 
數據類型
1.基本類型:Integer, Numeric, String, Boolean
2.結構類型:Date/Time, Array, Range, UUID
3.文檔類型:JSON/JSONB, XML, Key-value(Hstore)
4.幾何類型:Point, Line, Circle, Polygon
5.自定義類型:Composite, Custom Types
數據的完整性
1.唯一性,不為空
2.主鍵
3.外鍵
4.排除約束
5.顯式鎖定,咨詢鎖定
 並發性,性能
1.索引
2.高級索引
3.復雜的查詢計划期/優化器
4.交互
5.多版本並發控制(MVCC)
6.讀取查詢的並行化和構建B樹索引
7.表分區
8.Sql標准中定義的所有事物隔離級別,包括Serializable
9.即時表達式匯編(JIT)
 
可靠性,災難恢復
1.預寫日志(WAL)
2.復制:異步,同步,邏輯
3.時間點恢復(pitr),主動備用
4.表空間
 
安全性
1.身份驗證:GSSAPI, SSPI, LDAP, SCRAM-SHA-256, 證書等
2.強大的訪問控制系統
3.列和行級安全性
 
可擴展性
1.存儲的功能和程序
2.程序語言:PL/PGSQL, Perl, Python (more)
3.外部數據包裝器:使用標准SQL接口連接到其他數據庫或流
4.許多提供附加功能的擴展,包括PostGIS
 
國際化,文本搜索
1.支持國際字符集,例如通過ICU校對
2.全文檢索
對比Mysql
1.PostgreSQL的穩定性極強,Innodb等引擎在崩潰、斷電之類的災難場景下抗打擊能力有了長足的進步,然而很多Mysql用戶都遇到過Server級的數據庫丟失的場景---Mysql系統庫是MyISAM的,相較而言,PG數據庫在這方面要好一些。
 
2.任何系統都有他的性能極限,在高並發讀寫,負載逼近極限下,PG的性能指標仍然可以維持雙曲線甚至對數曲線,到頂峰之后不再下降,而MySQL明細出現一個波峰后下滑。
 
3.PG多年在GIS領域處於優勢地位,因為它有豐富的幾何類型,實際上不止幾何類型,PG中有大量的字典、數組、bitmap等數據類型,相比之下MaySQL就差很多,insagram就是因為PG的空間數據庫擴展POSTGIS遠遠強於MySQL的my spatial而采用PGSQL的。
 
4.PG的“無鎖定”特性非常突出,甚至包括vacuum這樣的整理數據空間的操作,這個和PGSSQL的MVCC實現有關系。
 
5.PG的可以使用函數和條件索引,這使得PG數據庫的調優非常靈活,mysql就沒有這個功能,條件索引在web應用中很重要。
 
6.PG有極其強悍的SQL編程能力,有豐富的統計函數和統計語法支持,比如分析函數(Oracle的叫法,PG里面叫Window函數),還可以用多種語言來寫存儲過程,對於R的支持也很好。這一點上MySQL就差的很遠,很多分析功能那個都沒有,騰訊內部數據存儲主要是Mysql,但是主要的數據分析就是Hadoop+PGsql。
 
7.PG的有很多中集群架構可以選擇,plproxy可以支持語句級的鏡像或者分片,slony可以進行字段級的同步設置,standby可以構建WAL文件級或者流式的讀寫分離集群,同步頻率和集群策略調整方便,操作非常簡單。
 
8.一般關系型數據庫的字符串有限定長度8k左右,無限長Text類型的功能受限,只能作為外部大數據訪問。而PG的TEXT類型可以直接方法,SQL語法內置正則表達式,可以索引,還可以全文檢索,或使用xml xpath。用PG的話,文檔數據庫就可以省略了
 
9.對於web應用來說,復制的特性很重要,Mysql到現在也是異步復制,pgsql可以做到同步,異步,半同步復制。還有mysql的同步是基於binlog復制,類似oracle golden gate, 是基於stream的復制,做到同步很困難,這種方式更加適合異地復制,pgsql的復制基於wal,可以做到同步復制。同時pgsql還提供stream復制。
 
10.Pgsql對於numa架構的支持要比mysql強一些,比mysql對於讀的性能要好些,pgsql提交可以完全異步,而mysql的內存表不夠實用(表鎖原因)
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM