OLTP 系统和 OLAP 系统的核心设计思想
生活随笔
收集整理的這篇文章主要介紹了
OLTP 系统和 OLAP 系统的核心设计思想
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
關(guān)于 OLTP 系統(tǒng)和 OLAP 系統(tǒng)的核心設(shè)計(jì)思想
數(shù)據(jù)存儲(chǔ)系統(tǒng)的關(guān)于查詢的典型操作:
-- 第一種需求: 根據(jù) key(1) 找 value(name,age), 單點(diǎn)查詢 select name, age from student where id = 1; student:map id=1, value=(name,age) -- 第二種需求: 根據(jù) department 統(tǒng)計(jì)平均年齡, 全表查詢 select name, age from student where age > 30; 全表掃描 select department, avg(age) from student group by department; 全表掃描對(duì)于第一種需求來(lái)說(shuō):
- 如果數(shù)據(jù)量小,并且數(shù)據(jù)是結(jié)構(gòu)化的,使用 MySQL 去存儲(chǔ)即可
- 如果數(shù)據(jù)量大,不管是不是結(jié)構(gòu)化的,可以轉(zhuǎn)成 key-value 的存儲(chǔ),使用 HBase,Cassandra 等來(lái)解決, OLTP 系統(tǒng) KV 系統(tǒng) 來(lái)滿足
對(duì)于第二種需求來(lái)說(shuō):
- 如果數(shù)據(jù)量小,并且數(shù)據(jù)是結(jié)構(gòu)化的,使用 MySQL 去存儲(chǔ)即可
- 如果數(shù)據(jù)量大,不管是不是結(jié)構(gòu)化的,設(shè)計(jì)一個(gè)專門(mén)用來(lái)做分析的存儲(chǔ)計(jì)算引擎解決分析的低效率問(wèn)題, 設(shè)計(jì)一個(gè) OLAP 系統(tǒng)
OLTP存儲(chǔ)系統(tǒng)核心設(shè)計(jì)思想
OLTP 存儲(chǔ)系統(tǒng),核心需求是 實(shí)現(xiàn)海量數(shù)據(jù)集中的低延時(shí)隨機(jī)讀寫(xiě)操作
- 01、數(shù)據(jù)排序:在海量數(shù)據(jù)中要想保證低延時(shí)的隨機(jī)讀寫(xiě)操作,數(shù)據(jù)最好是排序的
- 02、范圍分區(qū):當(dāng)數(shù)據(jù)排序之后,可以進(jìn)行范圍分區(qū),來(lái)平攤負(fù)載,讓多臺(tái)服務(wù)器聯(lián)合起來(lái)對(duì)外提供服務(wù)
- 03、內(nèi)存 + 磁盤(pán):保證處理效率,也保證數(shù)據(jù)安全
- 04、內(nèi)存:必須經(jīng)過(guò)設(shè)計(jì),內(nèi)存具備優(yōu)秀的數(shù)據(jù)結(jié)構(gòu),保證基本的讀寫(xiě)高效,甚至為了不同的需求,可以讓讀寫(xiě)效率傾斜。
- 05、寫(xiě)緩存:將為了實(shí)現(xiàn)數(shù)據(jù)有序而進(jìn)行的低效率隨機(jī)寫(xiě)轉(zhuǎn)換為內(nèi)存隨機(jī)寫(xiě)+磁盤(pán)順序?qū)懙姆绞?/li>
- 06、讀緩存:將經(jīng)常查詢的熱點(diǎn)數(shù)據(jù)緩存在內(nèi)存中,提高查詢效率
- 07、磁盤(pán):數(shù)據(jù)必須存放在磁盤(pán),保證數(shù)據(jù)安全。磁盤(pán)數(shù)據(jù)文件必須經(jīng)過(guò)精心設(shè)計(jì),保證掃描磁盤(pán)數(shù)據(jù)文件的高效率
- 08、跳表:基于數(shù)據(jù)排序+范圍分區(qū)構(gòu)建索引表,形成跳表的拓?fù)浣Y(jié)構(gòu),方便用戶操作時(shí)快速定位數(shù)據(jù)分區(qū)的位置
- 09、LSM-Tree 存儲(chǔ)引擎:把隨機(jī)寫(xiě)變成順序追加,在通過(guò)定期合并的方式來(lái)合并數(shù)據(jù),去除無(wú)效數(shù)據(jù),從而實(shí)現(xiàn)數(shù)據(jù)的刪除和修改。
- 10、布隆過(guò)濾器:快速判斷一個(gè)元素(1)是否存在于一個(gè)龐大集合內(nèi)/文件中(100E),常數(shù)級(jí)別的執(zhí)行效率
海量數(shù)據(jù)中,如果進(jìn)行高效率的查詢的核心思想:設(shè)計(jì)一種架構(gòu),能夠快速把待搜尋的數(shù)據(jù)范圍降低到原來(lái)的 1/n,然后再結(jié)合索引或者熱點(diǎn)數(shù)據(jù)放在內(nèi)存等思路,就能實(shí)現(xiàn)高效率的查詢了。
OLAP存儲(chǔ)系統(tǒng)核心設(shè)計(jì)思想
核心需求是 實(shí)現(xiàn)海量數(shù)據(jù)集中的高性能低延遲查詢分析功能
- 01、數(shù)據(jù)排序
- 02、數(shù)據(jù)分區(qū)分片 + 分布式查詢
- 03、列式存儲(chǔ) + 字段類型統(tǒng)一
- 04、列裁剪
- 05、預(yù)聚合(搜索引擎: 輸入關(guān)鍵詞,搜索引擎根據(jù)關(guān)鍵詞到 數(shù)據(jù)庫(kù) 找到這個(gè) 關(guān)鍵詞對(duì)應(yīng)的所有的 URL:這些 URL 就是提前計(jì)算出來(lái)的 )
- 06、利用CPU特性:向量化引擎,操作系統(tǒng)必須支持
- 07、主鍵索引 + 二級(jí)索引 + 位圖索引 + 布隆索引 等等各種索引技術(shù)
- 08、支持近似計(jì)算, pv 一個(gè)電商平臺(tái)的 sku 總數(shù)
- 09、定制引擎:多樣化的存儲(chǔ)引擎滿足不同場(chǎng)景的特定需要
- 10、多樣化算法選擇:Volnitsky高效字符串搜索算法 和 HyperLogLog基于概率高效去重算法
單條記錄的增刪改等操作,通過(guò)數(shù)據(jù)的橫向劃分,做到數(shù)據(jù)操作的快速定位,在海量數(shù)據(jù)查詢分析中,一般就是針對(duì)大量行少量列做分析,既然并不是全部列,那么把數(shù)據(jù)做縱向切分把表中的數(shù)據(jù)按照列來(lái)單獨(dú)存儲(chǔ),那么在做分析的時(shí)候,同樣可以快速把待查詢分析的數(shù)據(jù)總量降低到原來(lái)表的1/n,同樣提高效率。而且對(duì)于常用的聚合邏輯的結(jié)果,也可以提前算出來(lái)緩存起來(lái)用來(lái)提供效率,這就是預(yù)聚合技術(shù)。
Kylin 是一個(gè)把預(yù)聚合技術(shù)發(fā)揮到極致的一個(gè) OLAP 技術(shù),詳細(xì)見(jiàn):OLAP引擎——Kylin介紹
它的缺點(diǎn)如下: - 1、預(yù)聚合只支持固定的分析場(chǎng)景,無(wú)法滿足自定義分析場(chǎng)景,所以預(yù)聚合只能作為一種可選方案
- 2、維度組合爆炸會(huì)導(dǎo)致數(shù)據(jù)膨脹,這樣會(huì)造成不必要的計(jì)算和存儲(chǔ)開(kāi)銷。無(wú)必要的維度組合的計(jì)算就屬于浪費(fèi)資源
- 3、大概率數(shù)據(jù)都是增量生成,預(yù)聚合不能進(jìn)行數(shù)據(jù)更新。所以會(huì)產(chǎn)生大量的重算。
總結(jié)
以上是生活随笔為你收集整理的OLTP 系统和 OLAP 系统的核心设计思想的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 考a照多少钱啊?
- 下一篇: 从uptime、stress、mpsta