溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用postgresql的原因是什么

發(fā)布時(shí)間:2020-07-15 17:35:47 來源:億速云 閱讀:194 作者:清晨 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)使用postgresql的原因是什么,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

使用postgresql的原因:

Postgresql一直以來對新增數(shù)據(jù)類型都是開放和友好的系統(tǒng)。 它有數(shù)組、空間地理以及很多時(shí)間相關(guān)的數(shù)據(jù)類型。幾年前它又增加了兩種值得我們關(guān)注和使用的新類型:

JSONB類型

JSONB 是一個(gè)二進(jìn)制的JSON數(shù)據(jù)類型。它可以使用GIN 和 GIST格式進(jìn)行索引。你也可以快速查詢完整的JSON 文檔。

Range范圍類型

這個(gè)數(shù)據(jù)類型現(xiàn)在還沒有JSONB有名,范圍類型當(dāng)它是你需要的類型時(shí),它才會特別地有用。 對時(shí)間范圍來說,使用一列字段來表達(dá)從一個(gè)值到另一個(gè)值的范圍特別方便。如果你創(chuàng)建一個(gè)日歷應(yīng)用,或者總是有一個(gè)從哪個(gè)時(shí)間到另一個(gè)時(shí)間的參數(shù),那范圍類型可以讓你只需使用一個(gè)字段值即可。更大的好處還有你可以指定一定的時(shí)間范圍不能相互覆蓋、交叉,或是其他對你的應(yīng)用有用的約束。

Extensions擴(kuò)展功能

談到Postgres就很難不提到圍繞它存在的生態(tài)系統(tǒng)。擴(kuò)展模塊的使用對社區(qū)來說很關(guān)鍵,同時(shí)也促使Postgres快速發(fā)展。擴(kuò)展使用戶可以讓用戶使用原生的系統(tǒng)連接Postgres核心,而不必是將需求提交給Postgres的核心開發(fā)。這也意謂著用戶可以增加豐富的功能而不必與Postgres內(nèi)核的發(fā)布和審核循環(huán)連在一起。

一些特別有名的重磅擴(kuò)展有:

Citus擴(kuò)展

Citus (這也是我工作的內(nèi)容) 擴(kuò)展讓Postgres成為了一個(gè)分布式數(shù)據(jù)庫,它允許用戶很容易地將數(shù)據(jù)庫進(jìn)行跨節(jié)點(diǎn)的分發(fā)。 而對你的應(yīng)用來說,它仍然像是一個(gè)單節(jié)點(diǎn)的數(shù)據(jù)庫,而在后臺,Citus會將數(shù)據(jù)傳給多個(gè)不同的物理設(shè)備和多個(gè)Postgres的實(shí)例。

HyperLogLog擴(kuò)展

這是一個(gè)我個(gè)人最為喜歡的擴(kuò)展,它允許用戶對大量數(shù)據(jù)的聚集的唯一計(jì)數(shù)有一個(gè)很容易獲得且非常接接近理論值的結(jié)果,當(dāng)然也可以對跨時(shí)間聯(lián)合、相交等各種操作進(jìn)行 處理。HyperLogLog和其他的概要邏輯對處理大數(shù)據(jù)集和分布式數(shù)據(jù)庫很常用,并且是可以很方便地嵌入Postgres內(nèi)部使用。

PostGIS擴(kuò)展

PostGIS不是一個(gè)新的擴(kuò)展,但它是一個(gè)值得重提亮點(diǎn)。它通常都是被認(rèn)為是最先進(jìn)的地理數(shù)據(jù)庫。PostGIS增加了新的高級的地理空間數(shù)據(jù)類型、操作符,使得很多與位置有關(guān)的地圖類或是路由類的操作變得很容易。

邏輯復(fù)制

多年以來,大家要求最多的就是解決Postgres中設(shè)置數(shù)據(jù)復(fù)制的易用性。最早時(shí)我們也有基本的復(fù)制方案,然后我們有了流復(fù)制技術(shù)(即二進(jìn)制的WAL或稱之為預(yù)寫日志)。 對類似wal-e這樣的工具,幫助提升了Postgres在災(zāi)難恢復(fù)方面的能力。

現(xiàn)在最近的版本里,我們有了邏輯復(fù)制,雖然現(xiàn)在還是需要一個(gè)擴(kuò)展,不是100%內(nèi)核功能,但最終我們還是有了一個(gè)完整的邏輯復(fù)制方案。邏輯復(fù)制允許用戶發(fā)送不同數(shù)量的指令,這也意謂著我們可以復(fù)制指定的內(nèi)容或表。

系統(tǒng)擴(kuò)展性

除了我們見到的Postgres在持續(xù)對功能和性能的改進(jìn),最近也是特別地增加了并行查詢功能以獲取更好的性能。如果用戶需要超出單個(gè)Postgres節(jié)點(diǎn)的擴(kuò)展,我們可以使用前面提到的Citus進(jìn)行橫向擴(kuò)展。

豐富的索引

Postgres現(xiàn)在有很多種強(qiáng)大的索引,像GIN 和GiST索引,它們對JSONB數(shù)據(jù)特別有用。我們現(xiàn)在也有了KNN 和Sp-GiST索引格式,并且還在增加中。

Upsert功能

Upsert在Progress已開發(fā)和演變有好幾年了。當(dāng)然,一些用戶可以通過變通使用CTE功能來實(shí)現(xiàn)類似功能,但可能會產(chǎn)生一些條件沖突。這個(gè)特性曾是MySQL有但Postgres沒有的功能,現(xiàn)在1年多前,Postgres也有了正式的支持。

外部數(shù)據(jù)源封裝

當(dāng)然,還有幾年前就有的外部數(shù)據(jù)源封裝功能。它允許你映射外部數(shù)據(jù)系統(tǒng)至Postgres中的表。這就意謂著,比如,我們可以在Postgres中查詢Redis的數(shù)據(jù)庫。這項(xiàng)功能5年前就一直在不斷地改進(jìn)和提高,尤其是現(xiàn)在我們已支持可寫的外部數(shù)據(jù)源處理,即我們在Postgres直接寫入數(shù)據(jù)至外部數(shù)據(jù)庫。現(xiàn)在官方的Postgres發(fā)布版本中至少帶有Postgres的FDW,它對跨Postgres實(shí)例讀寫數(shù)據(jù)尤其有用。

更多其他的功能

如果你對以前的PG版本不是太熟,在以前的版本中一些應(yīng)了解的功能還包括:

窗口函數(shù)

一般函數(shù)

可定制的語言

NoSQL 數(shù)據(jù)類型

定制函數(shù)

CTE表達(dá)式

并行索引創(chuàng)建

事務(wù)DDL

外部數(shù)據(jù)封裝

條件或函數(shù)式索引

事件偵聽/提醒

表繼承

事務(wù)級的同步復(fù)制

關(guān)于使用postgresql的原因是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI