近期工作重點一直放在數據庫設計方面,借助這次機會抽時間整理了一些我對PostgreSQL數據庫的理解,同時也是對近段時間學習的一個總結。對于很多人而言或許沒有聽說過這個數據庫,通常我們耳邊伴隨的都是Oracle、MySQL、Microsoft SQL Server一類的關系型數據庫。
但看下數據庫排行榜,或許更能直觀的認識到PostgreSQL數據庫的強大與普遍
既然PostgreSQL排行這么高,那為何在國內名氣不如其他數據庫呢?這其中我認為重點在于兩點:一、市場推廣力度的問題;二、應用場景與國內大多數公司場景不符合造成的。詳細等后續再進行分析。
PostgreSQL可以說是世界上可以獲得的最先進的開放源碼的數據庫系統,它包括了豐富的數據類型的支持,其中有些數據類型可以說連商業數據庫都不具備,比如 IP 類型和幾何類型等;它提供了多版本并發控制,支持幾乎所有 SQL構件(包括子查詢,事務和用戶自定義類型和函數),并且可以獲得非常廣闊范圍的(開發)語言綁定(包括 C,C++,Java,perl,tcl,和 python);PostgreSQL整體設計采用了C/S (client/server)結構,幾乎支持了所有類型的數據庫客戶端接口。其次PostgreSQL因其開源特性,形成了一個龐大的開源服務團隊,其相關的開源組件多種多樣(tablefunc、dict_xsyn、fuzzystrmatch、pg_trgm、cube),能滿足大多數場景下的需求。當然還有人稱其是歷史最悠久、實戰經驗最豐富的數據庫系統,它的擴展包括自然語言解析、多維索引、地理查詢、自定義數據類型等。
PostgreSQL數據庫雖然整體非常強大,但也是存在缺陷的。從市場人員角度上來講,之前在國內基本沒有大規模的使用經驗與架構設計,大多數停留在找個文檔折騰下的程度。這直接導致了該數據庫在國內市場的低迷,同樣的Mysql數據庫在這方面就較為領先了。MySQL在國內互聯網行業積累了大量的高可用架構,分布式架構與災備經驗,但是PostgreSQL幾乎為0,但放眼國際網,不難看出PostgreSQL的一片天地的。其次在去IOE方面PostgreSQL因語言支持的全面化、數據對接遷移、去Oracle難度相比其他都簡單了很多,當然MySQL現在對去Oracle有更好的支持了。
其次在安全方面PostgreSQL事務符合ACID,確保你的提交是完全原子的、一致的、隔離的和持久的。
總結:
PostgreSQL是一個BSD協議的全開源數據庫,其強大的查詢優化器、豐富的數據類型提供了完善的關系數據存儲(支持部分非關系數據庫存儲)。有豐富的開源cluster軟件支持,可應用各種場景下的不同的需求。相比使用MySQL,其核心InnoDB一直被Oracle控制,無法達到最大化的發揮,其國內使用MySQL數據庫作為產品核心庫的大多數都是中小型項目,其原因雖是綜合對比導致,但相比PostgreSQL在中大型項目中的如魚得水,不得不說我更傾向于使用PostgreSQL。
備注:下節談一下MySQL與PostgreSQL的對比優劣勢與使用場景。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。