ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Redis还是Postgres?SonarSearch两种索引后端选型终极指南

Redis还是Postgres?SonarSearch两种索引后端选型终极指南 Redis还是PostgresSonarSearch两种索引后端选型终极指南【免费下载链接】SonarSearchA rapid API for the Project Sonar dataset项目地址: https://gitcode.com/gh_mirrors/so/SonarSearchSonarSearch 是一个专为 Rapid7 Project Sonar 海量数据集打造的极速查询 API支持子域名枚举与 IP 反查。部署时最关键的决策就是索引后端选型Redis 还是 Postgres本指南将从内存占用、查询性能、加载耗时三个维度帮你做出最合适的 SonarSearch 部署选择。为什么 SonarSearch 需要索引后端SonarSearch 面对的是数十亿条 DNS 记录直接全文扫描根本不可行。它的解决方案非常巧妙先用sonar2crobat将原始数据集转换为统一格式再排序生成有序文件最后构建一份关键词 → 文件偏移量的定位索引。查询时系统通过索引瞬间定位到文件中的起始位置再顺序读取命中结果因此既快又省内存。而这份定位索引的存储位置就是你需要在 Redis 和 Postgres 之间做出的选择。索引读取的核心逻辑可以查看 indicies.go其定位算法会返回每个域名或 IP 段在排序文件中的字节偏移。Redis 后端为极致查询性能而生如果你追求的是高并发、低延迟的查询体验Redis 是首选。Redis 的优势亮点极速查询Redis 将全部索引载入内存单次定位查询通常在毫秒级完成非常适合高频调用场景快速加载索引导入速度飞快crobat2index会直接输出 Redis 协议格式RESP配合redis-cli --pipe可批量灌入实现简洁项目内置了 Redis 客户端封装连接池默认 64见 indicies.goRedis 的硬性代价内存大户完整索引约需20GB RAM这是使用 Redis 后端不可回避的硬件成本服务器内存不足时Redis 会触发淘汰策略或直接无法加载导致服务不可用Postgres 后端低内存成本的最优解如果你的服务器内存有限或查询量处于中等水平Postgres 后端是更务实的选择。Postgres 的优势亮点极低内存占用索引存储在磁盘上运行内存预估仅需2-4GB远低于 Redis部署灵活可通过 Docker 一条命令拉起数据持久化到本地卷重启不丢索引成熟稳定Postgres 的查询与运维生态成熟配合官方文档即可轻松排障Postgres 的代价加载更慢将数据批量写入 Postgres 需要更长时间首次构建索引要有耐心查询略慢索引查询需经过磁盘 IO单次定位耗时高于 Redis但绝大多数场景仍可接受索引后端选型对照表一眼看懂怎么选对比维度Redis 后端Postgres 后端内存占用约 20GB约 2-4GB索引加载速度快较慢单次查询延迟毫秒级稍高适用查询量极高并发中低并发硬件门槛高低推荐场景对外公开 API个人自用、VPS一句话总结追求极致性能选 Redis预算有限选 Postgres。如何切换索引后端最简配置方法SonarSearch 的后端切换非常直观构建索引时通过-backend参数指定即可具体实现见 crobat2index/main.go。以 Postgres 为例先建表psql -U postgres -h 127.0.0.1 -d postgres \ -c CREATE TABLE crobat_index (id serial PRIMARY KEY, key text, value text)再将排序后的数据导入crobat2index -i crobat_sorted_domains -f domain -backend postgres | \ psql -U postgres -h 127.0.0.1 -d postgres \ -c COPY crobat_index(key, value) from stdin (Delimiter ,)服务端启动时只需通过环境变量声明后端即可详见 readme.mdCROBAT_CACHE_BACKENDpostgres \ CROBAT_POSTGRES_URLpostgres://postgres:postgreslocalhost:5432/postgres \ crobat-server构建 SonarSearch 的完整流程速览无论选择哪种索引后端整体构建链路是相同的官方完整说明在 readme.md编译工具make make install生成全部二进制获取数据集准备 Project Sonar 原始数据需 150-200GB 磁盘格式转换sonar2crobat将 gzip 原始数据转为中间格式排序去重分别对域名文件和反查文件排序构建索引crobat2index按你选定的后端生成定位索引启动服务crobat-server同时提供 REST1998 端口与 gRPC1997 端口接口选型落地建议三步锁定最佳后端先看内存服务器内存 ≥ 24GB 且有冗余 → 放心用 Redis否则直接选 Postgres再看量级准备对外提供高并发 API 服务 → Redis仅供个人或团队内部查询 → Postgres最后看耐心Postgres 首次加载较慢如果不想等太久且预算允许Redis 能帮你大幅缩短部署时间结语Redis 与 Postgres 的索引后端选型本质是性能与成本的权衡。SonarSearch 的设计让你无需改动业务代码即可平滑切换后端先用 Postgres 跑通全流程、后续再升级 Redis也是完全可行的渐进式方案。现在就去 clone 仓库git clone https://gitcode.com/gh_mirrors/so/SonarSearch动手部署吧【免费下载链接】SonarSearchA rapid API for the Project Sonar dataset项目地址: https://gitcode.com/gh_mirrors/so/SonarSearch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表