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

關(guān)系型數(shù)據(jù)庫RDBMS的舊與新 -- 談?wù)凬ewSQL

數(shù)據(jù)庫
互聯(lián)網(wǎng)應(yīng)用典型的高并發(fā)訪問量、大數(shù)據(jù)存儲量以及跨地理區(qū)域等特性使得傳統(tǒng)的基于關(guān)系型數(shù)據(jù)庫的應(yīng)用架構(gòu)無所適從,NewSQL 的誕生與當(dāng)前互聯(lián)網(wǎng)應(yīng)用的需求密不可分。

 [[218644]]

這是最好的時代,也是最壞的時代。

在這個時代我們有各種技術(shù)可以選擇,在這個時代我們有各種技術(shù)要選擇。

>>>> 言必稱互聯(lián)網(wǎng)

在計(jì)算機(jī)科技這塊蓬勃發(fā)展的領(lǐng)域,新技術(shù)形態(tài)和新的商業(yè)模式源源不斷的涌現(xiàn)、令人眼花繚亂。世紀(jì)之初的以流量為王互聯(lián)網(wǎng)泡沫破滅,并不能阻擋當(dāng)下互聯(lián)網(wǎng)行業(yè)繼續(xù)攀登高峰,只是在這將近 20 年的時間里,消費(fèi)者與互聯(lián)網(wǎng)從業(yè)人員有足夠長的時間一點(diǎn)一滴地將行業(yè)基礎(chǔ)夯實(shí),將原來的浮云壘高臺,變?yōu)榱私裉煲粋€實(shí)實(shí)在在的行業(yè)。

互聯(lián)網(wǎng)已經(jīng)從計(jì)算機(jī)網(wǎng)絡(luò)、通信領(lǐng)域的一個名詞慢慢演變成了一個形容詞,互聯(lián)網(wǎng)行業(yè)、互聯(lián)網(wǎng)應(yīng)用(Internet application)中的互聯(lián)網(wǎng)代表著高并發(fā)、敏態(tài) IT、快速伸縮、數(shù)據(jù)驅(qū)動、精益運(yùn)營等等,一切都顯得區(qū)別于傳統(tǒng)的行業(yè)、傳統(tǒng)的應(yīng)用。

支撐互聯(lián)網(wǎng)應(yīng)用的 PaaS 平臺已經(jīng)日漸清晰,以 Docker 為代表的容器技術(shù),在勢頭上已經(jīng)力壓虛擬機(jī),為互聯(lián)網(wǎng)應(yīng)用提供了標(biāo)準(zhǔn)的運(yùn)行環(huán)境。而在上層的集群管理、編排標(biāo)準(zhǔn),大而全的 Kubernetes 和不甘于繼續(xù)做小巧靈巧的 Swarm,聯(lián)合開源社區(qū)的眾多玩家(Spring Cloud, Tyk, Prometheus)等,共同打造了包含負(fù)載均衡、彈性伸縮、服務(wù)注冊與發(fā)現(xiàn)、應(yīng)用監(jiān)控等功能的面向互聯(lián)網(wǎng)應(yīng)用的高可用 PaaS 平臺。

另一方面,互聯(lián)網(wǎng)應(yīng)用典型的高并發(fā)訪問量、大數(shù)據(jù)存儲量以及跨地理區(qū)域等特性使得傳統(tǒng)的基于關(guān)系型數(shù)據(jù)庫的應(yīng)用架構(gòu)無所適從,NewSQL 的誕生與當(dāng)前互聯(lián)網(wǎng)應(yīng)用的需求密不可分。

NewSQL is a class of modern relational database management systems that seek to provide the same scalable performance of NoSQL systems for online transaction processing (OLTP)read-write workloads while still maintaining the ACID guarantees of a traditional database system.

