您好,登錄后才能下訂單哦!
這篇文章主要介紹關(guān)于postgresql的優(yōu)勢(shì)及簡(jiǎn)介,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
postgresql的優(yōu)點(diǎn):
1、是全棧數(shù)據(jù)庫(kù),功能強(qiáng)大
成熟的應(yīng)用可能會(huì)用到許許多多的數(shù)據(jù)組件(功能):緩存,OLTP,OLAP/批處理/數(shù)據(jù)倉(cāng)庫(kù),流處理/消息隊(duì)列,搜索索引,NoSQL/文檔數(shù)據(jù)庫(kù),地理數(shù)據(jù)庫(kù),空間數(shù)據(jù)庫(kù),時(shí)序數(shù)據(jù)庫(kù),圖數(shù)據(jù)庫(kù)。
傳統(tǒng)的架構(gòu)選型呢,可能會(huì)組合使用多種組件,典型的如:Redis + MySQL + Greenplum/Hadoop + Kafuka/Flink + ElasticSearch,一套組合拳基本能應(yīng)付大多數(shù)需求了。不過(guò)比較令人頭大的就是異構(gòu)系統(tǒng)集成了:大量的代碼都是重復(fù)繁瑣的搬磚代碼,干著把數(shù)據(jù)從A組件搬運(yùn)到B組件的事情。
在這里,MySQL就只能扮演OLTP關(guān)系型數(shù)據(jù)庫(kù)的角色,但如果是PostgreSQL,就可以身兼多職,One handle them all,比如:
OLTP:事務(wù)處理是PostgreSQL的本行
OLAP:citus分布式插件,ANSI SQL兼容,窗口函數(shù),CTE,CUBE等高級(jí)分析功能,任意語(yǔ)言寫(xiě)UDF
流處理:PipelineDB擴(kuò)展,Notify-Listen,物化視圖,規(guī)則系統(tǒng),靈活的存儲(chǔ)過(guò)程與函數(shù)編寫(xiě)
時(shí)序數(shù)據(jù):timescaledb時(shí)序數(shù)據(jù)庫(kù)插件,分區(qū)表,BRIN索引
空間數(shù)據(jù):PostGIS擴(kuò)展(殺手锏),內(nèi)建的幾何類(lèi)型支持,GiST索引。
搜索索引:全文搜索索引足以應(yīng)對(duì)簡(jiǎn)單場(chǎng)景;豐富的索引類(lèi)型,支持函數(shù)索引,條件索引
NoSQL:JSON,JSONB,XML,HStore原生支持,至NoSQL數(shù)據(jù)庫(kù)的外部數(shù)據(jù)包裝器
數(shù)據(jù)倉(cāng)庫(kù):能平滑遷移至同屬Pg生態(tài)的GreenPlum,DeepGreen,HAWK等,使用FDW進(jìn)行ETL
圖數(shù)據(jù):遞歸查詢(xún)
緩存:物化視圖
在探探的舊版架構(gòu)中,整個(gè)系統(tǒng)就是圍繞PostgreSQL設(shè)計(jì)的。幾百萬(wàn)日活,幾百萬(wàn)全局DB-TPS,幾百TB數(shù)據(jù)的規(guī)模下,數(shù)據(jù)組件只用了PostgrSQL。獨(dú)立的數(shù)倉(cāng),消息隊(duì)列和緩存都是后來(lái)才引入的。而且這只是驗(yàn)證過(guò)的規(guī)模量級(jí),進(jìn)一步壓榨PG是完全可行的。
因此,在一個(gè)很可觀(guān)的規(guī)模內(nèi),PostgreSQL都可以扮演多面手的角色,一個(gè)組件當(dāng)多種組件使。雖然在某些領(lǐng)域它可能比不上專(zhuān)用組件,至少都做的都還不賴(lài)。而單一數(shù)據(jù)組件選型可以極大地削減項(xiàng)目額外復(fù)雜度,這意味著能節(jié)省很多成本。它讓十個(gè)人才能搞定的事,變成一個(gè)人就能搞定的事。
對(duì)絕大多數(shù)應(yīng)用而言,終其生命周期都不會(huì)有超出Pg能力范圍之外的數(shù)據(jù)量級(jí)。為了不需要的規(guī)模而設(shè)計(jì)是白費(fèi)功夫,實(shí)際上這屬于過(guò)早優(yōu)化的一種形式。
此外,只有當(dāng)沒(méi)有單個(gè)軟件能滿(mǎn)足你的所有需求時(shí),才會(huì)存在分拆與集成的利弊權(quán)衡。集成多種異構(gòu)技術(shù)是相當(dāng)棘手的工作,如果真有那么一樣技術(shù)可以滿(mǎn)足你所有的需求,那么使用該技術(shù)就是最佳選擇,而不是試圖用多個(gè)組件來(lái)重新實(shí)現(xiàn)它。
當(dāng)業(yè)務(wù)規(guī)模增長(zhǎng)到一定量級(jí)時(shí),可能不得不使用基于微服務(wù)/總線(xiàn)的架構(gòu),將數(shù)據(jù)庫(kù)的功能分拆為多個(gè)組件。但PostgreSQL的存在極大地推后了這個(gè)權(quán)衡到來(lái)的閾值,而且分拆之后依然能繼續(xù)發(fā)揮重要作用。
2、運(yùn)維友好,有很多非常實(shí)用的特性
當(dāng)然除了功能強(qiáng)大之外,Pg的另外一個(gè)重要的優(yōu)勢(shì)就是運(yùn)維友好。有很多非常實(shí)用的特性:
DDL能放入事務(wù)中,刪表,TRUNCATE,創(chuàng)建函數(shù),索引,都可以放在事務(wù)里原子生效,或者回滾。
這就能進(jìn)行很多騷操作,比如在一個(gè)事務(wù)里通過(guò)RENAME,完成兩張表的王車(chē)易位。
能夠并發(fā)地創(chuàng)建、刪除索引,添加非空字段,重整索引與表(不鎖表)。
這意味著可以隨時(shí)在線(xiàn)上不停機(jī)進(jìn)行重大的模式變更,按需對(duì)索引進(jìn)行優(yōu)化。
復(fù)制方式多樣:段復(fù)制,流復(fù)制,觸發(fā)器復(fù)制,邏輯復(fù)制,插件復(fù)制等等。
這使得不停服務(wù)遷移數(shù)據(jù)變得相當(dāng)容易:復(fù)制,改讀,改寫(xiě)三步走,線(xiàn)上遷移穩(wěn)如狗。
提交方式多樣:異步提交,同步提交,法定人數(shù)同步提交。
這意味著Pg允許在C和A之間做出權(quán)衡與選擇,例如交易庫(kù)使用同步提交,普通庫(kù)使用異步提交。
系統(tǒng)視圖非常完備,做監(jiān)控系統(tǒng)相當(dāng)簡(jiǎn)單。
FDW的存在讓ETL變得無(wú)比簡(jiǎn)單,一行SQL就能解決。
FDW可以方便地讓一個(gè)實(shí)例訪(fǎng)問(wèn)其他實(shí)例的數(shù)據(jù)或元數(shù)據(jù)。在跨分區(qū)操作,數(shù)據(jù)庫(kù)監(jiān)控指標(biāo)收集,數(shù)據(jù)遷移等場(chǎng)景中妙用無(wú)窮。同時(shí)還可以對(duì)接很多異構(gòu)數(shù)據(jù)系統(tǒng)。
3、生態(tài)健,社區(qū)相當(dāng)活躍
PostgreSQL的生態(tài)也很健康,社區(qū)相當(dāng)活躍。
相比MySQL,PostgreSQL的一個(gè)巨大的優(yōu)勢(shì)就是協(xié)議友好。PG采用類(lèi)似BSD/MIT的PostgreSQL協(xié)議,差不多理解為只要?jiǎng)e打著Pg的旗號(hào)出去招搖撞騙,隨便你怎么搞,換皮出去賣(mài)都行。君不見(jiàn)多少?lài)?guó)產(chǎn)數(shù)據(jù)庫(kù),或者不少“自研數(shù)據(jù)庫(kù)”實(shí)際都是Pg的換皮或二次開(kāi)發(fā)產(chǎn)品。
當(dāng)然,也有很多衍生產(chǎn)品會(huì)回饋主干,比如,,這些基于PG的“數(shù)據(jù)庫(kù)”,最后都變成了原生PG的插件。很多時(shí)候你想實(shí)現(xiàn)個(gè)什么功能,一搜就能找到對(duì)應(yīng)的插件或?qū)崿F(xiàn)。開(kāi)源嘛,還是要講一些情懷的。
Pg的代碼質(zhì)量相當(dāng)之高,注釋寫(xiě)的非常清晰。C的代碼讀起來(lái)有種Go的感覺(jué),代碼都可以當(dāng)文檔看了。能從中學(xué)到很多東西。
以上是關(guān)于postgresql的優(yōu)勢(shì)及簡(jiǎn)介的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。