自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

三大流行數(shù)據(jù)庫(MongoDB、PostgreSQL和Harper)大比拼

譯文
數(shù)據(jù)庫 PostgreSQL MongoDB
本文以當(dāng)前流行的MongoDB和PostgreSQL兩大數(shù)據(jù)庫系統(tǒng)為參照,引入Harper這一全新的數(shù)據(jù)庫,并對三者的功能、結(jié)構(gòu)、以及適用場景進行了比較。

【51CTO.com快譯】在日常生活中,許多人都是在基于他們已經(jīng)知道的事物基礎(chǔ)上,去學(xué)習(xí)或了解新的事物。這是人類的天性。同樣,在產(chǎn)品和技術(shù)方面,人們需要事先找到一個基線作為起點,然后問出類似:“相對于X,那么Y到底有哪些不同呢?”等問題。下面,我們將按照這樣的思路,以當(dāng)前流行的MongoDB和PostgreSQL兩大數(shù)據(jù)庫系統(tǒng)為參照,引入Harper這一全新的數(shù)據(jù)庫,并對三者的功能、結(jié)構(gòu)、以及適用場景進行比較。

[[358467]]

總體而言,在大多數(shù)情況下,鑒于多方面因素的考慮,我們并不需要得出“哪家數(shù)據(jù)庫最強?”的結(jié)論,而是要探索出在為特定項目選擇數(shù)據(jù)庫時,需要考慮的各種因素和適用場景。

定義

MongoDB被分類為NoSQL數(shù)據(jù)庫。由于使用的是類似JSON的文檔,作為可選的模式集合(schema),因此它是面向文檔(document-oriented)的。

PostgreSQL是傳統(tǒng)的RDBMS(relational database management system,關(guān)系數(shù)據(jù)庫管理系統(tǒng))。由于主要被用于關(guān)系型數(shù)據(jù),因此它本質(zhì)上是面向?qū)ο蟮摹?/p>

HarperDB是具有REST API和動態(tài)模式集合的分布式數(shù)據(jù)庫。它支持NoSQL和包括聯(lián)合(joins)功能在內(nèi)的SQL。例如,您可以通過NoSQL JSON來提取數(shù)據(jù),并立即通過SQL進行查詢。

差異概述

MongoDB與PostgreSQL:作為一個關(guān)系型數(shù)據(jù)庫,PostgreSQL可被用于處理更為復(fù)雜的過程、設(shè)計和集成。而作為一個NoSQL數(shù)據(jù)庫,MongoDB通常被用于簡單、非結(jié)構(gòu)化的數(shù)據(jù)場景,同時也非常適合于大數(shù)據(jù)應(yīng)用程序的開發(fā)。PostgreSQL能夠強制執(zhí)行模式集合的驗證,而Mongo則不然。

HarperDB與MongoDB:作為一種文檔存儲,MongoDB非常適合非結(jié)構(gòu)化數(shù)據(jù);而HarperDB提供了完整的文檔存儲功能,以及企業(yè)級的ACID SQL,即:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、和持久性(Durability)。基準(zhǔn)測試(Benchmark test)發(fā)現(xiàn),HarperDB比Mongo快37倍,而價格卻不到其一半。HarperDB不但具有原生的REST API,支持針對JSON的SQL,而且更易于使用和管理。Mongo雖然已針對大規(guī)模的寫操作進行了優(yōu)化,但是并未針對讀操作采取任何優(yōu)化。而針對LMDB(Lightning Memory-Mapped Database)編寫的HarperDB數(shù)據(jù)存儲算法,可實現(xiàn)大規(guī)模的讀和寫操作,進而提高整體性能。

HarperDB與PostgreSQL:PostgreSQL是善于處理復(fù)雜數(shù)據(jù)或嚴(yán)格的一致性。而HarperDB比PostgreSQL更靈活,它簡化了大量的安裝、配置和管理工作。HarperDB不但允許那些具有關(guān)系型數(shù)據(jù)庫背景的開發(fā)人員繼續(xù)沿用SQL技能,還允許他們使用來自同一數(shù)據(jù)模型的NoSQL。

