NoSQL發展歷史與阿里巴巴架構演進分析

2022-06-09 06:27:12 字數 3929 閱讀 7779

現在處於大資料時代,傳統資料庫已經無法進行分析和處理。

單機版瓶頸

資料量太大,乙個機器放不下

資料的索引(b+ tree),乙個機器的記憶體也放不下

訪問量(讀寫混合),單個伺服器承受不了

快取發展過程

優化資料結構和索引----檔案快取(io操作)----> 快取

分庫分表 + 水平拆分 + mysql集群

本質:資料庫(讀,寫)

早些年myisam:表鎖,影響效率

innodb:行鎖

慢慢開始使用分庫分表來解決寫的壓力。mysql在那個年代就推出了表分割槽!並沒有多少公司使用。

接下來推出了mysql集群,很好的滿足了那個年代的所有需求。

如今的年代

資料多樣性:定位,音訊,人物畫像等

mysql等關係型資料庫就不夠用了,資料量很多,變化很快。

mysql儲存大檔案,部落格,等,資料庫表很大,效率就低,因此,非關係型資料庫就誕生了。

mysql的壓力就變得非常小(研究如何處理這些問題),大資料io的壓力下,表幾乎沒法更改

灰度發布(金絲雀發布)

使用者的個人資訊,社交網路,地理位置,使用者自己產生的資料,使用者的日誌等等爆發式增長。

這時候就需要使用nosql資料庫,可以很好的處理以上的情況。

nosql = not only sql(不僅僅是sql)

泛指非關係型資料庫。隨著web2.0網際網路的誕生,傳統的關係型資料庫很難對付web2.0時代,尤其是超大規模的高併發的社群。nosql在當今大資料環境下發展十分迅速。

什麼是關係型資料庫:由**,行和列組成的 。

很多的資料型別比如使用者的個人資訊,社交網路,地理位置,這些資料型別的儲存不需要乙個固定的格式(行+列),不需要多餘的操作就可以橫向擴充套件(集群)。

方便擴充套件(資料之間沒有關係,很好擴充套件)

大資料量,高效能(官方資料:redis一秒8萬次,讀取11萬次,nosql的緩衝記錄級,是一種細粒度的快取,效能會比較高!)

資料型別是多樣的(不需要事先設計資料庫表,隨取隨用,如果是資料量十分大的表, 很多人就無法設計了!)

傳統的rdbms和nosql

傳統的rdbms

nosql

結構化組織

不僅僅是資料庫

sql沒有固定的查詢語言

資料和關係都存在單獨的表中

kv鍵值對儲存,列儲存,圖形資料庫,文件儲存

資料操作員,資料定義語言

最終一致性

嚴格的一致性(acid)

cap定理 和 base理論(異地多活)

基礎的事務

高效能,高可用,高可擴充套件

大資料時代的3v: 主要是描述問題的

海量volume

多樣variety

實時velocity

大資料時代的3高:主要是對程式的要求

高併發高可擴(水平拆分)

高效能(保證使用者體驗和效能)

真正在公司中的實踐:nosql+rdbms一起使用

# 1. 商品的基本資訊

名稱,**,商家資訊

關係型資料庫就可以解決了。(mysql/oracle(**早些年就去ioe了!- 王堅:推薦文章:阿里雲的這群瘋子)

**內部用的mysql不是大家用的mysql

文件型資料庫,mongodb

# 3.

分布式檔案系統 fastdfs

- **自己的 tfs

- google gfs

- hadoop hdfs

- 阿里雲 oss

# 4. 商品的關鍵資訊

- 搜尋引擎 solr elasticsearch

- isearch: 多隆

所有牛逼的人都有一段苦逼的歲月!但是你只要像sb一樣的去堅持,終將牛逼!

# 5. 商品熱門的波段資訊

- 記憶體資料庫

- redis memcache tair

# 6. 商品的交易,外部的支付介面

- 三方應用(銀行)

要知道,乙個簡單的網頁背後的技術,一定不是大家所想的那麼簡單!

大型網際網路應用問題:

kv鍵值對

美團:redis + tair

文件型資料庫(bson格式,和json一樣)

列儲存資料庫

圖關聯式資料庫

neo4j,infogrid

四者對比

分類

examples舉例

典型應用場景

資料模型

優點缺點

鍵值(key-value)

tokyo cabinet/tyrant, redis, voldemort, oracle bdb

內容快取,主要用於處理大量資料的高訪問負載,也用於一些日誌系統等等。

key 指向 value 的鍵值對,通常用hash table來實現

查詢速度快

資料無結構化,通常只被當作字串或者二進位制資料

列儲存資料庫

cassandra, hbase, riak

分布式的檔案系統

以列簇式儲存,將同一列資料存在一起

查詢速度快,可擴充套件性強,更容易進行分布式擴充套件

功能相對侷限

文件型資料庫

couchdb, mongodb

web應用(與key-value類似,value是結構化的,不同的是資料庫能夠了解value的內容)

key-value對應的鍵值對,value為結構化資料

資料結構要求不嚴格,表結構可變,不需要像關係型資料庫一樣需要預先定義表結構

查詢效能不高,而且缺乏統一的查詢語法。

圖形(graph)資料庫

neo4j, infogrid, infinite graph

社交網路,推薦系統等。專注於構建關係圖譜

圖結構利用圖結構相關演算法。比如最短路徑定址,n度關係查詢等

很多時候需要對整個圖做計算才能得出需要的資訊,而且這種結構不太好做分布式的集群方案。

Druid 與 阿里巴巴開源專案Druid

druid 單詞 於西方古羅馬的神話人物,中文常常翻譯成德魯伊。本問介紹的druid 是乙個分布式的支援實時分析的資料儲存系統 data store 美國廣告技術公司metamarkets 於2011 年建立了druid 專案,並且於2012 年晚期開源了druid 專案。druid 設計之初的想法...

助力移動AR應用發展,阿里巴巴推出AR開放平台

這次推出的ar開放平台,將面向開發者開放2d識別追蹤 3d識別追蹤 內容製作平台 高質量渲染引擎等核心能力。今天是雲棲大會的第三天,阿里巴巴在人工智慧之外也宣布了和增強現實有關計畫,阿里巴巴人工智慧實驗室總經理淺雪 人工智慧實驗室峰會專場 上正式公布阿里巴巴ar開放平台。阿里表示,在經過三年的時間,...

助力移動AR應用發展,阿里巴巴推出AR開放平台

這次推出的ar開放平台,將面向開發者開放2d識別追蹤 3d識別追蹤 內容製作平台 高質量渲染引擎等核心能力。今天是雲棲大會的第三天,阿里巴巴在人工智慧之外也宣布了和增強現實有關計畫,阿里巴巴人工智慧實驗室總經理淺雪 人工智慧實驗室峰會專場 上正式公布阿里巴巴ar開放平台。阿里表示,在經過三年的時間,...