摘录来自互联网备忘
Beaver VS ES | ES | Beaver |
实时性高 | 1.准实时索引检索引擎 2.模拟实时需要定期Flush将数据转化成磁盘结构(Refresh),会消耗大量IO | 1.纯实时索引检索引擎 2.内存原地检索不必耗费I/O |
并发写入效率高 写入效率beaver比es提升 400% - 500% | 1.Segment只能由一个线程写 2.产生的Segment的数目极多,每个Segment的DOC数目少,严重依赖Merge 3. Merge会占用大量的IO和CPU 4. Merge不及时会导致低性能 | 1.Segment支持内部并发写 2.单Segment更大,减少Segment数量 3.Merge的规模小,正常情况下因Merge产生的IO和CPU消耗很低 |
搜索性能高 查询性能beaver比es提升50% 统计性能beaver比es提升 100% - 200% | 1.实时系统中会导致负载的Global Ordinal失效和重建 2.由于Segment频繁变动导致Global Ordinal大量失效 3.每次检查都需要检索全部的Segment 4.按时间排序取Top N的算法不够高效 | 1.Global Ordinal能长期使用 2.可以根据时间戳和Query的范围排除大量不需要检索的Blick 3.某些情况下可以优化Query,不进行时间戳过滤 4.随时间戳排序取Top N时排除大量的Block |
有效的内存控制 能同时打开更多索引 | 1.能同时打开的索引目录有限 2.所有打开的Segment都需要加载全部数据的Meta 3.Meta往往小号大量的内存 | 1.选择性加载Meta 2.可以管理的Segment没有内存限制 3.Meta消耗的内存可以控制 |
要有效冷温热索引分层控制 | 1.长期保留索引时,需要把所有索引源数据打开,带来极大资源消耗 2.需要上层干预索引打开和关闭 3.无法自动进行索引分级控制 | 1.对索引打开的数量不敏感 2.引擎会自动根据ssd,sata,nas不同级别存储完成热,温,冷索引迁移和控制 |
采用性能更优,内存控制更好的 C++语言开发 | 1.采用Java开发 2.高性能以来JIT编译器 3.容易引起GC | 1.无GC风险 2.性能优化可以做到极致 3.内存使用完全可控 |
节省硬件成本 | 同样入库和查询条件下,beaver比es要节省一半硬件成本 |