SQL for ElasticSearch—Crate.io簡介
阿新 • • 發佈:2019-01-26
再次調研這個東西,是為了滿足下面的需求:
一張擁有50+欄位的表,記錄數大概5億-10億;需要對每個欄位進行模糊搜尋,並要求即時響應結果;需要做一些簡單的聚合統計;
看到這個需求,肯定想到搜尋,那麼就是ElasticSearch了。但ES對SQL支援太弱了,因此想使用CrateDB。
CrateDB是什麼
CrateDB是一個開源的分散式資料庫:
- 底層基於ElasticSearch;
- 使用SQL處理結構化和非結構化資料;
- 分散式執行SQL,實時的查詢響應,支援Join、聚合和搜尋;
- 可以很方便的擴充套件;
功能及特性
- 可擴充套件性:shared-nothing架構,只需要往叢集中增加機器,剩下的rebalance、資料重分佈,均由CrateDB自己完成;
- 高可用性:叢集中每一個節點都是一樣的,Master通過選舉產生,當正在服務的Master掛掉,很快就會選舉出新的Master。另外,類似於HDFS,CrateDB中的資料也有副本機制,可以自己設定。
- 分散式SQL查詢:支援查詢、關聯、聚合、搜尋等;其中用於搜尋的欄位可指定native和full text索引。
- 良好的資料寫入效能:CrateDB中沒有事務及鎖機制,因此資料寫入效能比較好(一個單臺節點上可以達到40000+每秒的insert)。另外,在寫入時,CrateDB的查詢效能不會受到影響。
- 支援二進位制資料儲存:BLOB 可儲存圖片、視訊以及超大非結構化文字資料;
- 動態Schema:可以在已有表中動態增加欄位或巢狀的資料結構;
- 支援Update和Delete;
- WEB監控頁面:可以監控整個叢集的健康狀態及資料的健康狀態;
適用場景
- 具有搜尋功能、提供SQL介面、可以水平擴充套件的資料庫;
- 經濟、開源的SQL資料庫;
- 快速的搜尋、聚合以及即席查詢;
- 快速的併發讀寫;
- 海量資料;
- 高可用的、用不停機的資料庫;
不適用場景
- 強事務要求;
- 高度規範化(正規化)的表以及多表關聯;
官網:https://crate.io/