【发布时间】:2019-01-14 23:27:56
【问题描述】:
我正在开发一个应用程序,它对大多数实体使用关系数据库 Mysql,它是在微服务架构中构建的,每个服务都使用单独的 MYSQL 数据库。
现在我正在尝试使用弹性搜索作为中间件渠道来实现出版物搜索引擎,以便能够搜索与出版物对象相关的所有实体,即使来自具有不同数据库的不同服务。
索引发布对象的最佳方法是什么?
- 我有 3 个选项:
- 创建具有多嵌套对象类型的完整发布类型?
- 问题:
- 来自不同服务的所有实体的复制
- 很难更新,例如在更新指令的情况下
- 使用来自其他对象的所有字段创建不同的发布类型,然后在插入或查找数据时规范化数据。
- 问题:
- 在插入和查找时标准化数据的成本很高
- 难以维护和更新
- 插入多个分隔类型,类似于关系数据库,然后进行多次查询以找到最终对象,例如,如果我们要通过 user_name 查找发布,则必须先找到用户,然后使用 user_id 查找发布。
- 问题:
- 我们必须进行超过 1 次查询才能获得有效结果
- 使用 has_parent、has_child 关系,但在这种情况下,孩子是发布者,它有多个多对一关系,因此有多个父母。
- 创建具有多嵌套对象类型的完整发布类型?
我可能走错了方向,如果您认为我应该使用不同的技术,请分享您的反馈
【问题讨论】:
标签: database elasticsearch nosql microservices search-engine