1. 程式人生 > >SQL for ElasticSearch—Crate.io簡介

SQL for ElasticSearch—Crate.io簡介

再次調研這個東西,是為了滿足下面的需求:

一張擁有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資料庫;
  • 快速的搜尋、聚合以及即席查詢;
  • 快速的併發讀寫;
  • 海量資料;
  • 高可用的、用不停機的資料庫;

不適用場景

  • 強事務要求;
  • 高度規範化(正規化)的表以及多表關聯;

crate

官網:https://crate.io/