Manticore Search是一个专为搜索而设计的多存储数据库,具有强大的全文搜索功能。

作为一款开源数据库(可在GitHub上获取),Manticore Search于2017年创建,是Sphinx Search引擎的延续。我们的开发团队充分借鉴了Sphinx的所有优秀特性,并在此过程中显著改进了其功能,修复了数百个错误(详见我们的变更日志)。通过几乎完成的代码重写,Manticore Search现在是一款现代、快速且轻量级的数据库,具备完整的功能和卓越的全文搜索能力。

Manticore 的主要特点有

强大而快速的全文搜索,在小型和大型数据集中均表现出色。

  • 超过20个全文操作符和超过20个排名因素
  • 自定义排名
  • 词干处理
  • 词形还原
  • 停用词
  • 同义词
  • 词形变换
  • 字符和词级别的高级标记化
  • 正确的中文分词
  • 文本高亮显示

多线程

Manticore Search 利用智能查询并行化来降低响应时间,并在需要时充分利用所有CPU核心。

基于成本的查询优化器

基于成本的查询优化器使用有关索引数据的统计数据来评估给定查询的不同执行计划的相对成本。这使得优化器能够确定检索所需结果的最有效计划,考虑到索引数据的大小、查询的复杂性以及可用资源等因素。

存储选项

Manticore提供了适用于各种大小数据集的逐行和列导向存储选项。传统且默认的逐行存储选项适用于各种大小的数据集,包括小型、中型和大型数据集,而列导向存储选项则通过Manticore列库提供,适用于更大的数据集。这两种存储选项的主要区别在于逐行存储要求将所有属性(除全文字段外)保留在RAM中以实现最佳性能,而列导向存储则不需要,因此具有较低的RAM消耗,但可能略慢一些性能(如https://db-benchmarks.com/上的统计数据所示)。

自动二级索引

Manticore列库使用分段几何模型索引,该模型利用索引键与其在内存中的位置之间的学习映射。这种映射的简洁性,加上独特的递归构造算法,使PGM索引成为一种在空间上比传统索引优越数倍的数据结构,同时仍然提供最佳的查询和更新时间性能。默认情况下,所有数值字段都启用了二级索引。

SQL 为先

Manticore 的本机语法是SQL,支持通过 HTTP 和 MySQL 协议使用 SQL,允许通过任何编程语言中流行的 mysql 客户端进行连接。

JSON over HTTP

为了更具程序性的方法来管理数据和模式,Manticore提供了HTTP JSON协议,类似于Elasticsearch的协议。

兼容 Elasticsearch 的写入

您可以执行与 Elasticsearch 兼容的插入和替换 JSON 查询,这使得可以使用 Manticore 与诸如 Logstash(版本小于 7.13)、Filebeat 以及 Beats 家族的其他工具一起使用。

声明性和命令性模式管理

轻松地在线或通过配置文件创建、更新和删除表。

C++的优势和PHP的便利性

Manticore Search守护程序是用C++开发的,具有快速启动时间和高效的内存利用率。低级优化的利用进一步提升了性能。另一个关键组件称为Manticore Buddy,是用PHP编写的,用于不需要极快的响应时间或极高的处理能力的高级功能。虽然贡献到C++代码可能具有挑战性,但使用 Manticore Buddy 添加新的 SQL/JSON 命令应该是一个简单的过程。

实时插入

新添加或更新的文档可以立即被读取。

交互式课程,轻松学习

我们提供免费的互动课程,使学习变得轻松无负担。

事务

虽然Manticore并非完全符合ACID标准,但它支持隔离事务以进行原子更改,并通过二进制日志实现安全写入。

内建复制和负载均衡

数据可以在服务器和数据中心之间分布,任何 Manticore Search 节点都可以充当负载均衡器和数据节点。Manticore使用 Galera 库实现几乎同步的多主复制,确保所有节点上的数据一致性,防止数据丢失,并提供卓越的复制性能。

内建备份功能

Manticore 配备了一个外部工具 manticore-backup 和 BACKUP SQL 命令,简化了备份和恢复数据的过程。或者,您还可以使用 mysqldump 进行逻辑备份。

开箱即用的数据同步

Manticore 的索引工具和全面的配置语法使得从诸如 MySQL、PostgreSQL、ODBC 兼容数据库、XML 和 CSV 等来源同步数据变得容易。

集成选项

您可以使用FEDERATED引擎或通过ProxySQL将Manticore Search与MySQL/MariaDB服务器集成。

您可以使用Apache Superset和Grafana来可视化存储在Manticore中的数据。各种MySQL工具可以用于与Manticore互动地开发查询,如HeidiSQL和DBForge。

流过滤变得简单

Manticore提供了一种特殊的表类型,即“percolate”表,允许您搜索查询而不是数据,使其成为过滤全文数据流的高效工具。只需将查询存储在表中,通过将每批文档发送到Manticore Search来处理数据流,并仅接收与存储的查询匹配的结果。

可能的应用场景:

Manticore具有多种用途,包括:

  • 全文搜索

对于小数据量,享受强大的全文搜索语法和低内存消耗(低至7-8 MB)的好处。

对于大数据量,受益于Manticore的高可用性和处理大型表的能力。

  • OLAP:使用Manticore Search和Manticore列库分析单个或多个服务器上的数百亿字节的数据。
  • 分面搜索
  • 地理空间搜索
  • 拼写纠正
  • 自动完成
  • 数据流过滤

要求

架构:arm64或x86_64 操作系统:基于Debian(例如Debian、Ubuntu、Mint)、基于RHEL(例如RHEL、CentOS、Alma、Oracle Linux)、Windows或MacOS。 提供列存储和二级索引的Manticore列库需要具有SSE >= 4.2的CPU。 不需要特定的磁盘空间或RAM要求。空的Manticore Search实例只使用大约40MB的RSS RAM。