有著遠(yuǎn)大愿景的 NewSQL 試圖比肩擴(kuò)展性占優(yōu)的 NoSQL,并且實(shí)現(xiàn)傳統(tǒng)關(guān)系型數(shù)據(jù)庫所擅長的滿足 ACID 特性的事務(wù)處理。然而考慮到關(guān)系型數(shù)據(jù)庫,從 Edgar F. Codd 的文章 A Relational Model of Data for Large Shared Data Banks 發(fā)展到 NoSQL 盛行再到今天,學(xué)術(shù)界與工業(yè)界并進(jìn)的數(shù)據(jù)庫理論和工程差不多已經(jīng)經(jīng)歷了四十多年了,那么,標(biāo)榜為 New 的 NewSQL,到底 New 在哪里?NewSQL 是真有其貨還是只是商業(yè)上的一種游戲?

>>>> 關(guān)系模型與 SQL 標(biāo)準(zhǔn)

在關(guān)系型數(shù)據(jù)庫流行并成為數(shù)據(jù)庫領(lǐng)域真正意義上的標(biāo)準(zhǔn)之前,曾經(jīng)出現(xiàn)過幾個往往被一筆帶過的模型的數(shù)據(jù)庫,基本上都可以歸類為導(dǎo)航型數(shù)據(jù)庫,它們在物理結(jié)構(gòu)上面向的是磁帶存儲,在邏輯結(jié)構(gòu)上是現(xiàn)實(shí)世界某種程度的映射。例如:層級模型是以樹形結(jié)構(gòu)組織數(shù)據(jù)的,每個子節(jié)點(diǎn)只會擁有唯一的父節(jié)點(diǎn)。公司內(nèi)部的組織結(jié)構(gòu)就是我們所熟悉一個層次結(jié)構(gòu)。

A navigational database is a type of database in which records or objects are found primarily by following references from other objects.

不得不提的一個層次模型數(shù)據(jù)庫是誕生于 1968 年的 IBM 的 IMS(Information manangement system)。相傳在 1966 年,美國國家航空航天局找到了 IBM,尋求一款軟件,以求在登月工程中能夠有效的跟蹤管理數(shù)以萬計(jì)的火箭零部件。

If we could put a man on the Moon, could we also create a computer program to track the millions of rocket parts it takes?

如今,IMS 依然老當(dāng)益壯,在大型制造業(yè)、銀行依然承擔(dān)著重要的角色,還會時不時的舉辦社區(qū)活動。但是它已經(jīng)淡出了我們這些標(biāo)榜為互聯(lián)網(wǎng)從業(yè)人員的視線,畢竟在推崇開源、微服務(wù)、敏態(tài) IT、輕資產(chǎn)的互聯(lián)網(wǎng)行業(yè),它已經(jīng)顯得格格不入了。

但是它對整個數(shù)據(jù)庫領(lǐng)域,甚至整個計(jì)算機(jī)科學(xué)都留下了不可磨滅的貢獻(xiàn),時至今日,再楞頭的程序員,也不會輕易把自己深陷在應(yīng)用自己管理、查詢數(shù)據(jù)的泥淖里。

It helped introduce the idea that an application’s code should be separate from the data that it operates on. This allows developers to write applications that only focus on the access and manipulation of data, and not the complications and overhead associated with how to actually perform these operations.

