當前位置: 妍妍網 > 碼農

號稱取代 Elasticsearch,太猛了!

2024-03-07碼農

點選「 IT碼徒 」, 關註,置頂 公眾號

每日技術幹貨,第一時間送達!

1

Manticore Search介紹

Manticore Search 是一個使用 C++ 開發的高效能搜尋引擎,建立於 2017 年,其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx,顯著改進了它的功能,修復了數百個錯誤,幾乎完全重寫了程式碼並保持開源。這一切使 Manticore Search 成為一個現代,快速,輕量級和功能齊全的資料庫,具有出色的全文搜尋功能。

Manticore Search目前在GitHub收獲3.7k star,擁有大批忠實使用者。同時開源者在GitHub介紹中明確說明了該計畫是是Elasticsearch的良好替代品,在不久的將來就會取代ELK中的E。

同時,來自 MS 官方的測試表明 Manticore Search 效能比 ElasticSearch 有質的提升:

在一定的場景中,Manticore 比 Elasticsearch 快 15 倍!完整的測評結果。

參考: https://manticoresearch.com/blog/manticore-alternative-to-elasticsearch/

2

優勢

它與其他解決方案的區別在於:

  • 它非常快,因此比其他替代方案更具成本效益。例如,Manticore:

    1. 對於小型數據,比MySQL快182倍(可重現)

    2. 對於日誌分析,比Elasticsearch快29倍(可重現)

    3. 對於小型數據集,比Elasticsearch快15倍(可重現)

    4. 對於中等大小的數據,比Elasticsearch快5倍(可重現)

    5. 對於大型數據,比Elasticsearch快4倍(可重現)

    6. 在單個伺服器上進行數據匯入時,最大吞吐量比Elasticsearch快最多2倍(可重現)

  • 由於其現代的多執行緒架構和高效的查詢並列化能力,Manticore能夠充分利用所有CPU核心,以實作最快的響應時間。

  • 強大而快速的全文搜尋功能能夠無縫地處理小型和大型數據集。

  • 針對小、中、大型數據集提供逐行儲存。

  • 對於更大的數據集,Manticore透過Manticore Columnar Library提供列儲存支持,可以處理無法適合記憶體的數據集。

  • 自動建立高效的二級索引,節省時間和精力。

  • 成本最佳化的查詢最佳化器可最佳化搜尋查詢以實作最佳效能。

  • Manticore是基於SQL的,使用SQL作為其本機語法,並與MySQL協定相容,使您可以使用首選的MySQL客戶端。

  • 透過PHP、Python、JavaScript、Java、Elixir和Go等客戶端,與Manticore Search的整合變得簡單。

  • Manticore還提供了一種編程HTTP JSON協定,用於更多樣化的數據和模式管理。

  • Manticore Search使用C++構建,啟動快速,記憶體使用最少,低階別最佳化有助於其卓越效能。

  • 即時插入,新添加的文件立即可存取。

  • 提供互動課程,使學習輕松愉快。

  • Manticore還擁有內建的復制和負載均衡功能,增加了可靠性。

  • 可以輕松地從MySQL、PostgreSQL、ODBC、xml和csv等來源同步數據。

  • 雖然不完全符合ACID,但Manticore仍支持事務和binlog以確保安全寫入。

  • 內建工具和SQL命令可輕松備份和恢復數據。

  • Craigslist、Socialgist、PubChem、Rozetka和許多其他公司使用 Manticore 進行高效搜尋和流過濾。

    3

    使用

    Docker 映像可在Docker Hub上獲取: https://hub.docker.com/r/manticoresearch/manticore/

    要在 Docker 中試驗 Manticore Search,只需執行:

    docker run -e EXTRA=1 --name manticore --rm -d manticoresearch/manticore && until docker logs manticore 2>&1 | grep -q "accepting connections"; do sleep 1; done && docker exec -it manticore mysql && docker stop manticore

    之後,可以進行其他操作,例如建立表、添加數據並執行搜尋:

    createtable movies(title text, yearint) morphology='stem_en' html_strip='1' stopwords='en';
    insertinto movies(title, year) values ('The Seven Samurai', 1954), ('Bonnie and Clyde', 1954), ('Reservoir Dogs', 1992), ('Airplane!', 1980), ('Raging Bull', 1980), ('Groundhog Day', 1993), ('<a href="http://google.com/">Jurassic Park</a>', 1993), ('Ferris Bueller\'s Day Off', 1986);
    select highlight(), yearfrom movies wherematch('the dog');
    select highlight(), yearfrom movies wherematch('days') facet year;
    select * from movies wherematch('google');

    Github地址: https://github.com/manticoresoftware/manticoresearch

    END

    PS:防止找不到本篇文章,可以收藏點贊,方便翻閱尋找哦。

    往期推薦