Elatisticsearch Mongodb选型对比
对比项目 | Elatisticsearch | Mongodb |
---|---|---|
索引(index) | 数据库(database) | |
文档类型(es7已经不区分文档类型) | 集合(collection) | |
节点/角色 | Master:主节点,Master eligible:合格节点,Data:数据节点,Coordinating:协调节点,Ingest:ingest节点 | configs,mongos,mongodb |
集群方案 | 分片(副本) -> segment | 分片(副本)-> chuck |
分片方案 | 默认根据id hash后分片,可以指定路由分片 | 根据片键范围分片(必须),片键确定后无法修改 |
分片时机 | 创建索引时指定分片数量,且指定后不能更改 | 自动分片(Auto-Sharding),当分片到达一定的大小后自动分片 |
集群平衡 | 增加/下线节点、增加副本时集群自动平衡,集群平衡时只需要移动分片(主或副本)即可,主/副本可处于集群任一节点上 | mongos会定期检查集群是否平衡,集群平衡分片的主和副本需要同时迁移,由于一个分片是一个副本集,所以一个分片的主/副本在固定的机器上 |
冷热分离 | 通过设置node.rack_id,node.attr.box_type标记冷节点和热节点,可以方便的将冷热数据分离 | 通过设置副本集的tag,可将分片数据均衡到指定副本集,可以方便实现冷热数据分离 |
分片方式 | hash分片 | 范围分片、hash分片、组合分片、标签分片 |
mongodb可以配置读副本集的primary/Secondary,写数据时可以配置 Write Concern 保障读写数据的一致性 | ||
es 具有更好的扩容缩容能力,mongo可以添加分片,但是删除分片非常麻烦