ES数据和数据库数据不一致时怎么办?

       考虑到ElasticSearch优秀的索引和检索性能,项目中使用ES作为前台搜索引擎,但是在创建和更新ES数据的时候,由于种种原因,可能会出现ES更新失败,造成ES数据和数据库最新真实数据出现不一致的现象。在做项目的过程中整理了一下四种解决方案:

1、开一张表专门记录创建和更新ES数据失败的信息(比如我们项目中主需要记录主表ID,更新数据时根据ID组装数据),然后设置一个定时任务,定时向ES更新失败的数据;

2、小批量、多批次更新;通俗讲就是设置固定时间间隔,然后更新先前一段时间的数据,比如每隔10分钟,全量更新前20分钟的数据;缺点就是有些数据正常的数据也更新了,消耗性能;

3、大批量,小批次更新;和第二条阐释类似,比如在每天夜晚2点种,全量更新某一时间段范围(1或2天)、某一标签或类别(商品、服务)、某一地区、某类用户画像等等可以分类分区的数据;

4、定时任务,异步全量查询数据库表,开多线程,更新ES;消耗大量资源,且全量更新数据库表也不科学;

        我司另一个项目组采用方案2,但是从消耗资源和技术设计角度讲,我认为上述四条方案中,方案1最佳,方案4最差。

    有考虑不周或不对的地方,还请各路大神敬请留言,不吝赐教

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,386评论 0 34
  • 数据库对互联网开发的重要性就不必多说了。作为大数据和AI时代的互联网er,如果你还是只懂MySQL,那你可就火星大...
    麦田里的思考者阅读 11,745评论 4 40
  • Sharding的基本思想其实就是采用分治的思想,要把一个数据库切分成多个部分放到不同的数据库(server)上,...
    jiangmo阅读 9,488评论 0 7
  • 雨。 一场秋雨一场寒。不管人们是否承认广州有秋天,尽管树木青绿如斯,河水依旧潺潺,但这时节,确已是秋。雨水落在树叶...
    东围居士阅读 138评论 0 0
  • 我刚买了新房,感受到了安定的自由,以前的世界总觉得拥挤,现在总算有了自己梦寐以求的小家,我正在给女儿做蛋糕的时候,...
    与晴儿阅读 1,823评论 23 30