現在處於大資料時代,傳統資料庫已經無法進行分析和處理。
單機版瓶頸
資料量太大,乙個機器放不下
資料的索引(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開放平台。阿里表示,在經過三年的時間,...