1970 年,同樣是 IBM 的 Edgar Codd 發(fā)表了數(shù)據(jù)庫發(fā)展史上重量級的一篇文章 A Relational Model of Data for Large Shared Data Banks(文章地址:https://cs.uwaterloo.ca/~david/cs848s14/codd-relational.pdf),Edgar 在這著名的文章里,以數(shù)學(xué)理論為基礎(chǔ),論證了為了做到對稱探索(Symmetric Exploitation),即用戶可以根據(jù)任何已知的屬性組合去探索剩下的未知屬性,必須要消除導(dǎo)航數(shù)據(jù)庫中的幾個依賴:

  • 排序依賴
  • 索引依賴
  • 訪問路徑依賴

很多人認(rèn)為關(guān)系型數(shù)據(jù)庫的成功在于其完美的數(shù)學(xué)模型,但是不可忽視的另外一面,關(guān)系型數(shù)據(jù)庫在數(shù)據(jù)庫發(fā)展的混沌時期,為其打開了一面窗,原本導(dǎo)航型數(shù)據(jù)庫,關(guān)注點(diǎn)在于數(shù)據(jù)的寫入和基于路徑的信息檢索,而關(guān)系型數(shù)據(jù)庫,讓人們看到了數(shù)據(jù)分析的曙光。

之后借助于硬件技術(shù)特別是存儲設(shè)備的發(fā)展,出現(xiàn)了支持 Semi-random access 的磁盤,關(guān)系型數(shù)據(jù)庫如魚得水,加上之后演繹出的關(guān)系代數(shù)、 E-R 模型、SQL 標(biāo)準(zhǔn)、 Codd's 12 rules、數(shù)據(jù)倉庫等等,使其主導(dǎo)了數(shù)據(jù)庫領(lǐng)域近 40 年。

The introduction of low-cost hard drives that provided semi-random access to data led to new models of database storage better suited to these devices. Among these, the relational database and especially SQL became the canonical solution from the 1980s through to about 2010.

關(guān)系型數(shù)據(jù)庫中的 關(guān)系 并不是指我們直觀感受到的表與表之間通過外鍵關(guān)聯(lián)在一起的 關(guān)系,關(guān)系(Relation)是一個數(shù)學(xué)上的概念,其定義為:

給定 n 個集合 S1, S2, ..., Sn,R 是一個 n 元數(shù)組(n-tuples),它的第一個元素取自集合 S1,第二個元素取自集合 S2,以此類推。我們將 R 稱之為基于該 n 個集合的一個 Relation,Sj 為 R 的第 j 個域(Domain)。

簡要的表述:

R 是集合 S1 × S2 × ... × Sn 笛卡爾積的一個子集

在工業(yè)界,1979 年誕生的 Oracle、1983 年誕生的 DB2,90 年代開源領(lǐng)域的 MySQL 和 PostgreSQL,都是各位耳熟能詳?shù)膸讉€有名的數(shù)據(jù)庫。

數(shù)據(jù)庫領(lǐng)域下一個大事件就是 SQL 的標(biāo)準(zhǔn)化了。由于 Edgar 并未在那篇著名的論文中指定關(guān)系型數(shù)據(jù)庫具體實(shí)現(xiàn)方法,只是描述了關(guān)系模型,據(jù)此,市面上出現(xiàn)了多個關(guān)系型數(shù)據(jù)庫,各個系統(tǒng)的存儲引擎各不相同,數(shù)據(jù)的組織形式千差萬別。面向過程的數(shù)據(jù)庫操作語言顯然是不合適的。

比如,某一個學(xué)校組織了一次考試,為了錄入每個學(xué)生的成績,教務(wù)處老師需要處理以下細(xì)節(jié):

1. 成績表的存儲位置

2. 各個列的組織形式

3. 分隔符

4. 解壓縮算法

...

你也一定會同意,這樣不行!的確,這樣對應(yīng)用的侵入性太強(qiáng)。我們哪里在寫應(yīng)用,我們在寫瑣碎的計(jì)算細(xì)節(jié)!

SQL 是高級的非過程化數(shù)據(jù)庫操縱語言,它允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作,不要求用戶指定對數(shù)據(jù)的存放方法,也不需要用戶了解其具體的數(shù)據(jù)操縱方式。它將數(shù)據(jù)庫以一個簡單的界面呈現(xiàn)出來,能使具有底層結(jié)構(gòu)完全不同的數(shù)據(jù)庫系統(tǒng)和不同數(shù)據(jù)庫之間,使用相同的 SQL 作為數(shù)據(jù)的輸入、運(yùn)算與管理。

你只需要用這種標(biāo)準(zhǔn)化的語言,告訴數(shù)據(jù)庫你要做什么,而不是告訴它,為了做這件事情,所要一步步地怎么做。