輔助功能

MongoDB、PostgreSQL和HarperDB均可在云端、本地、以及數(shù)據(jù)中心等任何地方運行。PostgreSQL雖然不像HarperDB Cloud和MongoDB Atlas那樣有云端版本,但是各個云提供商會提供所謂的PostgreSQL即服務(wù)(PostgreSQL-as-a-service)。

深入了解

MongoDB主要適用于C、C++和JavaScript語言編程;PostgreSQL則主要適用于C語言編程;而HarperDB適用于Node.js的編寫。此外,LMDB不但適用于C語言的編寫,而且在安裝過程中使用到了Python。

MongoDB在后臺采用BSON(binary JavaScript Object Notation,二進制JavaScript對象表示法),來加快查詢的速度。在您打開集合時,它會轉(zhuǎn)換為JSON以便被讀取。

PostgreSQL采用SQL(一種結(jié)構(gòu)化查詢語言)來定義、訪問和操作數(shù)據(jù)庫。當(dāng)然,PostgreSQL也有一個JSON數(shù)據(jù)類型。

HarperDB對數(shù)據(jù)的類型并無強制性要求。它當(dāng)前存儲的所有數(shù)據(jù)屬性均為字符串,而且可以通過SQL和(或)NoSQL來查詢數(shù)據(jù)。同時,HarperDB也致力于讓管理員能夠顯式地設(shè)置屬性類型(如:數(shù)字或字符串型),以方便性能的調(diào)優(yōu)。

數(shù)據(jù)存儲與架構(gòu)

MongoDB將數(shù)據(jù)存儲為單獨的文檔,而并不考慮其屬性。PostgreSQL將數(shù)據(jù)存儲在傳統(tǒng)的表和行中。而HarperDB則將數(shù)據(jù)存儲在表、行、以及對象中,并且所有頂級屬性在默認(rèn)情況下都已經(jīng)建立了索引。

HarperDB能夠?qū)ⅹ毺氐臄?shù)據(jù)存儲算法運行在LMDB上。這使得HarperDB可以在單個產(chǎn)品中,提取JSON文檔和關(guān)系型數(shù)據(jù)。HarperDB會持續(xù)將傳入的數(shù)據(jù),映射到數(shù)據(jù)模型中。而無論傳入的數(shù)據(jù)是何種類型,它們都會根據(jù)HarperDB的內(nèi)部數(shù)據(jù)模型來予以存儲,并方便了開發(fā)人員通過SQL或NoSQL進行查詢。

此外,MongoDB和HarperDB都具有分布式的體系架構(gòu),而PostgreSQL則被視為一種單體架構(gòu)。

ACID屬性

由于支持企業(yè)級的ACID SQL事務(wù),因此數(shù)據(jù)在HarperDB和PostgreSQL內(nèi)具有可靠的有效性。而像MongoDB之類的NoSQL數(shù)據(jù)庫,通常注重的是終極一致性,而非ACID整體屬性。2020年5月,有一項研究發(fā)現(xiàn)了MongoDB未對交易進行完全隔離的錯誤,進而確證了它不符合ACID。當(dāng)然,HarperDB和PostgreSQL都能夠遵循ANSI SQL標(biāo)準(zhǔn)。

模式集合和表

對于MongoDB和HarperDB而言,通過使用JSON,您可以靈活地更改架構(gòu),而不會產(chǎn)生任何后果。當(dāng)然,對應(yīng)的文檔可能會在鍵/值方面有所不同。

MongoDB和HarperDB都可以通過水平方向的擴展,來提高速度與性能。其中,HarperDB具有雙向表級(bidirectional table-level)的數(shù)據(jù)復(fù)制特性。通過使用HarperDB簡單的pub-sub模型,您可以訂閱和復(fù)制數(shù)據(jù)的方式,將數(shù)據(jù)水平發(fā)布到不同節(jié)點處。

