成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

什么是PostgreSQL?比MySQL、Oracle強(qiáng)在哪

數(shù)據(jù)庫 其他數(shù)據(jù)庫 PostgreSQL
本文主要給大家介紹什么是PostgreSQL數(shù)據(jù)庫、PostgreSQL有哪些強(qiáng)大的功能及其目前的一些應(yīng)用情況,以便大家對PostgreSQL有一個初步的認(rèn)識。

1. 什么是PostgreSQL

PostgreSQL數(shù)據(jù)庫是功能強(qiáng)大的開源數(shù)據(jù)庫,它支持豐富的數(shù)據(jù)類型(如JSON和JSONB類型、數(shù)組類型)和自定義類型。

PostgreSQL數(shù)據(jù)庫提供了豐富的接口,可以很方便地?cái)U(kuò)展它的功能,如可以在GiST框架下實(shí)現(xiàn)自己的索引類型,支持使用C語言寫自定義函數(shù)、觸發(fā)器,也支持使用流行的編程語言寫自定義函數(shù)。

PL/Perl提供了使用Perl語言寫自定義函數(shù)的功能,當(dāng)然還有PL/Python、PL/Java、PL/Tcl等。

2. PostgreSQL數(shù)據(jù)庫的優(yōu)勢

PostgreSQL數(shù)據(jù)庫具有以下優(yōu)勢:

  • PostgreSQL數(shù)據(jù)庫是目前功能最強(qiáng)大的開源數(shù)據(jù)庫,它是最接近工業(yè)標(biāo)準(zhǔn)SQL92的查詢語言,至少實(shí)現(xiàn)了SQL:2011標(biāo)準(zhǔn)中要求的179項(xiàng)主要功能中的160項(xiàng)(注:目前沒有哪個數(shù)據(jù)庫管理系統(tǒng)能完全實(shí)現(xiàn)SQL:2011標(biāo)準(zhǔn)中的所有主要功能)。
  • 穩(wěn)定可靠:PostgreSQL是唯一能做到數(shù)據(jù)零丟失的開源數(shù)據(jù)庫。目前有報道稱國內(nèi)外有部分銀行使用PostgreSQL數(shù)據(jù)庫。
  • 開源省錢: PostgreSQL數(shù)據(jù)庫是開源的、免費(fèi)的,而且使用的是類BSD協(xié)議,在使用和二次開發(fā)上基本沒有限制。
  • 支持廣泛:PostgreSQL 數(shù)據(jù)庫支持大量的主流開發(fā)語言,包括C、C++、Perl、Python、Java、Tcl以及PHP等。
  • PostgreSQL社區(qū)活躍:PostgreSQL基本上每3個月推出一個補(bǔ)丁版本,這意味著已知的Bug很快會被修復(fù),有應(yīng)用場景的需求也會及時得到響應(yīng)。

[[349495]]

3. PostgreSQL應(yīng)用現(xiàn)狀和發(fā)展趨勢

PostgreSQL目前在國外很流行,特別是近幾年,使用PostgreSQL數(shù)據(jù)庫的公司越來越多。

日本電報電話公司(NTT)大量使用PostgreSQL替代Oracle數(shù)據(jù)庫,并且在 PostgreSQL之上二次開發(fā)了Postgres-XC,Postgres-XC是對使用者完全兼容PostgreSQL接口的share-nothing 架構(gòu)的數(shù)據(jù)庫集群。

亞信科技(AsiaInfo)在Postgres-XC的基礎(chǔ)上開發(fā)了AntDB數(shù)據(jù)庫,AntDB是一款面向金融、電信、政務(wù)、安全、能源等行業(yè)的分布式事務(wù)型關(guān)系數(shù)據(jù)庫產(chǎn)品。它具備集群自動高可用、秒級在線擴(kuò)縮容、異地容災(zāi)、SQL語句級自定義分片、分布式事務(wù)和MVCC等功能,且具有強(qiáng)大的Oracle兼容性。AntDB完全兼容PostgreSQL數(shù)據(jù)庫。