回到錄入成績那個例子,你只需要對數(shù)據(jù)庫執(zhí)行以下操作:

 

  1. create table score(id intname string, level char); 
  2.  
  3. insert into score values(12, John, 'B'
  4.  
  5. insert into score values(19, Lily, 'A'); 
  6.  
  7. ... 

 

查詢獲得'A' 的學(xué)生名單?小菜一碟:

 

  1. select * from score where level = 'A'

解耦合是計(jì)算機(jī)領(lǐng)域一個長盛不衰的話題,縱便有 data locality,存儲計(jì)算分離也是一股強(qiáng)大的潮流;應(yīng)用和數(shù)據(jù)庫解耦合催生了數(shù)據(jù)庫,編程與運(yùn)行平臺的解耦合催生了高級編程語言、編譯器;應(yīng)用與承載平臺的解耦合催生了容器技術(shù)、Docker。

扯遠(yuǎn)了,有一點(diǎn)是要記清楚的,耦合存在的意義就是被解開,就像記錄存在的意義就是被打破一樣。

>>>> 互聯(lián)網(wǎng)時代的探索

互聯(lián)網(wǎng)應(yīng)用猶如一頭咆哮的巨獸,對于習(xí)慣了傳統(tǒng)應(yīng)用的人們來說,仿佛先民在《山海經(jīng)》里所描繪的巨獸。

面對互聯(lián)網(wǎng)應(yīng)用的高并發(fā)、大容量和跨地域等挑戰(zhàn),Sharding 是分而治之的最為樸素的解決方案,基本思想就是面對九頭蛇這種怪獸,召集九個有能力對付一條蛇的獵人,一起投入戰(zhàn)斗。

Sharding 的具體做法是把一個 Database 切分成幾個部分放到不同的服務(wù)器上,以分布式的手段增強(qiáng)數(shù)據(jù)庫的性能。Sharding 又有水平切分和垂直切分的區(qū)別,如果數(shù)據(jù)庫中 table 較多,可以把不同的表放在不同的服務(wù)器上,這便是垂直切分。如果某些 table 的數(shù)據(jù)量特別大,需要對其進(jìn)行水平切分,將這個表的數(shù)據(jù)分發(fā)到多個服務(wù)器上。在互聯(lián)網(wǎng)應(yīng)用場景,一般以水平切分為主,實(shí)現(xiàn)上以數(shù)據(jù)庫中間件(Database middleware)為主,之后的討論不特別說明的情況,Sharding 都是指水平切分。

由于原理上的限制,Sharding 方案幾乎很難做到有效的擴(kuò)展。比如,某大型互聯(lián)網(wǎng)應(yīng)用預(yù)測需要 Sharding 5 臺數(shù)據(jù)庫,數(shù)據(jù)分發(fā)策略為:

 

  1. hash(some_field_in_record) % 5 

后來由于業(yè)務(wù)訪問量增加,需要 7 臺數(shù)據(jù)庫服務(wù)器的時候,相應(yīng)的數(shù)據(jù)分發(fā)策略為:

 

  1. hash(some_field_in_record) % 7 

為了保障老數(shù)據(jù)還能夠正確的訪問,這里就需要做數(shù)據(jù)的重新分發(fā)了,那么大數(shù)量的數(shù)據(jù)重新加載,是一個很漫長而痛苦的過程?;ヂ?lián)網(wǎng)應(yīng)用,一般都不能承受如此長時間的服務(wù)中斷。可以選擇在備庫上操作,但是過程相當(dāng)也煩瑣。

當(dāng)然,深入一點(diǎn)的有一致性 Hash 算法,但往往會造成分片數(shù)據(jù)庫之間的負(fù)載傾斜,理論上并無很好的解決辦法。

另外,Sharding 方案對事務(wù)的支持蛻化嚴(yán)重,有 Sharding 表參與的關(guān)聯(lián)大部分需要應(yīng)用開發(fā)者自己實(shí)現(xiàn)其邏輯。

