面對海量資料,如何才能查得更快?
我們知道,原始資料的資料量太大了,能存下來就很不容易了,這個資料是沒法直接來給業務系統查詢和分析的。有兩個原因,
-
一是資料量太大了
-
二是也沒有很好的資料結構和查詢能力,來支援業務系統查詢。
一般的做法是,用流計算或者是批計算,把原始資料再進行一次或者多次的過濾、匯聚和計算,把計算結果落到另外一個儲存系統中去,由這個儲存再給業務系統提供查詢支援。這裡的“流計算”,指的是 Flink、Storm 這類的實時計算,批計算是 Map-Reduce 或者 Spark 這類的非實時計算。
分析類系統應該如何選擇儲存?
擇什麼樣的儲存系統、使用什麼樣的資料結構來儲存資料,直接決定了資料查詢、聚合和分析的效能。
分析類系統對儲存的需求一般是這樣的:
-
一般用於分析的資料量都會比線上業務大出幾個數量級,這需要儲存系統能儲存海量資料;
-
能在海量的資料上做快速的聚合、分析和查詢。注意這裡面所說的“快速”,前提是處理 GB、TB 甚至 PB 級別的海量資料,在這麼大的資料量上做分析,幾十秒甚至幾分鐘都算很快了,和線上業務要求的毫秒級速度是不一樣的;
-
由於資料大多數情況下都是非同步寫入,對於寫入效能和響應時延,一般要求不高;
-
分析類系統不直接支撐前端業務,所以也不要求高併發。
哪些可供選擇的儲存產品:
-
如果你的系統的資料量在 GB 量級以下,MySQL 仍然是可以考慮的,因為它的查詢能力足以應付大部分分析系統的業務需求。並且可以和線上業務系統合用一個資料庫,不用做 ETL(資料抽取),省事兒並且實時性好。這裡還是要提醒你,最好給分析系統配置單獨的 MySQL 例項,避免影響線上業務。
-
如果資料量級已經超過 MySQL 極限,可以選擇一些列式資料庫,比如:HBase、Cassandra、ClickHouse,這些產品對海量資料,都有非常好的查詢效能,在正確使用的前提下,10GB 量級的資料查詢基本上可以做到秒級返回。高效能的代價是功能上的縮水,這些資料庫對資料的組織方式都有一些限制,查詢方式上也沒有 MySQL 那麼靈活。大多都需要你非常瞭解這些產品的脾氣秉性,按照預定的姿勢使用,才能達到預期的效能。
-
Elasticsearch(ES),ES 本來是一個為了搜尋而生的儲存產品,但是也支援結構化資料的儲存和查詢。由於它的資料都儲存在記憶體中,並且也支援類似於 Map-Reduce 方式的分散式並行查詢,所以對海量結構化資料的查詢效能也非常好。
轉變思想:根據查詢來選擇儲存系統
儲存系統沒有銀彈,不要指望簡單地更換一種資料庫,就可以解決資料量大,查詢慢的問題。
在特定的場景下,通過一些優化方法,把查詢效能提升幾十倍甚至幾百倍,這個都是有可能的。這裡面有個很重要的思想就是,根據查詢來選擇儲存系統和資料結構。
那用什麼樣的儲存系統儲存這些物流資料,才能滿足這些查詢需求呢?顯然,任何一種儲存系統,都滿足不了這麼多種查詢需求。我們需要根據每一種需求,去專門選擇合適的儲存系統,定義適合的資料結構,各自解決各自的問題。而不是用一種資料結構,一個資料庫去解決所有的問題。
-
按照時間分片是對查詢最友好的分片方式
總結
對於海量資料來說,選擇儲存系統沒有銀彈,重要的是轉變思想,根據業務對資料的查詢方式,反推資料應該使用什麼儲存系統、如何分片,以及如何組織。即使是同樣一份資料,也要根據不同的查詢需求,組織成不同的資料結構,存放在適合的儲存系統中,才能在每一種業務中都達到理想的查詢效能。
相關文章
- 面對海量的監控影片資料應該如何儲存?
- 面對海量資料儲存,如何保證HBase叢集的高效以及穩定
- 面試:頁面載入海量資料面試
- 該如何才能更快且有效的學習?
- 時間緊急!資料庫遷移怎麼才能更快?資料庫
- 圓桌論壇:如何應對海量資料的挑戰
- 怎樣查得資料庫的SID ?資料庫
- 面對枯燥的原始碼,如何才能看得下去?原始碼
- 效能優化:如何更快地接收資料優化
- 每日 30 秒 ⏱ 對海量資料進行切割
- 海量資料分析更快、更穩、更準。GaussDB(for MySQL) HTAP只讀分析特性詳解MySql
- 如何更快WPS表格資料錄入速度
- SQL Server 2005對海量資料的處理SQLServer
- 海量資料處理
- 面對勒索軟體 如何保護資料備份安全?
- 50億海量資料如何高效儲存和分析?
- 用資料說話,億級海量資料分析效能瓶頸如何破?
- 海量資料處理2
- sql海量資料優化SQL優化
- 海量資料處理 (轉)
- ☕【難點攻克技術系列】「海量資料計算系列」如何使用BitMap在海量資料中對相應的進行去重、查詢和排序排序
- 面對高頻業務需求,如何提升實時資料處理能力?
- 面對硬碟磁頭損壞問題,資料該如何解救?硬碟
- 資料庫密碼安全面臨挑戰企業如何面對?資料庫密碼
- 海量資料遷移之資料抽取流程
- 大資料與海量資料的區別大資料
- “大資料”與“海量資料”的區別大資料
- 海量資料架構下如何保證Mycat的高可用?架構
- 海量資料找缺失的值
- 海量資料表刪除方案
- 海量資料處理_批量插入
- 海量資料處理_批量更新
- 海量資料庫解決方案資料庫
- 海量資料處理_資料泵分批資料遷移
- 海量資料遷移之資料載入流程
- 關於海量資料常用的資料結構資料結構
- 如何用資料倉儲管理海量資料?直接訪問資料倉儲資料時的4個限制
- oracle資料庫插入行更快方法Oracle資料庫