騰訊在PosgreSQL-XC基礎(chǔ)上開發(fā)了TBase分布式數(shù)據(jù)庫。相較于Postgres-XC,其穩(wěn)定性得到了較大提高,同時TBase通過在內(nèi)核中創(chuàng)造性地引入 GROUP 概念,提出了雙Key分布策略,有效地解決了數(shù)據(jù)傾斜的問題;它根據(jù)數(shù)據(jù)的時間戳,將數(shù)據(jù)分為冷數(shù)據(jù)和熱數(shù)據(jù),分別存儲于不同的存儲設(shè)備中,有效地解決了存儲成本的問題。

網(wǎng)絡(luò)電話公司Skype也大量使用了PostgreSQL,并貢獻(xiàn)了如下與PostgreSQL數(shù)據(jù)庫配套的開源軟件。

  • PL/Proxy:PostgreSQL中的數(shù)據(jù)水平拆分軟件。
  • pgQ:使用PostgreSQL的消息隊(duì)列軟件。
  • Londiste:用C語言實(shí)現(xiàn)的在PostgreSQL數(shù)據(jù)庫之間進(jìn)行邏輯同步的軟件。

全球最大的CRM軟件服務(wù)提供商Salesforce也開始使用PostgreSQL,并招募了PostgreSQL內(nèi)核開發(fā)者Tom lane。

著名的圖片分享網(wǎng)站instagram也大量使用了PostgreSQL。

2012年,美國聯(lián)邦機(jī)構(gòu)全面轉(zhuǎn)向PostgreSQL陣營;法國也正積極推動政府機(jī)構(gòu)采用PostgreSQL數(shù)據(jù)庫來取代商業(yè)數(shù)據(jù)庫。

在國內(nèi),越來越多的公司開始使用PostgreSQL,如斯凱網(wǎng)絡(luò)的后臺數(shù)據(jù)庫使用的基本都是PostgreSQL數(shù)據(jù)庫,去哪兒網(wǎng)(qunar.com)和平安科技也大量地使用了PostgreSQL數(shù)據(jù)庫。

主流的云服務(wù)提供商如亞馬遜、阿里云、騰訊云、華為云也都提供了PostgreSQL的云數(shù)據(jù)庫服務(wù)。

更多關(guān)于PostgreSQL數(shù)據(jù)庫的現(xiàn)狀信息可見PostgreSQL官方網(wǎng)站:

http://www.postgresql.org/

四、PostgreSQL數(shù)據(jù)庫與其他數(shù)據(jù)庫的對比

本節(jié)主要介紹PostgreSQL數(shù)據(jù)庫與主流數(shù)據(jù)庫MySQL和Oracle的相同點(diǎn)和區(qū)別。

1. PostgreSQL與MySQL數(shù)據(jù)庫的對比

可能有人會問,既然已經(jīng)有一個人氣很高的開源數(shù)據(jù)庫MySQL了,為什么還要使用PostgreSQL?這主要是因?yàn)椴煌臄?shù)據(jù)庫有不同的特點(diǎn),應(yīng)該為合適場景選擇合適的數(shù)據(jù)庫。在一些應(yīng)用場景中,使用MySQL有以下幾大缺點(diǎn)。

(1) 復(fù)雜SQL支持弱

在MySQL 8.0之前,多表連接查詢的方式只支持“Nest Loop”,不支持Hash JOIN和Sort Merge JOIN(注:MySQL8.0版本開始支持Hash JOIN,但不完善,有一些問題。

另因?yàn)镸ySQL無完善的基于COST的優(yōu)化器(CBO),長期來說也會存在一定的問題),不僅如此,它對很多SQL語法都不支持,子查詢性能比較低。例如,MySQL不支持單獨(dú)的sequence,有公司為此還專門開發(fā)了統(tǒng)一序號分發(fā)中心的軟件。

(2) 性能優(yōu)化工具與度量信息不足

如果MySQL在運(yùn)行過程中出現(xiàn)問題,性能監(jiān)控?cái)?shù)據(jù)較少,維護(hù)人員要準(zhǔn)確定位問題存在一定的困難。

MySQL的復(fù)制是異步或半同步的邏輯同步,這存在兩個問題:

  • 一是在大事務(wù)下會導(dǎo)致比較大的延遲;
  • 二是容易導(dǎo)致數(shù)據(jù)庫的不一致,原因是邏輯復(fù)制容易導(dǎo)致數(shù)據(jù)的不一致性,而MySQL的雙層日志會讓這個問題變得更復(fù)雜,即主備庫的復(fù)制是通過邏輯層的binlog來實(shí)現(xiàn)的,但在存儲引擎InnoDB下還有物理的Redo Log層,整個過程比較復(fù)雜,比較難保證主備庫之間完全一致。

