云數(shù)據(jù)庫(kù)的出現(xiàn)感猛,正在悄無(wú)聲息的七扰,深刻的推動(dòng)了這一趨勢(shì)的到來(lái):一些服務(wù),如亞馬遜的 S3陪白、谷歌的 BigQuery颈走、Snowflake、Databricks咱士,盡管已經(jīng)能夠很輕松的存儲(chǔ)不同數(shù)據(jù)源的不同數(shù)據(jù)類(lèi)型立由,大量數(shù)據(jù)計(jì)算的問(wèn)題似乎已經(jīng)得到了解決,但還有一些企業(yè)序厉,希望它們能夠存儲(chǔ)更多更全面的信息锐膜,從而獲得更好的用戶體驗(yàn)和商業(yè)收入。
現(xiàn)在是創(chuàng)建一家數(shù)據(jù)庫(kù)公司最好的時(shí)機(jī)脂矫。
數(shù)據(jù)庫(kù)公司在過(guò)去 10 年中欢策,已經(jīng)籌集了超過(guò) 87 億美元,其中近一半的資金笼痛,即 41 億美元,是在過(guò)去 24 個(gè)月內(nèi)籌集的牺堰,相比于 2019 年的 8.49 億美元,增加了很多(根據(jù)私募股權(quán)基金統(tǒng)計(jì))颅围。 根據(jù) Snowflake 和 Databricks 的天價(jià)估值伟葫,和 2021 年 160 億美元的收入,這并不奇怪院促,這緣于市場(chǎng)的增長(zhǎng)筏养。這個(gè)市場(chǎng)在過(guò)去四年里翻了一番,達(dá)到近 900 億美元常拓,預(yù)計(jì)在未來(lái)四年里將再次翻番渐溶。可以說(shuō)弄抬,這是一個(gè)絕佳的機(jī)會(huì)茎辐。
下圖是 2021 年數(shù)據(jù)庫(kù)融資的清單。
20年前掂恕,你只有一個(gè)選擇拖陆,那就是關(guān)系型數(shù)據(jù)庫(kù)。
今天懊亡,隨著云依啰、微服務(wù)、分布式應(yīng)用店枣、全球規(guī)模速警、實(shí)時(shí)數(shù)據(jù)、深度學(xué)習(xí)的出現(xiàn)艰争,新的數(shù)據(jù)庫(kù)架構(gòu)出現(xiàn)了坏瞄,這是為了滿足處理超算的性能要求。不同的系統(tǒng)用于快速讀取甩卓,和快速寫(xiě)入鸠匀。專(zhuān)門(mén)用于支持臨時(shí)分析的系統(tǒng),或用于非結(jié)構(gòu)化逾柿、半結(jié)構(gòu)化缀棍、事務(wù)性、關(guān)系性机错、圖形或時(shí)間序列的數(shù)據(jù)爬范。當(dāng)然,也有用于緩存弱匪、搜索青瀑、基于索引、事件的數(shù)據(jù)。
每個(gè)人都有不同的性能需求斥难,包括高可用性枝嘶、橫向擴(kuò)展、分布式一致性哑诊、故障轉(zhuǎn)移保護(hù)群扶、分區(qū)容忍、無(wú)服務(wù)器和完全管理镀裤。
因此竞阐,企業(yè)平均需要用七個(gè)或更多不同的數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)(比如 Snowflake 作為你的數(shù)據(jù)倉(cāng)庫(kù),Clickhouse 用于臨時(shí)分析暑劝,Timescale 用于時(shí)間序列數(shù)據(jù)骆莹,Elastic 用于搜索數(shù)據(jù),S3 用于日志担猛,Postgres 用于交易汪疮,Redis 用于緩存或應(yīng)用數(shù)據(jù),Cassandra 用于復(fù)雜工作負(fù)載毁习,Dgraph 用于關(guān)系數(shù)據(jù)或動(dòng)態(tài)模式)。這一切的前提卖丸,是假設(shè)你的服務(wù)部署在云中纺且,并且你已經(jīng)從頭開(kāi)始建立了一個(gè)現(xiàn)代數(shù)據(jù)堆棧。
與 5-10 年前相比稍浆,這些服務(wù)和平臺(tái)的性能和穩(wěn)定性是無(wú)可比擬的载碌。同時(shí),數(shù)據(jù)庫(kù)層的可擴(kuò)展性和碎片化也逐漸開(kāi)始帶來(lái)新的挑戰(zhàn)衅枫。例如嫁艇,在不同的模式和系統(tǒng)之間進(jìn)行同步,編寫(xiě)新的 ETL 作業(yè)來(lái)銜接多個(gè)數(shù)據(jù)庫(kù)的工作負(fù)載弦撩,持續(xù)的交叉通信和連接問(wèn)題步咪,在這么多不同的系統(tǒng)中管理動(dòng)態(tài)擴(kuò)展集群的開(kāi)銷(xiāo),或者在新集群或系統(tǒng)上線時(shí)進(jìn)行數(shù)據(jù)傳輸益楼。每一個(gè)都有不同的擴(kuò)展猾漫、分支、傳播感凤、分片和資源要求悯周。
更重要的是,每月都有新的數(shù)據(jù)庫(kù)出現(xiàn)陪竿,用于解決企業(yè)大規(guī)模生產(chǎn)中的下一個(gè)挑戰(zhàn)禽翼。
新時(shí)代的數(shù)據(jù)庫(kù)
因此,現(xiàn)在的問(wèn)題,未來(lái)的數(shù)據(jù)庫(kù)闰挡,真的需要像今天一樣锐墙,被反復(fù)重新定義嗎?
我認(rèn)為解总,不應(yīng)該是這樣的贮匕。
與此同時(shí),我希望下一代數(shù)據(jù)庫(kù)的外觀與上一代有很大不同花枫。它們應(yīng)該具有以下能力刻盐。
- 最重要的計(jì)算、查詢和基礎(chǔ)設(shè)施劳翰,可以位于商品存儲(chǔ)層之上敦锌。
- 不需要對(duì)基礎(chǔ)數(shù)據(jù)進(jìn)行遷移或重組。
- 不需要重新編寫(xiě)或解析查詢佳簸。
- 在多個(gè)存儲(chǔ)引擎之上工作乙墙,無(wú)論是列式、非關(guān)系式還是圖式生均。
- 將配置听想、可用性和規(guī)模的復(fù)雜性轉(zhuǎn)移到代碼中。
- 允許應(yīng)用程序調(diào)用一個(gè)單一的接口马胧,無(wú)論底層數(shù)據(jù)基礎(chǔ)設(shè)施如何汉买。
- 作為無(wú)服務(wù)器或管理服務(wù),開(kāi)箱即用佩脊。
- 在單人和多人模式下蛙粘,為開(kāi)發(fā)者優(yōu)先的體驗(yàn)而構(gòu)建。
- 為現(xiàn)有(藍(lán)海)和新(綠地)項(xiàng)目提供第 0 天的價(jià)值威彰。
許多由來(lái)已久的問(wèn)題正在推動(dòng)這個(gè)未來(lái)的數(shù)據(jù)庫(kù):
- 沒(méi)有人愿意將數(shù)據(jù)遷移到一個(gè)新的數(shù)據(jù)庫(kù)出牧。每一個(gè)新的數(shù)據(jù)庫(kù)引入到一個(gè)組織中,其成本是你已經(jīng)擁有的數(shù)據(jù)庫(kù)數(shù)量的 N2 問(wèn)題歇盼。遷移到一個(gè)新的架構(gòu)舔痕、模式、配置旺遮,以及需要重新優(yōu)化的再平衡赵讯、查詢規(guī)劃、擴(kuò)展耿眉、資源需求等等边翼,往往是 [價(jià)值/(時(shí)間+成本)]接近零的問(wèn)題。這可能是一個(gè)驚喜鸣剪,但今天仍有數(shù)十億美元的 Oracle 實(shí)例仍在為關(guān)鍵的應(yīng)用程序提供動(dòng)力组底,而且它們很可能不會(huì)消失丈积。
- 大部分的殺手锏不會(huì)出現(xiàn)在存儲(chǔ)層。計(jì)算和存儲(chǔ)的分離债鸡,已經(jīng)極大的提高了性能江滨,現(xiàn)在,它允許使用超級(jí)便宜的原始存儲(chǔ)厌均,和精細(xì)調(diào)整的唬滑、可彈性擴(kuò)展的計(jì)算/查詢/infra 層。存儲(chǔ)層可以成為數(shù)據(jù)基礎(chǔ)設(shè)施的中心棺弊,并以各種不同的方式被多種工具利用晶密,以解決路由、解析模她、可用性稻艰、規(guī)模、翻譯等問(wèn)題侈净。
- 數(shù)據(jù)庫(kù)正在慢慢地分拆成高度專(zhuān)業(yè)化的服務(wù)尊勿,擺脫過(guò)去那種過(guò)于復(fù)雜的、被鎖定的方法畜侦。沒(méi)有一個(gè)數(shù)據(jù)庫(kù)可以完全解決交易和分析用例元扔;具有快速讀寫(xiě)、高可用性和一致性旋膳;同時(shí)解決邊緣的緩存問(wèn)題摇展,并根據(jù)需要進(jìn)行水平擴(kuò)展。但是溺忧,在存儲(chǔ)引擎的基礎(chǔ)上將其分解成一系列的層,可以引入一系列新的服務(wù)盯孙,以提供新的性能和保障水平鲁森。例如,可以根據(jù)用戶振惰、查詢和數(shù)據(jù)意識(shí)優(yōu)化緩存的動(dòng)態(tài)緩存服務(wù)歌溉;根據(jù)數(shù)據(jù)分布查詢需求和數(shù)據(jù)變化率管理分片;通過(guò)連接池和資源管理實(shí)現(xiàn)高可用性和水平擴(kuò)展的代理層骑晶;解決模式間異步和同步傳播的數(shù)據(jù)管理框架痛垛;或者 GraphQL 和關(guān)系型數(shù)據(jù)庫(kù)之間的翻譯層。這些多維度的問(wèn)題可以作為程序化的解決方案桶蛔,在代碼中構(gòu)建匙头,與數(shù)據(jù)庫(kù)本身解耦,并且性能明顯更好仔雷。
- 目前為止蹂析,人們一直在規(guī)模和簡(jiǎn)單性之間權(quán)衡舔示。Postgres、MySQL 和 Cassandra 都非常強(qiáng)大电抚,但很難搞好惕稻。Firebase 和 Heroku 超級(jí)容易使用,但不能擴(kuò)展蝙叛。這些數(shù)據(jù)庫(kù)技術(shù)擁有龐大的安裝基礎(chǔ)和強(qiáng)大的引擎俺祠,并經(jīng)受住了 Facebook 和 Netflix 級(jí)別規(guī)模的時(shí)間考驗(yàn)。但是根據(jù)你的需求借帘,調(diào)整它們往往需要一個(gè)博士和一個(gè)數(shù)據(jù)庫(kù)專(zhuān)家團(tuán)隊(duì)蜘渣,就像 Facebook、Netflix姻蚓、Uber宋梧、Airbnb 的團(tuán)隊(duì)一樣。對(duì)于我們其他人狰挡,就會(huì)在一致性和隔離性捂龄、分片、鎖定加叁、時(shí)鐘偏差倦沧、查詢規(guī)劃、安全它匕、網(wǎng)絡(luò)等方面掙扎展融。像 Supabase 和 Hydras 這樣的公司可以用標(biāo)準(zhǔn)的 Postgres 安裝,在上面建立強(qiáng)大的計(jì)算和管理層次豫柬,既可以有 Postgres 的拓展性告希,也可以有 Firebase 或 Heroku 的簡(jiǎn)單性。
- 30 多年來(lái)烧给,數(shù)據(jù)庫(kù)索引模型一直沒(méi)有改變燕偶。今天,我們?nèi)匀皇褂猛ㄓ玫拇〉铡⒁坏肚械乃饕该矗?B 樹(shù)和哈希表,而對(duì)于數(shù)據(jù)榴鼎,卻像黑箱一樣摸不透伯诬。稍微具備一些數(shù)據(jù)意識(shí),例如利用累積分布函數(shù)(CDF)巫财,正如我們?cè)?Learned Indexes 中看到的那樣盗似,可以導(dǎo)致更小的索引,更快的查找平项,增加并行性桥言,并減少 CPU 的使用萌踱。我們甚至還沒(méi)有開(kāi)始展示下一代的索引,這些索引已經(jīng)適應(yīng)了我們數(shù)據(jù)的形狀和變化号阿。
- 幾乎沒(méi)有機(jī)器學(xué)習(xí)被用來(lái)提高數(shù)據(jù)庫(kù)性能并鸵。相反,今天我們定義靜態(tài)規(guī)則集和配置扔涧,以優(yōu)化查詢性能园担、成本建模和工作量預(yù)測(cè)。這些組合的枯夜、多維的問(wèn)題集對(duì)人類(lèi)來(lái)說(shuō)太復(fù)雜了弯汰,無(wú)法配置,是完美的機(jī)器學(xué)習(xí)問(wèn)題湖雹。磁盤(pán)咏闪、內(nèi)存和 CPU 等資源被很好地描述,查詢歷史被很好地理解摔吏,數(shù)據(jù)分布也可以被定義鸽嫂。我們可以看到查詢性能、成本和資源利用率提高了 10 倍征讲,而且再也看不到嵌套循環(huán)連接据某。
- 數(shù)據(jù)平臺(tái)和工程團(tuán)隊(duì)不希望成為DBA、DevOps或SRE诗箍。他們希望他們的系統(tǒng)和服務(wù)能夠開(kāi)箱即用癣籽,而不必考慮資源、連接池滤祖、緩存邏輯筷狼、吸塵、查詢規(guī)劃匠童、更新索引等問(wèn)題桑逝。今天的團(tuán)隊(duì)希望有一套強(qiáng)大的端點(diǎn),易于部署俏让,并能正常工作。
- 對(duì)操作實(shí)時(shí)數(shù)據(jù)的需求正在推動(dòng)對(duì)混合系統(tǒng)的需求茬暇。交易系統(tǒng)可以快速地將新的記錄寫(xiě)入一個(gè)表首昔,并具有很高的準(zhǔn)確性、速度和可靠性糙俗。一個(gè)分析系統(tǒng)可以在一組表和數(shù)據(jù)中快速搜索勒奇,以找到答案。隨著流式數(shù)據(jù)和分析系統(tǒng)對(duì)更快響應(yīng)的需求巧骚,HTAP(混合交易/分析處理)系統(tǒng)的想法正在出現(xiàn)——特別是對(duì)于那些具有高度操作性的用例——意味著非常高水平的新寫(xiě)入/記錄和更靈敏的遙測(cè)或分析業(yè)務(wù)指標(biāo)赊颠。這引入了一種新的架構(gòu)模式格二,即交易和分析數(shù)據(jù)和系統(tǒng)開(kāi)始相互接近,并不統(tǒng)一竣蹦。
一類(lèi)新的數(shù)據(jù)庫(kù)
一類(lèi)新的云數(shù)據(jù)庫(kù)公司正在出現(xiàn)顶猜,有效地將傳統(tǒng)的數(shù)據(jù)庫(kù)單體堆棧解構(gòu)為核心分層服務(wù);存儲(chǔ)痘括、計(jì)算长窄、優(yōu)化、查詢規(guī)劃纲菌、索引挠日、功能等等。像 ReadySet翰舌、Hasura嚣潜、Xata、Ottertune椅贱、Apollo懂算、Polyscale 和其他公司就是這一運(yùn)動(dòng)的例子,并迅速成為新的開(kāi)發(fā)者標(biāo)準(zhǔn)夜涕。
這些新的非捆綁式數(shù)據(jù)庫(kù)專(zhuān)注于解決緩存犯犁、索引、規(guī)模和可用性等硬問(wèn)題女器,并開(kāi)始消除性能和穩(wěn)定性之間的分歧酸役。更快速的數(shù)據(jù)庫(kù),永遠(yuǎn)穩(wěn)定的驾胆,能夠處理大規(guī)模數(shù)據(jù)涣澡,并具有數(shù)據(jù)意識(shí),模糊了傳統(tǒng)的操作和分析系統(tǒng)之間的分界線丧诺。未來(lái)看起來(lái)一片光明入桂。
最后
我的個(gè)人主頁(yè) 里也同步進(jìn)行了更新,歡迎來(lái)逛逛驳阎。