场景:菜鸡一枚,我有一个使用 es 的场景,是一个检索系统,检索的要求比较高,关系型数据库无法满足。数据源是外部的 xml 文件,数据量第一次 400w 左右,后续每天会几千的数据增量更新,增量数据也是来源 xml 文件。
我的想法有两个:
方式一,分两个阶段:目前是打算先将文件解析到数据库(已经实现解析到数据库,主表 400w ,关联表 1000w,400w,700w 不等),只同步关键索引字段,检索时拿到主键再通过主键查询从数据库组装数据做详情展示。通过定时任务 update_time 或者触发方式直接调用 es 的 api 将数据同步到 es
目前存在的问题:
1.数据不在一个表里,还需要做一些联表查询,数据处理,再同步到 es ,方便做检索,打算只做一个嵌套索引。系统会做一些更新操作也希望能同步到 es
2.数据一致性保难保证?
方式二,解析文件的时候,直接将数据双写,一边写 mysql ,一边组装后调 es api 写到 es
想到可能存在的问题:
1.如果解析过程其中一个发生异常,是不是得手动处理脏数据
2.这种方式是不是得引入消息 mq ?先写到 mq ,再消费 mq 处理数据后写到 es (我这个数据量这样有必要吗)
3.一次到位好像更方便,系统操作有更新还需要将更新同步到 es
哪个方式好点呢?也稍微了解过 flink ,canal ,但是感觉好像维护困难,我也不知道能不能满足我的需求,因为我们没有专业运维,整进来也是我自己维护,我该怎么办呢,迷茫了,就怕按自己想的方式做后面一堆坑,有没有前辈指导一下
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/1024126
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.