由于有兩層日志(binlog日志和InnoDB的Redo日志),因此也很難做到Master/Slave在異常切換過程中的零數(shù)據(jù)丟失。一些第三方公司改造MySQL源代碼以實(shí)現(xiàn)同步復(fù)制,但這些方案要么是沒有開源,要么是已開源卻又不是很穩(wěn)定,所以,對于普通用戶來說,如何實(shí)現(xiàn)零數(shù)據(jù)庫丟失的同步復(fù)制是一個令人頭疼的問題。

(3) 在線操作功能較弱

很多在線DDL需要重建表,代價很大,有一些操作還會鎖表。一些大的互聯(lián)網(wǎng)公司或者修改MySQL源碼來實(shí)現(xiàn)在線DDL功能,或者通過上層架構(gòu)來解決這個問題,如先在Slave數(shù)據(jù)庫上把DDL做完,然后把應(yīng)用從Master庫切換到Slave庫,再到原先的Master上把DDL做完。

對于第一種方法,需要公司有很強(qiáng)的MySQL研發(fā)能力,第二種方法則需要公司有較強(qiáng)的開發(fā)能力,能設(shè)計(jì)出較強(qiáng)的應(yīng)用架構(gòu)。這對于一些中小型公司來說不太容易實(shí)現(xiàn)。

(4) 難以寫插件來擴(kuò)展MySQL的功能

雖然用UDF,或通過外部動態(tài)庫中的函數(shù)來擴(kuò)展部分功能,但能擴(kuò)展的功能很有限。如MySQL比較難訪問其他數(shù)據(jù)庫中的數(shù)據(jù)。

相對MySQL的這些弱點(diǎn),PostgreSQL有以下幾個優(yōu)點(diǎn)。

  • 功能強(qiáng)大

支持所有主流的多表連接查詢的方式,如“Nest loop”“Hash JOIN”“Sort Merge JOIN”等;支持絕大多數(shù)的SQL語法,如CTE(MySQL8.0之前不支持CTE)。

PostgreSQL是筆者見過的對正則表達(dá)式支持最強(qiáng)、內(nèi)置函數(shù)也是最豐富的數(shù)據(jù)庫。它的字段類型還支持?jǐn)?shù)組類型。除了可以使用PL/PGSQL寫存儲過程外,還可以使用各種主流開發(fā)語言的語法(如Python語言的PL/Python、Perl語言的PL/Perl來寫存儲過程)。

這些強(qiáng)大的功能可以大大地節(jié)約開發(fā)資源。很多開發(fā)人員在PostgreSQL上做開發(fā)時,會發(fā)現(xiàn)數(shù)據(jù)庫已實(shí)現(xiàn)很多功能,甚至有一些業(yè)務(wù)功能都不再需要寫代碼來實(shí)現(xiàn)了,直接使用數(shù)據(jù)庫的功能即可解決問題。

  • 性能優(yōu)化工具與度量信息豐富

PostgreSQL數(shù)據(jù)庫中有大量的性能視圖,可以方便地定位問題(比如可以看到正在執(zhí)行的SQL,可以通過鎖視圖看到誰在等待,以及哪條記錄被鎖定等)。PostgreSQL中設(shè)計(jì)了專門架構(gòu)和進(jìn)程用于收集性能數(shù)據(jù),既有物理I/O方面的統(tǒng)計(jì),也有表掃描及索引掃描方面的性能數(shù)據(jù)。

  • 在線操作功能好

PostgreSQL增加空值列時,本質(zhì)上只是在系統(tǒng)表上把列定義上,無須對物理結(jié)構(gòu)做更新,這就讓PostgreSQL在加列時可以做到瞬間完成。PostgreSQL還支持在線建索引的功能,在創(chuàng)建索引的過程可以不鎖更新操作。

從PostgreSQL9.1開始,支持同步復(fù)制(synchronous replication)功能,通過Master和Slave之間的復(fù)制可以實(shí)現(xiàn)零數(shù)據(jù)丟失的高可用方案。

  • 可以方便地寫插件來擴(kuò)展PostgreSQL數(shù)據(jù)庫的功能

