Manticore Search 是一个专为搜索和分析而构建的高性能、多存储数据库,提供快如闪电的全文搜索、实时索引以及矢量搜索和列式存储等高级功能,以实现高效的数据分析。它旨在处理小型和大型数据集,为现代应用程序提供无缝的可扩展性和强大的洞察。作为一个开源数据库(可在 GitHub 上获得),Manticore Search 创建于 2017 年,是 Sphinx 搜索引擎的延续。Manticore Search 是一种现代、快速、轻量级的数据库,具有卓越的全文搜索功能,几乎完全重写了其前身。
主要特点
强大而快速的全文搜索,适用于小型和大型数据集
矢量搜索功能
Manticore Search 支持将机器学习模型生成的嵌入添加到每个文档,然后对它们进行最近邻搜索的功能。这使您可以基于 NLP 算法构建相似性搜索、推荐、语义搜索和相关性排名等功能,包括图像、视频和声音搜索。
级联查询
Manticore Search 支持通过 SQL 和 JSON 进行 JOIN 查询,允许您合并来自多个表的数据。
多线程
Manticore Search 利用智能查询并行化来缩短响应时间,并在需要时充分利用所有 CPU 内核。
基于成本的查询优化器
基于成本的查询优化器使用有关索引数据的统计数据来评估给定查询的不同执行计划的相对成本。这允许优化器确定检索所需结果的最有效计划,同时考虑索引数据的大小、查询的复杂程度和可用资源等因素。
存储选项
Manticore 提供逐行和列式存储选项,以适应各种大小的数据集。传统和默认的逐行存储选项可用于各种大小的数据集(小型、中型和大型),而列式存储选项通过 Manticore Columnar Library 提供,适用于更大的数据集。这些存储选项之间的主要区别在于,行存储要求所有属性(不包括全文字段)都保留在 RAM 中以获得最佳性能,而列式存储则不需要,因此提供较低的 RAM 消耗,但性能可能会略慢
自动二级索引
Manticore Columnar Library 使用 Piecewise Geometric Model 索引,该索引利用了索引键与其在内存中的位置之间的学习映射。这种映射的简洁性,加上独特的递归构造算法,使 PGM-index 成为一种数据结构,它在空间上以数量级的优势主导传统索引,同时仍然提供最佳的查询和更新时间性能。默认情况下,所有数字和字符串字段的二级索引都处于 ON 状态,并且可以为 json 属性启用二级索引。
SQL 优先
Manticore 的原生语法是 SQL,它支持 SQL over HTTP 和 MySQL 协议,允许通过任何编程语言的流行 mysql 客户端进行连接。
基于 HTTP 的 JSON
对于管理数据和架构的更具编程性的方法,Manticore 提供了类似于 Elasticsearch 的 HTTP JSON 协议。
与 Elasticsearch 兼容的写入
您可以执行与 Elasticsearch 兼容的插入和替换 JSON 查询,从而可以将 Manticore 与 Logstash(版本 < 7.13)、Filebeat 和 Beats 系列中的其他工具结合使用。
声明式和命令式架构管理
在线或通过配置文件轻松创建、更新和删除表。
实时插入
可以立即读取新添加或更新的文档。
交互式课程,轻松学习
提供免费的互动课程,让学习变得轻松。
事务
虽然 Manticore 不完全符合 ACID 标准,但它支持用于原子更改的隔离事务和用于安全写入的二进制日志记录。
内置复制和负载均衡
数据可以分布在服务器和数据中心之间,任何 Manticore Search 节点都同时充当负载均衡器和数据节点。Manticore 使用 Galera 库实现几乎同步的多主复制,确保所有节点的数据一致性,防止数据丢失,并提供卓越的复制性能。
内置备份功能
Manticore 配备了外部工具 manticore-backup 和 BACKUP SQL 命令,以简化备份和恢复数据的过程。或者,您可以使用 mysqldump 进行逻辑备份。
开箱即用的数据同步
Manticore 的工具和全面的配置语法使您可以轻松地从 MySQL、PostgreSQL、ODBC 兼容数据库、XML 和 CSV 等来源同步数据。indexer
集成选项
您可以使用 FEDERATED 引擎或通过 ProxySQL 将 Manticore Search 与 MySQL/MariaDB 服务器集成。
您可以使用 Apache Superset 和 Grafana 来可视化存储在 Manticore 中的数据。可以使用各种 MySQL 工具以交互方式开发 Manticore 查询,例如 HeidiSQL 和 DBForge。
流过滤变得简单
Manticore 提供了一种特殊的表类型,即 “percolate” 表,它允许您搜索查询而不是数据,使其成为过滤全文数据流的有效工具。只需将您的查询存储在表中,通过将每批文档发送到 Manticore Search 来处理您的数据流,然后只接收与您存储的查询匹配的结果。
可能的应用
Manticore Search 用途广泛,可应用于各种场景,包括:
-
全文搜索:
- 非常适合电子商务平台,通过自动完成和模糊搜索等功能实现快速准确的产品搜索。
- 非常适合内容繁重的网站,使用户能够快速找到相关的文章或文档。
-
数据分析:
- 使用 Beats/Logstash、Vector.dev、Fluentbit 将数据摄取到 Manticore Search 中。
- 使用 Manticore 的列式存储和 OLAP 功能高效分析大型数据集。
- 以最小的延迟对 TB 级数据执行复杂查询。
- 使用 Grafana 或 Apache Superset 可视化数据。
-
分面搜索:
- 使用户能够按类别(如价格、品牌或日期)筛选搜索结果,以获得更精致的搜索体验。
-
地理空间搜索:
- 使用 Manticore 的地理空间功能实施基于位置的搜索,例如查找附近的餐馆或商店。
-
拼写更正:
- 自动更正搜索查询中的用户拼写错误,以提高搜索准确性和用户体验。
-
自动完成:
- 在用户键入时提供实时建议,从而提高搜索的可用性和速度。
-
数据流过滤:
- 使用渗透表高效筛选和处理实时数据流,例如社交媒体源或日志数据。
要求
- 架构:arm64 或 x86_64
- 作系统:基于 Debian(例如 Debian、Ubuntu、Mint)、基于 RHEL(例如 RHEL、CentOS、Alma、Oracle Linux、Amazon Linux)、Windows 或 MacOS。
- 提供列式存储和二级索引的 Manticore Columnar Library 需要 SSE >= 4.2 的 CPU。
- 不需要特定的磁盘空间或 RAM 要求。一个空的 Manticore Search 实例仅使用大约 40MB 的 RSS RAM。