分库分表以后的多维度查询问题

简介: 分库分表以后的多维度查询问题

公众号merlinsea


多维度查询问题介绍


   在进行分库分表的时候应该有碰到一个问题,一个数据需要根据两种维度进行查询,但是我们在进行分库分表是只能根据一种维度进行。比如:用户购买了商品产生了订单,当用户非常多的时候,我们会选择订单【根据下单用户的ID进行分库分表】。但是这里面存在一个问题就是作为卖家要如何查询我卖出的所有订单呢?因为订单是根据用户id规则进行分库分表的,卖家订单查询接口物理上是无法一次查询出当前的订单的,因为客户的数据分别分布在不同的订单库或者订单表中的,有可能商家自己所有客户的订单列表,需要跨非常多的表,这个样性能是非常低效的。


解决方案


   方案1:建立两个维度的订单数据库买方库和卖方库,买方数据库中的表基于用户id进行分片,卖方数据库中的表基于商家id进行分片。两个数据可以通过datax数据同步框架将买方库的数据根据商家id同步到卖方库中。通过DataX实现数据同步不是实时的,DataX是基于定时任务完成数据同步的,如果将时间间隔设置的比较小,会存在一定的cpu性能浪费。

640.jpg

方案2:将数据基于用户id分片的数据进行汇总,然后存储在NoSql数据库中,比如elasticSearch,这样在商家进行查询的时候直接走 ElasticSearch即可。

640.jpg



相关文章
|
SQL 消息中间件 缓存
库存扣减问题
库存扣减问题
库存扣减问题
|
NoSQL 算法 Java
面试官:网关如何实现限流?
面试官:网关如何实现限流?
994 2
面试官:网关如何实现限流?
|
存储 算法 Oracle
极致八股文之JVM垃圾回收器G1&ZGC详解
本文作者分享了一些垃圾回收器的执行过程,希望给大家参考。
|
Java 数据安全/隐私保护 Sentinel
面试官:Sentinel是如何实现限流的?
面试官:Sentinel是如何实现限流的?
1495 1
|
存储 中间件 数据库连接
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
10月前
|
存储 监控 Java
招行面试: 分布式调度 设计,要考虑 哪些问题?
45岁资深架构师尼恩在读者交流群中分享了关于设计分布式调度框架时需考虑的关键问题。近期有小伙伴在面试招商银行时遇到了相关难题,因准备不足而失利。为此,尼恩系统化地梳理了以下几点核心内容,帮助大家在面试中脱颖而出,实现“offer直提”。
|
存储 监控 Java
ThreadLocal存在的风险点和解决方案
ThreadLocal存在的风险点和解决方案
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
24700 7
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
存储 负载均衡 监控
redis 集群模式(redis cluster)介绍
redis 集群模式(redis cluster)介绍