2024年值得關(guān)注的八個未來數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫管理系統(tǒng)在數(shù)據(jù)庫技術(shù)領(lǐng)域占據(jù)主導(dǎo)地位已經(jīng)多年了。當SQL在1970年代首次出現(xiàn)時,關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的使用和受歡迎程度迅速提升。很快,MySQL成為了大多數(shù)公司和團隊首選的數(shù)據(jù)庫。
然而,2023年帶來了一系列具有顛覆性的數(shù)據(jù)庫。盡管其中一些數(shù)據(jù)庫仍然使用傳統(tǒng)的關(guān)系模式構(gòu)建,但其他數(shù)據(jù)庫提供了創(chuàng)新的方法,值得我們在2024進行重點關(guān)注。
在本文中,我們將探索一些創(chuàng)新和未來感十足的數(shù)據(jù)庫,并比較它們的特點。
PlanetScale
圖片
PlanetScale是基于Vitess水平擴展MySQL技術(shù)的無服務(wù)器MySQL平臺。Vitess是由谷歌開發(fā)的可擴展的開源數(shù)據(jù)庫,用于應(yīng)對數(shù)十億YouTube用戶的需求。處理如此規(guī)模的工作并非易事。
PlanetScale有趣的地方在于它是一個分支數(shù)據(jù)庫,這是一種最近才出現(xiàn)但看起來非常有前景的新型工作流程。那么,什么是分支數(shù)據(jù)庫?
什么是分支數(shù)據(jù)庫?
圖片
分支數(shù)據(jù)庫允許你從主數(shù)據(jù)庫創(chuàng)建不同的分支,用于不同的目的。你可以將這個工作流程想象成類似于Git這樣的版本控制系統(tǒng),可以在項目中進行更改而不會破壞整個代碼庫。
你可以將你的主數(shù)據(jù)庫或生產(chǎn)數(shù)據(jù)庫復(fù)制到一個單獨的數(shù)據(jù)庫分支中。然后,可以在該數(shù)據(jù)庫分支中進行實驗、進行更改,當你對它們完全滿意時,將其合并回主數(shù)據(jù)庫。因此,通過保持生產(chǎn)數(shù)據(jù)庫的完整性,你可以高效而直觀地對數(shù)據(jù)庫進行嘗試和實驗。
PlanetScale的分支工作流程
PlanetScale還為你的數(shù)據(jù)庫添加了分支,這樣你就可以在一個獨立的開發(fā)分支上測試模式更改。這個分支與生產(chǎn)分支或你的主數(shù)據(jù)庫是分開的。這提供了一個獨立的工作環(huán)境,而不需要顯式地創(chuàng)建一個用于嘗試模式更改的暫存或測試環(huán)境。
你可以在PlanetScale官方文檔了解更多有關(guān)分支的含義以及PlanetScale如何使用這個概念。
特點
PlanetScale自動創(chuàng)建每日備份,并在開箱即用時保護生產(chǎn)分支上的直接模式更改,減少了意外破壞生產(chǎn)數(shù)據(jù)庫的可能性。
非阻塞模式更改是它提供的另一個有趣的特性。當你想要更改數(shù)據(jù)庫模式時,你可以創(chuàng)建并部署一個請求來更新你的表,而不會中斷你的用戶。它還可以與Prisma等第三方工具簡單集成。
Prisma是一個開源的數(shù)據(jù)庫工具包,為現(xiàn)代Web應(yīng)用程序提供了一個類型安全的ORM(對象關(guān)系映射)層。當你想要更改數(shù)據(jù)庫模式時,你可以使用Prisma的遷移功能生成必要的SQL腳本,以非阻塞的方式應(yīng)用于你的數(shù)據(jù)庫,而不會中斷你的用戶。這樣,你可以將PlanetScale與Prisma集成,以便應(yīng)用程序保持在線的同時高效地更新你的模式。
價格
雖然PlanetScale的團隊計劃每月需要599美元,但定價計劃中包含了一個免費的層級。在免費層級中,你可以獲得1個生產(chǎn)分支和1個開發(fā)分支,每月可以進行10億次讀取和100萬次寫入。如果你需要更多的讀取、寫入和分支,而又不想花費太多金錢,你也可以選擇他們的Scalar計劃,每月29美元。
缺點
因為它是一個相對較新的服務(wù),所以它并不具備標準MySQL數(shù)據(jù)庫的所有特性,比如存儲過程、觸發(fā)器、索引和其他類似的功能。
此外,如果你對分布式數(shù)據(jù)庫的概念還不熟悉,學習曲線可能會成為一個問題。但對于這類新型的數(shù)據(jù)庫,還是值得關(guān)注的。
YugaByteDB
Yugabyte
YugaByteDB是一個開源的Postgres數(shù)據(jù)庫,在云原生環(huán)境中加載了所有Postgres的原生特性。它允許同時在多個云上托管你的數(shù)據(jù)庫,從而更好地控制數(shù)據(jù)庫系統(tǒng),消除了供應(yīng)商鎖定的問題。這也使你能夠在不同的地區(qū)部署你的云實例,從而為你的數(shù)據(jù)庫提供更高的故障容忍度。
特點
YugaByte支持SQL和NoSQL API。這使得開發(fā)人員可以根據(jù)他們的熟悉程度和使用情況選擇最適合的API類型。除了確保高性能和可伸縮性,它還提供高可用性。
價格
Yugabyte提供了一個完全托管的專用集群,每核心每小時0.25美元。
缺點
作為另一個分布式數(shù)據(jù)庫系統(tǒng),與傳統(tǒng)的SQL數(shù)據(jù)庫相比,它可能具有更陡峭的學習曲線和一些額外的復(fù)雜性開銷。
Dolt
dolt
Dolt是一個獨特的數(shù)據(jù)庫,它與版本控制和Git的工作原理相同。它可以跟蹤數(shù)據(jù)的變化,并了解數(shù)據(jù)的變化是如何以及何時發(fā)生的。就像一個Git倉庫一樣,你可以推送、拉取、分叉或克隆數(shù)據(jù)庫。非常有趣,是吧?
Dolt的分支行為
和PlanetScale以及Neon一樣,Dolt也實現(xiàn)了分支行為,你可以在不破壞生產(chǎn)數(shù)據(jù)的情況下對數(shù)據(jù)進行實驗。
由于它是基于Git工作流程構(gòu)建和運行的,使用Dolt時,所有的git命令,如git log、git add等,可以在命令行中用dolt log、dolt add等命令替代。
特點
Dolt支持SQL查詢,使得從傳統(tǒng)SQL背景下來的開發(fā)人員能夠輕松地檢索和更新數(shù)據(jù)。
Dolt提供的另一個有趣特性是協(xié)同編輯。使用Dolt的團隊可以同時在同一個Dolt數(shù)據(jù)庫上進行多個開發(fā)人員的工作。Dolt會自動處理對數(shù)據(jù)庫所做的所有更改的合并。
定價和缺點
Dolt是開源的,并且完全免費。然而,由于其功能有限,如存儲過程或用戶定義函數(shù),它可能只適用于特定的用例。
CockroachDB
CockroachDB
由前谷歌員工開發(fā)的CockroachDB是與SQL和Postgres兼容的最強大的分布式數(shù)據(jù)庫系統(tǒng)之一。它使用Go語言構(gòu)建,為SQL和NoSQL API提供多模型支持,支持像YugaByteDB一樣的多云部署,并能處理每秒數(shù)百萬次查詢。
它擁有強大的社區(qū)支持,并為開發(fā)人員提供了大量的學習資源,如教程、博客文章等。
定價
雖然它有一個免費版本,可以用于開發(fā)和測試模式下的小型項目,但它可能有點昂貴,特別是與其他開源替代品相比。然而,它的專用計劃的價格比PlanetScale低得多,每月295美元。
缺點
作為一個分布式數(shù)據(jù)庫系統(tǒng),它需要設(shè)置和管理系統(tǒng)的復(fù)雜性開銷,同時還需要一個陡峭的學習曲線。由于性能問題,它也不是對于延遲低、吞吐量高的應(yīng)用程序的理想選擇。
CloudFlare D1
現(xiàn)在讓我們介紹一個在邊緣運行SQLite數(shù)據(jù)庫的無服務(wù)器數(shù)據(jù)庫平臺。Cloudflare Durable Objects (D1)用于構(gòu)建和部署有狀態(tài)應(yīng)用程序。
CloudFlare D1使用與傳統(tǒng)SQL數(shù)據(jù)模型不同的數(shù)據(jù)模型,它看起來和工作起來非常像面向文檔的數(shù)據(jù)庫,如MongoDB。
如何在CloudFlare D1中存儲數(shù)據(jù)?
讓我們來看一個例子。我們知道,在傳統(tǒng)的SQL數(shù)據(jù)庫中,數(shù)據(jù)存儲在由行和列組成的表中。
假如一個名為“employees”的表,它有以下列作為“id”、“name”、“age”和“department”。
下面是表的示例:
id name age department
1 Alice 28 Sales
2 Bob 35 Marketing
3 Charlie 42 Finance
相比之下,CloudFlare D1將數(shù)據(jù)存儲為類似于文檔數(shù)據(jù)庫的對象形式。
因此,將上面的例子轉(zhuǎn)換為CloudFlare D1中的對象,我們有一個名為“Employee”的對象,它具有以下屬性:“id”、“name”、“age”和“department”:
Employee {
id: 1,
name: 'Alice',
age: 28,
department: 'Sales'
}
因此,上述數(shù)據(jù)以一個帶有唯一標識符的Employee對象的形式存儲。
特點
Cloudflare的一個很棒的地方是它已經(jīng)有了適用于workers的鍵值存儲,但其中的一個折衷是原生事務(wù)不起作用。因此,你也可以使用JavaScript編寫存儲過程,并直接在數(shù)據(jù)庫中運行這些過程,它們基本上是代碼片段。然后你可以使用它們來創(chuàng)建事務(wù)或其他可重用的查詢。
此外,CloudFlare D1作為無服務(wù)器數(shù)據(jù)庫的特點使得部署和管理變得很容易。
定價
Cloudflare D1目前處于alpha階段,完全免費進行測試、使用和實驗。這是你玩弄它并了解它是否成為你未來首選數(shù)據(jù)庫的最佳時機。
缺點
CloudFlare D1目前尚未準備好用于生產(chǎn)。它的使用案例非常有限,不涉及復(fù)雜的數(shù)據(jù)結(jié)構(gòu)或傳統(tǒng)的SQL查詢。持久化對象方法的另一個問題是遷移困難,最終導(dǎo)致供應(yīng)商鎖定。總的來說,盡管這個數(shù)據(jù)庫聽起來很有前景,但你現(xiàn)在還不能在你的生產(chǎn)應(yīng)用程序中使用它。
說到無服務(wù)器架構(gòu),Xata提供了一個基于Postgres和Elasticsearch的有趣的關(guān)系型數(shù)據(jù)庫。它將你的數(shù)據(jù)視為一個電子表格,使開發(fā)人員能夠輕松構(gòu)建需要靈活模式的應(yīng)用程序。你也可以將它想象成AirTable或Notion的開發(fā)人員友好的替代品。
Xata
圖片
xata
特點
它內(nèi)置了全文搜索功能,并且可以幫助你使用提供的架構(gòu)編輯器實時可視化表之間的關(guān)系。
它還支持像Dolt一樣的分支,并主要用于實時處理大量數(shù)據(jù)。它還支持一些高級查詢功能,如聚合、過濾、連接等。
定價
Xata的定價基于每秒的速率限制或可以進行的數(shù)據(jù)庫請求次數(shù)。它有一個免費計劃,每秒提供75個請求,最多支持75萬條記錄。
如果你是一家初創(chuàng)公司或計劃很快推出MVP,他們的免費計劃應(yīng)該足夠使用。他們的專業(yè)計劃起價為每個單位每月8美元。
缺點
Xata的一些主要缺點包括未來遷移到其他平臺的困難以及總體復(fù)雜性,通常需要豐富的專業(yè)知識才能使用。
圖片
Surreal DB
Surreal DB是用Rust編寫的,它為關(guān)系型、文檔型和圖形數(shù)據(jù)庫提供了一個易于使用的單一API。
特點
在數(shù)據(jù)建模方面,它非常靈活,非常適合推薦引擎、社交網(wǎng)絡(luò)等應(yīng)用。在這方面,它類似于流行的圖形數(shù)據(jù)庫Neo4J。
它還非常簡單,可以與任何SQL類型的查詢語言一起使用,并提供高效執(zhí)行實時查詢的能力。
例如,下面是一個在SurrealQL中的插入查詢,看起來幾乎與SQL的插入查詢相同:
INSERT INTO company {
name: 'Siddhant',
age: 24,
hobbies: ['technical writing', 'basketball']
};
此外,你可以使用SurrealQL直接連接你的Surreal DB到你的客戶端應(yīng)用程序。
缺點
由于它相對較新,文檔和社區(qū)支持有限,特別是與帖子中討論的其他數(shù)據(jù)庫相比。它還使用自己的查詢語言SurrealQL來編寫查詢。這可能會引入新的學習曲線,并且缺乏優(yōu)質(zhì)資源來掌握這個查詢語言可能會在許多用例中成為開發(fā)人員的障礙。
定價
目前,SurrealDB沒有任何云服務(wù)提供,但你可以加入他們的云等待名單,這是他們未來計劃的一部分。你可以自己在本地或私有服務(wù)器上進行自托管。
雖然SurrealDB不是完全開源的,但它根據(jù)商業(yè)源代碼許可證進行許可,這使得它在所有開發(fā)和生產(chǎn)使用中都是免費的。
Fauna DB
FaunaDB是最通用和易于使用的數(shù)據(jù)庫之一。它由前Twitter工程師創(chuàng)建,是一個NoSQL數(shù)據(jù)庫,遵循類似于MongoDB的文檔數(shù)據(jù)庫范例。
特點
盡管是一個NoSQL數(shù)據(jù)庫,它支持原生連接操作,這是文檔數(shù)據(jù)庫中最缺失的功能。它非常適用于處理復(fù)雜的關(guān)系型數(shù)據(jù),如社交圖譜,并且有自己的自定義查詢語言FQL。它還默認支持Graphql API。
它使用分布式架構(gòu)以提供高可用性和低延遲。它可以成為無服務(wù)器應(yīng)用程序或微服務(wù)架構(gòu)的理想選擇。
定價
它有一個免費計劃,提供10萬次讀取、5萬次寫入和5GB的存儲空間。非常適合個人項目,但可能不適用于MVP或更大的生產(chǎn)項目。
你可以升級到FaunaDB的任何計劃,價格從每月25美元的個人計劃,到每月150美元的團隊計劃,再到每月500美元的大型組織計劃。
缺點
和SurrealDB類似,F(xiàn)aunaDB也使用了自己的查詢語言FQL,這可能會給開發(fā)人員帶來學習曲線。
例如,下面是一個在FQL中常用的查詢:
Paginate(Documents(Collection("users")))
上述查詢基本上是從一個名為“users”的集合中檢索所有文檔,并默認進行分頁。
在SQL中的等效查詢是:
SELECT * from users
正如你所見,這兩個查詢非常不同,它們在語法上沒有相似之處。
此外,與我們在帖子中討論的其他數(shù)據(jù)庫相比,F(xiàn)aunaDB的價格相對較高。
結(jié)論
我們已經(jīng)討論了一些最先進和未來感的數(shù)據(jù)庫。這些數(shù)據(jù)庫大多數(shù)采用了分布式架構(gòu),這可能需要額外的工作和資源來進行設(shè)置、掌握和充分利用。然而,它們的創(chuàng)新方法和新穎的工作流表明它們有著寶貴的應(yīng)用。
如果你考慮完全擺脫SQL,選擇一個基于定價、易用性、社區(qū)支持和整體實用性等因素的數(shù)據(jù)庫。如果你偏愛文檔數(shù)據(jù)庫,F(xiàn)aunaDB是一個不錯的選擇。如果你對分支數(shù)據(jù)庫感興趣,可以看看PlanetScale或Dolt。如果你需要一個靈活的模式,Xata是一個很好的選擇。我們討論的每個數(shù)據(jù)庫都有其獨特的特點。