數(shù)據(jù)庫(kù)行業(yè)發(fā)展至今,在數(shù)據(jù)層面有很多的加速和變革,尤其是過(guò)去幾年的云數(shù)倉(cāng)爆炸式增長(zhǎng),帶來(lái)了行業(yè)的很多變化。毫無(wú)疑問(wèn),云數(shù)據(jù)倉(cāng)庫(kù)已成為企業(yè)數(shù)據(jù)堆棧的基石,各種規(guī)模的公司和組織習(xí)慣使用數(shù)據(jù)倉(cāng)庫(kù)來(lái)分析業(yè)務(wù)數(shù)據(jù)。Snowflake 的迅速崛起就是這一趨勢(shì)的典型代表。
但如果我們把大數(shù)據(jù)的變量拆成速度、數(shù)量和多樣性三個(gè)維度,我們發(fā)現(xiàn)大家最關(guān)注的維度仍然是速度。當(dāng)我們重新審視對(duì)“大數(shù)據(jù)”的定義,并且結(jié)合數(shù)據(jù)資產(chǎn)的要素,我們最重要的需求是從 OLTP [1] 數(shù)據(jù)庫(kù)處理的數(shù)據(jù)資產(chǎn)上的微服務(wù)對(duì)低延遲消耗的要求。
【資料圖】
與此同時(shí),很多大數(shù)據(jù)部門(mén)購(gòu)買(mǎi)了所有新工具并從遺留系統(tǒng)遷移之后,他們發(fā)現(xiàn)仍然無(wú)法去理解這些數(shù)據(jù),也許數(shù)據(jù)大小根本不是問(wèn)題所在。世界的數(shù)據(jù)量變大了,但硬件也以更快的速度變大了,供應(yīng)商仍在推動(dòng)硬件的能力擴(kuò)展。今天我們就來(lái)聊一家有點(diǎn)“不一樣”思路的數(shù)據(jù)庫(kù)創(chuàng)業(yè)公司——MortherDuck,看看他們的產(chǎn)品 DuckDB 是如何來(lái)理解這個(gè)世界的。
歷史沿革:歐美合作的商業(yè)化產(chǎn)物
說(shuō)起 MortherDuck 的前世今生,首先還是要從產(chǎn)品 DuckDB 講起。DuckDB 是一個(gè)專(zhuān)門(mén)構(gòu)建的進(jìn)程內(nèi)在線(xiàn)分析處理數(shù)據(jù)庫(kù)管理系統(tǒng),其旨在實(shí)現(xiàn)高效數(shù)據(jù)分析。從 2019 年 DuckDB 第一個(gè)開(kāi)源版本發(fā)布,到 2021 年,短短兩年間,DuckDB 的周下載量增長(zhǎng)迅速。此時(shí),這個(gè)原本由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì) (CWI) 創(chuàng)立的項(xiàng)目被分拆出來(lái)獨(dú)立運(yùn)作,項(xiàng)目研究人員 Hannes Mühleisen 和 Mark Raasveldt 成立了 DuckDB Labs。
故事至此,為什么 MortherDuck 還未出現(xiàn)呢?別急,我們還缺少另一位主角——谷歌 Big Query 的創(chuàng)始工程師 Jordan Tigani,他也關(guān)注著 DuckDB,并一直尋求為市場(chǎng)提供輕型數(shù)據(jù)庫(kù)產(chǎn)品。在和 DuckDB Labs 的聯(lián)合創(chuàng)始人 Mühleisen 溝通并獲得支持后,Tigani 開(kāi)始嘗試將開(kāi)源的 DuckDB 商業(yè)化。新公司 MortherDuck 就此誕生,并獲得了由紅點(diǎn)資本 (美國(guó)) 領(lǐng)投的 1250 萬(wàn)美元天使輪融資和 A16Z 領(lǐng)投 3500 萬(wàn)美元 A 輪融資,公司估值 1.75 億美元。
回頭來(lái)看,作為一家起步時(shí)間不長(zhǎng)的初創(chuàng)公司,獲得這樣的資本認(rèn)可不可謂不成功。由于 DuckDB 并非 MortherDuck 的原創(chuàng)開(kāi)源產(chǎn)品,因此,想要未來(lái)長(zhǎng)久且穩(wěn)定地基于開(kāi)源產(chǎn)品構(gòu)建服務(wù),得到項(xiàng)目創(chuàng)始團(tuán)隊(duì)的支持至關(guān)重要。
在雙方的合作中 DuckDB 團(tuán)隊(duì)一定程度上參與了 MotherDuck,而 MotherDuck 又是 DuckDB 基金會(huì)的成員,該非營(yíng)利組織擁有 DuckDB 的大部分知識(shí)產(chǎn)權(quán)。DuckDB 自己的商業(yè)部門(mén) DuckDB Labs 是 MotherDuck 的股東。不得不說(shuō) Tigani 與 DuckDB Labs 合作是聰明之舉,通過(guò)此舉,雙方利益得以綁定。
定位:OLAP 領(lǐng)域的 SQLite
要聊 DuckDB,我們先來(lái)看看 SQLite,其可以稱(chēng)得上世界上使用最多的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),我們幾乎在每臺(tái)手機(jī)、每個(gè)瀏覽器和操作系統(tǒng)上都能找到它的身影,它甚至也在飛機(jī)上運(yùn)行。
由于 SQLite 是嵌入式的,因此其不需要外部服務(wù)器管理。同時(shí),他幾乎綁定了每種語(yǔ)言,也正是基于這些特點(diǎn),讓其更容易使用,我們必須承認(rèn) SQLite 的偉大。但與此同時(shí),其問(wèn)題也突出。SQLite 是為 OLTP 而設(shè)計(jì)的,采用行存儲(chǔ),不能利用內(nèi)存來(lái)加快計(jì)算速度,查詢(xún)優(yōu)化器非常有限,所以對(duì)于分析來(lái)說(shuō)非常不友好。
正是基于此,DuckDB 看到了機(jī)會(huì)。簡(jiǎn)單來(lái)講,它是用于分析 (OLAP 領(lǐng)域 [2] ) 的 SQLite,作為一個(gè)進(jìn)程內(nèi)數(shù)據(jù)庫(kù),它使開(kāi)發(fā)人員、數(shù)據(jù)科學(xué)家、數(shù)據(jù)工程師和數(shù)據(jù)分析師能夠使用純 SQL 以極快的分析能力為它的代碼提供支持。此外,它有能力在可能存在的地方分析數(shù)據(jù),例如在筆記本電腦或云端。
DuckDB 使用了一個(gè)列式矢量化查詢(xún)引擎,該引擎仍會(huì)解釋查詢(xún),但會(huì)在一次操作中處理大量向量,由此減少傳統(tǒng)系統(tǒng) (如 PostgreSQL、MySQL 或 SQLite) 中按順序處理每一行的開(kāi)銷(xiāo),提升查詢(xún)性能。
SQLite 是小型的關(guān)系型數(shù)據(jù)庫(kù),可用于進(jìn)程內(nèi)的部署。
DuckDB 所處象限
認(rèn)知:數(shù)據(jù)庫(kù)行業(yè)的“非共識(shí)”
與行業(yè)大部分公司不同,MortherDuck 擁有不一樣的行業(yè)信仰。
首先,Tigani 認(rèn)為大多數(shù)客戶(hù)和組織的數(shù)據(jù)存儲(chǔ)適中,并不大。同時(shí),客戶(hù)數(shù)據(jù)大小服從冪律分布。最大客戶(hù)的存儲(chǔ)量是第二大客戶(hù)的兩倍,第三大客戶(hù)的存儲(chǔ)量是第二大客戶(hù)的一半,依此類(lèi)推。因此,雖然有客戶(hù)擁有數(shù)百 PB 的數(shù)據(jù),但大小很快就會(huì)下降。
其次,存算分離中存在存儲(chǔ)偏差,數(shù)據(jù)大小增速快于計(jì)算。假如業(yè)務(wù)是靜態(tài)的,既不增長(zhǎng)也不收縮,數(shù)據(jù)隨時(shí)間線(xiàn)性增長(zhǎng),但計(jì)算需求不會(huì)改變太多,因?yàn)榇蠖鄶?shù)分析都是針對(duì)近期數(shù)據(jù)進(jìn)行的。這種存算偏差,讓我們可能根本不需要進(jìn)行分布式處理。而且,很多用戶(hù)希望他們的問(wèn)題得到簡(jiǎn)單快速的答案 —— 他們不想等待云。
最后,大多數(shù)數(shù)據(jù)很少被查詢(xún)。得到處理的數(shù)據(jù)中,有很大一部分不到 24 小時(shí)。到數(shù)據(jù)保存一周時(shí),查詢(xún)的可能性或許比最近一天低 20 倍。歷史數(shù)據(jù)往往很少被查詢(xún),這也就意味著數(shù)據(jù)工作集大小比我們預(yù)期的易于管理。如果有一個(gè)包含 10 年數(shù)據(jù)的 PB 表,這些數(shù)據(jù)最后可能被壓縮至不到 50 GB。所以,很多云廠(chǎng)商專(zhuān)注于 100TB 的查詢(xún)性能,這可能不僅與大多用戶(hù)無(wú)關(guān),且會(huì)分散他們提供出色用戶(hù)體驗(yàn)的能力。
因此,MortherDuck 提出了自己的觀點(diǎn),大數(shù)據(jù)是真實(shí)存在的,但大多數(shù)人可能不需要擔(dān)心。“大數(shù)據(jù)”已死——現(xiàn)今我們最重要的事情不是擔(dān)心數(shù)據(jù)大小,而是專(zhuān)注于我們將如何使用它來(lái)做出更好的決策。我們也會(huì)時(shí)常問(wèn)自己,組織真的會(huì)生成大量數(shù)據(jù)嗎?如果生成了,真的需要一次使用大量數(shù)據(jù)嗎?如果需要,數(shù)據(jù)真的太大而無(wú)法放在一臺(tái)機(jī)器上嗎?也許不同的組織會(huì)給出不同的答案。
未來(lái):沒(méi)有“銀彈”,沒(méi)有萬(wàn)能的選擇
我們目前所處的時(shí)代高速變化,產(chǎn)生了很多數(shù)據(jù)庫(kù)管理系統(tǒng)。正如我們看到的情況,目前這個(gè)世界還沒(méi)有萬(wàn)能的數(shù)據(jù)庫(kù)管理系統(tǒng)。大家都會(huì)采取不同的權(quán)衡取舍,以更好地適應(yīng)特定的用例,DuckDB 也是如此。有時(shí)我們需要側(cè)重考慮為多個(gè)并發(fā)用戶(hù)提供服務(wù),有時(shí)我們也需要一個(gè)對(duì)單用戶(hù)工作負(fù)載非??斓那度胧綌?shù)據(jù)庫(kù)。
DuckDB 會(huì)成功嗎?答案也許并不確定。不過(guò)我們確實(shí)看到了一個(gè)充滿(mǎn)活力的開(kāi)源社區(qū)正在形成,雖然還未有任何商業(yè)化的信息披露,但我們應(yīng)有耐心給予這個(gè) A 輪公司,畢竟故事才剛剛開(kāi)始。
DuckDB 在 Github 的 star 數(shù)量變化
注釋:
[1] OLTP:On-Line Transaction Processing 聯(lián)機(jī)事務(wù)處理過(guò)程,也稱(chēng)為面向交易的處理過(guò)程。
[2] OLAP:Online Analytical Processing 聯(lián)機(jī)分析處理。聯(lián)機(jī)分析處理 OLAP 是一種軟件技術(shù),它使分析人員能夠迅速、一致、交互地從各個(gè)方面觀察信息,以達(dá)到深入理解數(shù)據(jù)的目的。
關(guān)鍵詞: 數(shù)據(jù)倉(cāng)庫(kù) olap sqlite