PostgreSQL提供了安裝、編寫插件的整體框架,如提供了create extension等SQL語句以方便地裝載插件;寫一個動態(tài)庫可以很方便地給PostgreSQL添加函數(shù);提供了外部數(shù)據(jù)源(FDW)的框架和編程接口,根據(jù)此框架和編程接口可以方便地編寫訪問其他數(shù)據(jù)庫和外部數(shù)據(jù)源的插件。

現(xiàn)在針對已有的常見外部數(shù)據(jù)源,如Oracle、MySQL、SQL Server等數(shù)據(jù)庫都有了第三方插件,通過這些第三方插件可以在PostgreSQL數(shù)據(jù)庫中方便地訪問外部數(shù)據(jù)。另外,PostgreSQL還提供了鉤子函數(shù)的接口,可以實(shí)現(xiàn)更強(qiáng)大功能的插件,如pg_pathman分區(qū)表的插件、citus分庫分表的插件等。

另外,由于MySQL對SQL語法支持的功能較弱,基本上不適合做數(shù)據(jù)倉庫。雖然也有些廠商開發(fā)了MySQL數(shù)據(jù)倉庫的存儲引擎(如Infobright),但這個方案只是解決了部分?jǐn)?shù)據(jù)倉庫的問題,SQL功能弱的問題還是無法完全解決。

而且Infobright的社區(qū)版本在功能上有很多限制,如不支持?jǐn)?shù)據(jù)更新、不支持太多的并發(fā)執(zhí)行(最多支持十幾個)等。而PostgreSQL不僅支持復(fù)雜的SQL,還支持大量的分析函數(shù),非常適合做數(shù)據(jù)倉庫。

PostgreSQL數(shù)據(jù)庫中還有一些支持移動互聯(lián)網(wǎng)的新功能,如空間索引。PostGIS是最著名的一個開源GIS系統(tǒng),它是PostgreSQL中的一個插件,在PostgreSQL中使用它很方便。通過PostGIS也可以很方便地解決LBS中的一些位置計(jì)算問題。

綜上所述,PostgreSQL數(shù)據(jù)庫是一個功能強(qiáng)大,又帶有移動互聯(lián)網(wǎng)特征的開源數(shù)據(jù)庫。

如果你僅僅是想把數(shù)據(jù)庫作為一個簡單的存儲軟件(一些大的互聯(lián)網(wǎng)公司就是這樣),一些較復(fù)雜的功能都想放在應(yīng)用中來實(shí)現(xiàn),那么選擇MySQL或一些NoSQL產(chǎn)品都是合適的。如果你應(yīng)用的數(shù)據(jù)訪問很簡單(如大多數(shù)的博客系統(tǒng)),那么后端使用MySQL也是很合適的。

但是如果你的應(yīng)用不像博客系統(tǒng)那么簡單,又不想消耗太多的開發(fā)資源,那么PostgreSQL是一個很明智的選擇。最有說服力的例子就是圖片分享公司instagram,在使用“Python+PostgreSQL”架構(gòu)后,只是十幾個人就支撐了整個公司的業(yè)務(wù)。

在數(shù)據(jù)庫中使用PostgreSQL的感覺就像在開發(fā)語言中使用Python,會讓你的工作變得簡潔和高效。

2. PostgreSQL與Oracle數(shù)據(jù)庫的對比

從功能上說,PostgreSQL可以與Oracle數(shù)據(jù)庫媲美。Oracle數(shù)據(jù)庫是目前功能最強(qiáng)大的商業(yè)數(shù)據(jù)庫,PostgreSQL則是功能最強(qiáng)大的開源數(shù)據(jù)庫。Oracle在集群功能如RAC、ASM方面比較強(qiáng),但PostgtreSQL也有一些比Oracle強(qiáng)的特性,如在索引和可擴(kuò)展等方面。

PostgreSQL與Oracle有很多相似之處,它們都是使用共享內(nèi)存的進(jìn)程結(jié)構(gòu),客戶端與數(shù)據(jù)庫服務(wù)器建立一個連接后,數(shù)據(jù)庫服務(wù)器就啟動一個進(jìn)程來為這個連接服務(wù)。這與MySQL的線程模型不一樣。

PostgreSQL與Oracle一樣,PostgreSQL的WAL日志與Oracle的Redo日志都是用于記錄物理塊數(shù)據(jù)的變化的,這與MySQL的binlog是不一樣的。

