Manticore Search 是一个高性能、多存储数据库,专为搜索和分析设计,提供极速的全文搜索、实时索引以及向量搜索和列存储等高级功能,实现高效的数据分析。它既能处理小型数据集,也能处理大型数据集,为现代应用提供无缝扩展性和强大的洞察能力。
作为一个开源数据库(可在 GitHub 获取),Manticore Search 于2017年创建,是对 Sphinx Search 引擎的延续。我们的开发团队汇集了 Sphinx 的所有优点,并显著提升了其功能,修复了数百个漏洞(详见我们的 更新日志)。Manticore Search 是一个现代的、快速且轻量级的数据库,拥有卓越的全文搜索能力,基于对其前身近乎完全的重写构建。
Manticore Search 支持将机器学习模型生成的嵌入向量添加到每个文档中,然后对其执行最近邻搜索。这让您能够构建相似度搜索、推荐系统、语义搜索和基于 NLP 算法的相关性排名等功能,包括图像、视频和音频搜索。
Manticore Search 支持通过 SQL 和 JSON 执行JOIN查询,允许您合并多个表中的数据。
Manticore Search 利用智能查询并行处理来降低响应时间,并在需要时充分利用所有 CPU 核心。
基于成本的查询优化器利用索引数据的统计信息,评估给定查询的不同执行计划的相对成本。这样优化器可以确定检索所需结果的最有效计划,考虑到索引数据大小、查询复杂度及可用资源等因素。
Manticore 提供行存储和列存储选项,以适应不同规模的数据集。传统且默认的行存储选项适用于所有大小的数据集——小型、中型及大型,而列存储选项则通过 Manticore Columnar Library 提供,适用于更大规模的数据集。这两种存储选项的关键区别在于,行存储要求所有属性(全文字段除外)保存在 RAM 中以获得最佳性能,而列存储则不要求,从而实现更低的内存消耗,但可能带来略微较慢的性能(如 https://db-benchmarks.com/ 上的统计所示)。
Manticore Columnar Library 使用分段几何模型索引 (PGM-index),利用索引键与其内存位置之间的学习映射。该映射的紧凑性及独特的递归构建算法使 PGM-index 成为空间效率远超传统索引的数据结构,同时仍提供最优的查询和更新性能。二级索引默认对所有数值和字符串字段开启,也可针对 JSON 属性启用。
Manticore 的原生语法是 SQL,支持通过 HTTP 和 MySQL 协议执行 SQL,允许通过任何编程语言中的流行 MySQL 客户端连接。
为了更程序化地管理数据和模式,Manticore 提供了类似 Elasticsearch 的HTTP JSON协议。
您可以执行兼容 Elasticsearch 的插入和替换 JSON 查询,从而使 Manticore 可与 Logstash(版本 < 7.13)、Filebeat 及 Beats 家族的其他工具一起使用。
轻松在线或通过配置文件创建、更新和删除表。
Manticore Search守护进程用C++编写,提供快速启动时间和高效的内存利用率。低级别的优化进一步提升了性能。另一个关键组件,称为Manticore Buddy,用PHP编写,用于不需要闪电般的响应速度或极高处理能力的高级功能。虽然对C++代码进行贡献可能是一项挑战,但使用Manticore Buddy添加新的SQL/JSON命令应该是简单的过程。
新添加或更新的文档可以立即读取。
我们提供免费互动课程,使学习变得轻松。
虽然Manticore不完全符合ACID标准,但它支持隔离事务以实现原子更改,并支持二进制日志以确保安全写入。
数据可以分布在服务器和数据中心之间,任何Manticore Search节点都可以作为负载均衡器和数据节点。Manticore使用Galera库实现近乎同步的多主复制,确保所有节点的数据一致性,防止数据丢失,并提供出色的复制性能。
Manticore配备了外部工具manticore-backup和BACKUP SQL命令,简化了备份和恢复数据的过程。或者,您可以使用mysqldump进行逻辑备份。
indexer工具和Manticore的全面配置语法使其易于从MySQL、PostgreSQL、ODBC兼容的数据库、XML和CSV等源同步数据。
您可以使用FEDERATED引擎或ProxySQL将Manticore Search与MySQL/MariaDB服务器集成。
您可以使用Apache Superset和Grafana可视化存储在Manticore中的数据。可以使用各种MySQL工具以交互方式开发Manticore查询,例如HeidiSQL和DBForge。
您还可以使用Manticore Search与Kibana。
Manticore提供了一种特殊表类型,即"percolate"表,允许您搜索查询而不是数据,使其成为高效过滤全文数据流的工具。只需将查询存储在表中,通过将每批文档发送到Manticore Search处理数据流,并接收匹配您存储查询的结果。
Manticore Search具有广泛的应用场景,包括:
-
全文搜索:
- 适用于电子商务平台,实现快速准确的产品搜索,具有自动补全和模糊搜索等功能。
- 适用于内容丰富的网站,使用户能够快速找到相关文章或文档。
-
数据分析:
- 使用Beats/Logstash、Vector.dev、Fluentbit将数据导入Manticore Search。
- 使用Manticore的列式存储和OLAP功能高效分析大数据集。
- 使用Manticore在几毫秒内对太字节的数据执行复杂查询。
- 使用Kibana、Grafana或Apache Superset可视化数据。
-
分面搜索:
- 使用户能够通过价格、品牌或日期等类别过滤搜索结果,提供更精细的搜索体验。
-
地理空间搜索:
- 使用Manticore的地理空间功能实现基于位置的搜索,例如查找附近的餐厅或商店。
-
拼写纠正:
- 自动纠正用户在搜索查询中的拼写错误,提高搜索准确性和用户体验。
-
自动补全:
- 实时为用户输入提供建议,提高搜索的可用性和速度。
-
数据流过滤:
- 使用percolate表高效过滤和处理实时数据流,例如社交媒体帖子或日志数据。
- 架构:arm64或x86_64
- 操作系统:基于Debian(例如Debian、Ubuntu、Mint)、基于RHEL(例如RHEL、CentOS、Alma、Oracle Linux、Amazon Linux)、Windows或MacOS。
- Manticore列库,提供列式存储和二级索引,需要具有SSE >= 4.2的CPU。
- 对磁盘空间或RAM没有特定要求。一个空的Manticore Search实例仅使用大约40MB的RSS RAM。

