数据分片查询方案

概述

什么是数据分片?请自行百度。本文主要讨论的是数据分片后的查询方案。什么?肯定有人纳闷了,查询还需要什么方案?要是这么想就肤浅了。

场景

试想一下这样的场景,多数情况下都是以单一维度进行范围分片(时间、地区、组织、用户ID等),这么一来是满足单一维度的查询,但是遇到多维度查询就会是一件非常头疼的事情。

不同维度数据查询,场景是不⼀样的,主要是分:有partition_key,没partition_key两个场景;

以电商订单为例,订单表的 partion_key 是 user_id。
用户查看自己的订单列表方便
商家查看自己店铺的订单列表就会非常麻烦,数据分布在不同数节点

解决方案

接下来,我将谈谈平时项目中常用的3种方案,大家也可以根据业务场景选择合适的方案。

一、字段表解析

设计一张字段映射表,通过这张表记录条件索引、分片索引和数据库索引形成映射关系,查询是通过这张表进行路由找到所有需要查询的数据库和表,避免全库、全表扫描。

二、NOSQL冗余方案

db->kafka->es 冗余

数据入库并通过消息队列冗余到NOSQL,后续查询通过NOSQL进行。

三、冗余双写方案

以电商为例,数据库设计时拆分商家库、用户库,数据入库时在商家库和用户库各存入一份。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ゞ註﹎錠oo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值