业务背景智能产品业务数据之前存储在Elasticsearch(Es)中,磁盘占用约30T,总数据量25亿,业务存在严重性能及成本问题,当前部分数据已迁移至MongoDB,迁移后成本实现十倍级节省,业务抖动问题解决。迁移原因与对比业务已将数百亿级数据从Es迁移至MongoDB,原因在于业务选型错误导致的性能及成本问题。Es绝对是一款优秀的搜索引擎,但在模糊匹配、全文搜索、复杂检索等方面相比MongoDB有优势,且对于简单查询场景,MongoDB更具优势。Es与MongoDB各有适用场景,适合不同业务需求。迁移方案与资源评估迁移方案基于业务简单查询条件,选择_id作为分片键,使用hash分片以最大化数据分散,确保查询效率。资源评估过程中,考虑到读写流量较低、数据量较大,确定分片数为2个,内存规格为64G,每个分片数据量估算为5T,最终确定单个mongod实例容器磁盘规格为5T。CPU与磁盘规格综合考虑成本与业务需求,优化集群部署架构。性能优化过程数据迁移前进行预优化,包括提前创建hashed索引、配置nearest以实现就近读取、关闭ReadConcern majority功能等,以提升性能。迁移过程中优化全量数据写入策略,通过调整wiredtiger存储引擎的cache淘汰策略,有效解决内存压力,提高写入速度。迁移完成后的性能调整重点放在读流量上,优化索引以提升读性能。迁移后性能对比迁移后,MongoDB集群整体时延约1.5ms,远优于Es的秒级时延抖动。迁移前后的时延对比显示MongoDB在性能方面有显著提升。成本收益对比Es与MongoDB集群的资源消耗对比显示,MongoDB在成本方面实现十倍级节省。Es磁盘占用约为MongoDB的6倍,考虑到MongoDB集群还存储了额外业务数据,成本优势更加明显。适用场景总结不同场景下,Es与MongoDB各有优势与局限性。对于查询条件随机组合、非前缀匹配模糊查询等场景,Es更优。而对于固定字段的查询与大并发写操作,MongoDB表现更佳。脱离具体业务场景评估数据库性能时,需综合考虑数据库的市场定位与应用场景。