PostgreSQL在主備庫方面非常完善,可以搭建同步備庫、異步備庫、延遲備庫,在同步備庫中可以配置數(shù)據(jù)同步到任意個備庫上。只讀備庫在查詢與應(yīng)用日志的沖突解決方面提供了更多的參數(shù)控制,讓DBA更容易控制只讀備庫的查詢沖突。在配置備庫的過程中,PostgreSQL比Oracle簡單很多,備庫的搭建也更靈活。

PostgreSQL與Oracle的不同之處在于,PostgreSQL有更多支持互聯(lián)網(wǎng)特征的功能。如PostgreSQL數(shù)據(jù)類型支持網(wǎng)絡(luò)地址類型、XML類型、JSON類型、UUID類型以及數(shù)組類型,且有強(qiáng)大的正則表達(dá)式函數(shù),如where條件中可以使用正則表達(dá)式匹配,也可以使用Python、Perl等語言寫存儲過程等。

另外,PostgreSQL更小巧。PostgreSQL可以在內(nèi)存很小的機(jī)器上完美運(yùn)行起來,如在512MB的云主機(jī)中,而Oracle數(shù)據(jù)庫基本要在數(shù)GB的云主機(jī)中才可以運(yùn)行起來。

Oracle安裝包動輒幾個GB以上級別,而PostgreSQL的安裝包只有幾十MB大小。PostgreSQL在任何一個環(huán)境都可以輕松地安裝。Oracle數(shù)據(jù)庫安裝花費(fèi)的時間是在小時級別,而PostgreSQL在分鐘級別就可以完成安裝。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2012-09-13 14:11:07

Windows Ser微軟云平臺

2017-06-13 22:54:03

筆記本機(jī)械鍵盤鍵盤

2021-02-26 07:17:47

MySQLMariaDB

2019-11-18 15:56:16

固態(tài)硬盤機(jī)械硬盤

2021-12-15 06:58:28

RedisEhCache緩存

2025-05-06 08:09:50

2015-01-08 14:52:29

google云計(jì)算分布式計(jì)算框架

2020-06-28 07:49:06

WiFi 6WiFi 5網(wǎng)絡(luò)技術(shù)

2012-09-20 09:07:45

英特爾Xeon E5Xeon 5600

2022-03-26 21:34:54

邊緣計(jì)算云計(jì)算物聯(lián)網(wǎng)

2022-03-27 23:50:46

云計(jì)算邊緣計(jì)算技術(shù)

2022-07-01 06:03:08

WiFi 7WiFi 6

2011-07-22 09:33:15

OracleMySQLPostgreSQL

2019-05-22 10:38:00

5G芯片中興

2020-09-05 15:30:06

Windows 95Windows 10微軟

2025-04-09 11:30:00

Flask開發(fā)Python

2025-02-28 00:03:00

2017-02-13 11:30:56

5G4GMWC

2009-04-14 19:15:16

四核服務(wù)器AMD

2021-12-01 23:34:10

EtcdRedis場景
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 四虎国产 | 国产成人精品久久二区二区91 | 国产精品99久久久久久动医院 | 国产在线一区二区三区 | 久久久久亚洲 | 欧美成人久久 | 天天操天天天干 | 一区二区三区四区在线视频 | 在线免费观看视频黄 | 亚洲狠狠爱 | 性福视频在线观看 | www国产成人免费观看视频,深夜成人网 | 久久9视频| 97碰碰碰 | 欧美成年人视频在线观看 | 国产免费拔擦拔擦8x高清 | 欧美精品在线免费观看 | 国产精品免费观看 | 亚洲精品68久久久一区 | 久久99国产精品 | 日韩欧美三级 | 伊人欧美视频 | 亚洲国产欧美在线人成 | 国产精品色婷婷久久58 | 中文字幕亚洲国产 | a级毛片免费高清视频 | 欧美一区二区在线观看视频 | 国产精品久久久久久久粉嫩 | 天天看天天爽 | 国产一区二区电影 | 亚洲一区二区三区在线免费观看 | 国产精品亚洲精品 | 亚洲福利一区二区 | 国产99久久 | 一级黄色片网站 | 午夜小视频在线播放 | 日本欧美在线 | 成人一区二区三区 | 91综合在线视频 | 午夜看看| 特级黄色毛片 |