Sharding middleware works well for simple operations like reading or updating a single record.It is more difficult, however, to execute queries that update more than one record in a transaction or join tables.

最終一些公司放棄了 Sharding 中間件的努力,開始開發(fā)它們自己的數(shù)據(jù)庫管理系統(tǒng),開啟了 NoSQL 之路。傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)往往為了一致性和正確性,而犧牲了高可用性和高性能。這種 trade-off 對于基于 Web 的互聯(lián)網(wǎng)應(yīng)用是不合適的,它們需要更多的是系統(tǒng)的高可用性和高并發(fā)下的性能,被關(guān)系型數(shù)據(jù)庫拒之門外的非結(jié)構(gòu)化數(shù)據(jù)也是這一過程重要的推手。創(chuàng)新之路最早開始對于一些簡單的互聯(lián)網(wǎng)應(yīng)用,它們只是重復(fù)不斷地寫入記錄,根據(jù)主鍵執(zhí)行 look-up 查詢,這樣一來,關(guān)系模型和 SQL 都成了累贅,數(shù)據(jù)的寫入和查詢都是通過更為高效的 API 來完成,因此,最開始 NoSQL 是 No more SQL 的簡稱。

后來,在易用性上也有一些系統(tǒng)慢慢加入了部分 SQL 的支持,除此之外, NoSQL 在高可用性、性能等方面也有著不錯的表現(xiàn),NoSQL 最終演變成 Not Only SQL。

然而,放棄了關(guān)系模型,支持的 SQL 也只是標(biāo)準(zhǔn)的一小部分,在 API 方面 NoSQL 沒有也不可能有一個通用的標(biāo)準(zhǔn),也就是在 NoSQL A 系統(tǒng)上運(yùn)行的應(yīng)用是不可能遷移到 NoSQL B 上的,也就是平常我們所說的技術(shù)棧綁定。NoSQL 更像是一個桀驁不馴的野馬,伯樂視之若千里馬,也有人被摔的鼻青臉腫。

NoSQL 中兩個最有名的系統(tǒng)當(dāng)屬 Google 的 Bigtable 和 Amazon 的 Dynamo 了,它們開始都是只對內(nèi)服務(wù)的(現(xiàn)在已經(jīng)開放為云服務(wù)),其他的企業(yè)和組織開始根據(jù)它們的設(shè)計(jì)理念,集結(jié)開源社區(qū)的力量,創(chuàng)建了幾個有名的系統(tǒng),包括 Cassandra, HBase 和 MongoDB。

>>>> NewSQL 的回歸

計(jì)算機(jī)行業(yè)的發(fā)展是一個很有趣的過程,一些對自己需求、現(xiàn)有系統(tǒng)充分了解的大牛們,嫌棄現(xiàn)存的系統(tǒng)對他們強(qiáng)加了太多的限制,于是他們另起爐灶,搞了一套新的好用的東西。之后為了造福于天下,惠及眾生,接入了通用性,加入各種各樣的接口和規(guī)范,成了標(biāo)準(zhǔn)化的產(chǎn)品,繼續(xù)被新一輪大牛嫌棄并拋棄。

引入了分布式的架構(gòu)的 NoSQL,在擴(kuò)展性、高可用性和性能上相對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫有著很大的提升,然而它們付出的代價是去除了事務(wù)支持和關(guān)系模型,同時,大部分系統(tǒng)都為了高可用性而放棄了系統(tǒng)的強(qiáng)一致性,而采用最終一致性模型,加上缺少 SQL 和統(tǒng)一的 API 規(guī)范,普通的應(yīng)用開發(fā)者很難在這樣的系統(tǒng)上正確地構(gòu)建他們互聯(lián)網(wǎng)應(yīng)用。包括 Google 內(nèi)部的應(yīng)用開發(fā)人員,也有著類似的抱怨。

Developers of many OLTP applications found it difficult to build these applications without a strong schema system, cross-row transactions, consistent replication and a powerful query language.

