分库分表后复杂查询的应对之道:基于DTS实时性ES宽表构建技术实践

💡 原文中文,约1200字,阅读约需3分钟。
📝

内容提要

文章介绍了数据库架构在业务发展初期往往是单库单表,随着用户量和订单量的增加,数据库成为系统瓶颈。解决方案有分库分表、构建ES宽表和构建查询条件到表主键Mapping映射表。ES宽表的构建解决方案有同步双写、异步双写和基于Binlog的实时同步。文章对解决方案的优缺点进行了对比,并介绍了实践中的顺序性保证、幂等性保证、数据一致性保证和存量数据迁移。最后,介绍了ES复杂检索的分类和查询条件构建。

🎯

关键要点

  • 业务发展的初期数据库架构为单库单表,随着用户和订单量增加,数据库成为系统瓶颈。
  • 解决方案包括分库分表、构建ES宽表和查询条件到表主键Mapping映射表。
  • ES宽表的构建方案有同步双写、异步双写和基于Binlog的实时同步。
  • 同步双写是在写请求后同步写入DB和ES,异步双写则是先写DB后异步发送MQ写入ES。
  • 基于Binlog的实时同步可以将Binlog作为消息或数据进行处理,构建宽表并写入ES。
  • 对解决方案的优缺点进行了对比分析。
  • 实践中保证顺序性、幂等性和数据一致性,采用定时任务进行存量数据迁移。
  • ES复杂检索分类为多条件复杂查询,使用Bool查询进行检索条件构建。
➡️

继续阅读