PostgreSQL可以垂直方向擴展。隨著數(shù)據(jù)庫的變大,它會需要更多的空間或內(nèi)存,因此對應(yīng)的停機時間也會增加。也就是說,對于PostgreSQL之類的關(guān)系型數(shù)據(jù)庫,您與其在事后更改表的結(jié)構(gòu),并可能導(dǎo)致數(shù)據(jù)庫的停機,以及應(yīng)用服務(wù)的中斷,不如在系統(tǒng)上線之前,就對整個架構(gòu)進行完善的設(shè)計和配置。此外,PostgreSQL數(shù)據(jù)庫可以使用外鍵,來顯式地鏈接表與表之間的數(shù)據(jù),以用于保持?jǐn)?shù)據(jù)的規(guī)范化。

使用場景

如前文所述,由于PostgreSQL中的事務(wù)能夠遵循ACID屬性,而對于金融科技(fintech)之類的行業(yè)而言,他們需要對數(shù)據(jù)的狀態(tài)擁有絕對的控制權(quán)​​,因此Postgres之類的關(guān)系型數(shù)據(jù)庫是不錯的選擇。

如果您僅具有非結(jié)構(gòu)化的數(shù)據(jù),或是正在使用大數(shù)據(jù),那么最好將水平擴展的方法,與MongoDB之類的工具協(xié)同使用。

相對于現(xiàn)有的數(shù)據(jù)庫系統(tǒng),HarperDB更適合于同時需要SQL和NoSQL,快速應(yīng)用開發(fā)與集成,邊緣計算,分布式計算,實時分析,以及高度事務(wù)性(high transactions)處理的項目。當(dāng)然,如果您需要全文索引、高度結(jié)構(gòu)化的關(guān)系型數(shù)據(jù)、跨系統(tǒng)的嚴(yán)格一致性、以及約束開發(fā)人員訪問或維護某些數(shù)據(jù)項目的話,HarperDB就不太適用了。

小結(jié)

總的說來,吸收了MongoDB和PostgreSQL各項優(yōu)點的HarperDB,對SQL、NoSQL、以及NewSQL的各種產(chǎn)品功能,進行了擴展與市場融合,填補了其中的空白與短板,并為開發(fā)人員提供了實用且高效的工具。

原文標(biāo)題:HarperDB vs MongoDB vs PostgreSQL,作者:Margo McCabe

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2023-11-14 09:00:00

向量數(shù)據(jù)庫ChromaMilvus

2019-10-23 15:06:23

HadoopMongoDB數(shù)據(jù)庫

2021-08-26 09:00:00

SaaS工具云服務(wù)

2020-08-04 17:06:40

Merging Rebasing Git

2010-05-28 11:09:51

SVN功能

2009-11-16 09:05:47

PostgreSQLInnoDB多版本并發(fā)控制

2011-03-08 10:55:00

亞馬遜谷歌微軟

2011-03-08 10:46:49

亞馬遜谷歌微軟

2015-07-02 09:15:02

2011-01-19 11:10:30

2010-03-18 14:54:46

主流無線技術(shù)

2024-07-19 08:33:56

2016-08-10 20:58:21

ARM架構(gòu)X86架構(gòu)CPU

2010-05-24 18:15:34

SVN中Branch和

2010-07-14 13:38:51

Perl開發(fā)工具

2019-07-13 15:00:17

結(jié)構(gòu)化SQLNOSQL數(shù)據(jù)庫

2010-09-07 17:24:44

DB2數(shù)據(jù)庫

2010-09-08 15:41:28

SIP協(xié)議棧

2014-01-07 17:08:02

Java開源框架

2017-09-10 14:29:03

眼力
點贊
收藏

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