OLTP 應(yīng)用開發(fā)者關(guān)注的重點(diǎn)在數(shù)據(jù)庫的高并發(fā)、事務(wù)的支持上,這些事務(wù)的讀寫,具有以下幾個典型特征:

1.Short-lived (i.e., no user stalls)

2.Touch a small subset of data using index lookups (i.e., no full table scans or large distributed joins)

3.Repetitive (i.e., executing the same queries with different inputs)

而之后的數(shù)據(jù)分析、數(shù)據(jù)挖掘等,則不屬于 OLTP 的范疇,也不屬于 NewSQL 針對的場景。

NewSQL 是某種程度的回歸,它試圖重新拾起被 NoSQL 拋棄的 ACID,ACID 是數(shù)據(jù)庫事務(wù)正確執(zhí)行的四個基本要素,也就是 NewSQL 試圖重拾事務(wù)。

  • Atomicity 原子性
  • Consistency 一致性
  • Isolation  隔離性
  • Durability  持久性

這里的一致性,與分布式系統(tǒng)常說的一致性并非同一個概念,傳統(tǒng)關(guān)系型數(shù)據(jù)庫往往是單機(jī)版的,這里的一致性指的是事務(wù),不管成功與否,都不會破壞任意已經(jīng)定義好的關(guān)于數(shù)據(jù)的約束,比如外鍵約束。而分布式系統(tǒng)中的一致性,也并不是同一份數(shù)據(jù)的多個副本是完全一致的,而是說不同的觀察者,對于同一個數(shù)據(jù),讀取的內(nèi)容是一致的。

引入了事務(wù)的支持,NewSQL 為了更好的解放開發(fā)者,進(jìn)一步加入了 SQL 的支持和分布式一致性的支持。

NewSQLs enable applications to execute a large number of concurrent transactions to ingest new information and modify the state of the database using SQL (instead of a proprietary API). If an application uses a NewSQL DBMS, then developers do not have to write logic to deal with eventually consistent updates as they would in a NoSQL system.

在 What's Really New with NewSQL? 那篇文章里,作者對于當(dāng)前存在的 NewSQL 數(shù)據(jù)庫,大致有以下三個分類:

采用全新架構(gòu)的新系統(tǒng)

分布式 Shared-nothing 基因,零歷史包袱,多節(jié)點(diǎn)并發(fā)控制,多副本容錯,分布式查詢與優(yōu)化。

Send the query to the data rather than bring the data to the query

獨(dú)立管理數(shù)據(jù)存儲,對數(shù)據(jù)有更直接、更細(xì)粒度的控制,不依賴現(xiàn)有的分布式存儲系統(tǒng)、分布式文件系統(tǒng)。

Examples: ClustrixDB,CockroachDB,Google Spanner,MemSQL,NuoDB

重新實(shí)現(xiàn)的 Sharding 中間件

中心化的中間件負(fù)責(zé)查詢分發(fā)、協(xié)調(diào)事務(wù)處理、管理數(shù)據(jù)與副本分布、節(jié)點(diǎn)管理;數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)的存儲與查詢,并接收中間件發(fā)來的讀寫請求,返回結(jié)果等。

對應(yīng)用呈現(xiàn)了一個單體的邏輯層的數(shù)據(jù)庫,不需要修改底層的 DBMS?;趥鹘y(tǒng) RDBMS 的應(yīng)用甚至可以不修改任何代碼就能夠無縫的遷移。

Examples: AgilData Scalable Cluster,MariaDB MaxScale,ScaleArc,ScaleBase.

全新架構(gòu)的云數(shù)據(jù)庫

DataBase as a Service(DBaaS),云服務(wù)提供商負(fù)責(zé)運(yùn)維,用戶只需按需申請資源并按需付費(fèi)。

Examples: Amazon Aurora,ClearDB.

從文章作者流露于紙面的態(tài)度,我們做一個越俎代庖的猜測,作者并不是很認(rèn)可分類二,有興趣的同學(xué)可以閱讀一下原文。另外,其他的 NewSQL 系統(tǒng)也注意到了協(xié)議兼容的好處,比如 CockroachDB 兼容 PostgreSQL wire protocol,ClustrixDB 號稱兼容 MySQL 等。

>>>> Really new ?

回歸到 NewSQL 的 New 之爭,這部分過于專業(yè),還是建議感興趣的同學(xué)們閱讀原文,我們在這里只一個大概的總結(jié)。在 What's Really New with NewSQL?(文章地址:http://db.cs.cmu.edu/papers/2016/pavlo-newsql-sigmodrec2016.pdf) 文章作者從以下幾個方面,對 NewSQl 所采用的技術(shù)進(jìn)行了分析:

  • 面向內(nèi)存的存儲
  • 數(shù)據(jù)分區(qū)
  • 并發(fā)控制
  • 二級索引
  • 副本機(jī)制
  • 故障恢復(fù)

The main takeaway from our analysis is that NewSQL database systems are not a radical departure from existing system architectures but rather represent the next chapter in the continuous development of database technologies. Most of the techniques that these systems employ have existed in previous DBMSs from academia and industry. But many of them were only implemented one-at-a-time in a single system and never all together. What is therefore innovative about these NewSQL DBMSs is that they incorporate these ideas into single platforms. Achieving this is by no means a trivial engineering effort. They are by-products of a new era where distributed computing resources are plentiful and affordable, but at the same time the demands of applications is much greater.

陽光之下,并無新事。NewSQL 所采用的各種技術(shù)已經(jīng)廣泛應(yīng)用在多個數(shù)據(jù)庫中,只是這一次,NewSQL 把這些技術(shù)組合在了一起。作者期待 NewSQL 開啟一個新的時代,肯定了 NewSQL 特別是 NewSQL 在工程方面的成就,畢竟:

Distributed systems engineering is full of tradeoffs.

>>>> 未來之光 HTAP

業(yè)務(wù)的支撐、數(shù)據(jù)的采集只是企業(yè)數(shù)據(jù)閉環(huán)中的一部分,盤活數(shù)字資產(chǎn),打造數(shù)據(jù)驅(qū)動型、商務(wù)智能型的公司,是當(dāng)前互聯(lián)網(wǎng)行業(yè)的一大愿景。然而,由于底層數(shù)據(jù)的存儲結(jié)構(gòu)很難同時折中 Fast analytics 和 Fast inserts and updates 的性能,當(dāng)今大部分企業(yè)依然需要借助于另外一套系統(tǒng)——OLAP。

OLTP 流入系統(tǒng)的數(shù)據(jù),通過源源不斷 ETL 等過程,導(dǎo)入到 OLAP 分析型數(shù)據(jù)庫,之后通過報(bào)表分析和數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等手段,生成決策結(jié)果,反作用于業(yè)務(wù),調(diào)整業(yè)務(wù),構(gòu)成數(shù)據(jù)閉環(huán)。

同時維護(hù)了兩套數(shù)據(jù)的 OLTP 和 OLAP 由于數(shù)據(jù)的冗余,成倍增加了系統(tǒng)的存儲開銷;依賴于 ETL 的數(shù)據(jù)復(fù)制,決策系統(tǒng)的時效性受到了很大的影響;同時,固定時間的 ETL 過程也對兩個系統(tǒng)的性能施加了很大的壓力。

人們對大統(tǒng)一的追求是永無止境的。在 What's Really New with NewSQL? 文章中,作者預(yù)測數(shù)據(jù)庫系統(tǒng)的下一個大的趨勢就是整合 OLTP 和 OLAP,也就是所謂的 Hybrid Transaction-Annlytical Processing。

大數(shù)據(jù)巨頭 Cloudera 在 2015 年推出的 Kudu 存儲引擎試圖達(dá)到這一目標(biāo),不過根據(jù)目前的 Google trends,這個項(xiàng)目并沒有太火。NewSQL 中的諸多廠商都有這樣的 Roadmap(雖有廠商號稱它們已經(jīng)是 HTAP 系統(tǒng),但筆者更傾向于這是一個任重道遠(yuǎn)的任務(wù)),比如 CockroachDB,ClustrixDB,MemSQL。

借一張圖來說明 HTAP 的優(yōu)勢。

>>>> 參考文獻(xiàn)

[1] Codd, E.F (1970). "A Relational Model of Data for Large Shared Data Banks". Communications of the ACM. Classics. 13 (6): 377–387.

[2]Andrew Pavlo , Matthew Aslett, What's Really New with NewSQL?, ACM SIGMOD Record, v.45 n.2, June 2016 [doi>10.1145/3003665.3003674] 

[3] J. C. Corbett, J. Dean, M. Epstein, A. Fikes, C. Frost, J. Furman, S. Ghemawat, A. Gubarev, C. Heiser, P. Hochschild, W. Hsieh, S. Kanthak, E. Kogan, H. Li, A. Lloyd, S. Melnik, D. Mwaura, D. Nagle, S. Quinlan, R. Rao, L. Rolig, Y. Saito, M. Szymaniak, C. Taylor, R. Wang, and D. Woodford. Spanner: Google’s Globally-Distributed Database. In OSDI, 2012.

[4] David F. Bacon, Nathan Bales, Nico Bruno, Brian F. Cooper, Adam Dickinson, Andrew Fikes, Campbell Fraser, Andrey Gubarev, Milind Joshi, Eugene Kogan, Alexander Lloyd, Sergey Melnik, Rajesh Rao, David Shue, Christopher Taylor, Marcel van der Holst, and Dale Woodford.2017. Spanner: Becoming a SQL System. In Proceedings of the 2017 ACM International Conference on Management of Data (SIGMOD '17). ACM, New York, NY, USA, 331-343. DOI:https://doi.org/10.1145/3035918.3056103

[5] ClustrixDB. https://www.clustrix.com/

[6] CockroachDB. https://www.cockroachlabs.com/

[7] Navigational database. 

https://en.wikipedia.org/wiki/Navigational_database

[8] Kudu. https://kudu.apache.org/

作者簡介:

[[218646]]

陳運(yùn)海

DaoCloud 數(shù)據(jù)平臺架構(gòu)師,長期關(guān)注數(shù)據(jù)庫系統(tǒng)、分布式系統(tǒng)、區(qū)塊鏈等領(lǐng)域。

 

責(zé)任編輯:龐桂玉 來源: ITPUB
相關(guān)推薦

2011-07-28 14:15:10

CassandraRDBMS

2018-10-30 15:32:07

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

2018-07-18 09:16:39

關(guān)系型非關(guān)系型數(shù)據(jù)庫

2021-09-06 10:24:12

鴻蒙HarmonyOS應(yīng)用

2019-07-03 10:00:16

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

2011-09-27 10:44:07

NewSQL云計(jì)算

2016-08-23 14:25:19

MySQL約束數(shù)據(jù)庫

2013-01-25 15:19:42

大數(shù)據(jù)關(guān)系型數(shù)據(jù)庫

2013-11-01 10:27:04

SAP

2010-12-10 10:17:21

關(guān)系型數(shù)據(jù)庫

2022-06-13 08:30:01

數(shù)據(jù)庫管理系統(tǒng)

2017-03-17 14:44:04

關(guān)系型數(shù)據(jù)庫原理

2018-03-26 12:58:52

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

2011-06-07 17:14:15

關(guān)系型數(shù)據(jù)庫壓縮技術(shù)

2023-05-29 16:51:06

2022-12-27 08:38:45

關(guān)系型數(shù)據(jù)庫設(shè)計(jì)

2021-01-26 13:31:48

數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫冗余

2021-07-28 14:40:57

鴻蒙HarmonyOS應(yīng)用

2023-05-20 08:11:55

2023-05-22 16:10:51

動態(tài)共享包數(shù)據(jù)庫
點(diǎn)贊
收藏

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