架构设计之数据库设计

时间:2021-09-16 13:06:25   收藏:0   阅读:24

架构设计之数据库设计

背景

1. SQL优化

2. 表结构建设

3. 分库分表

什么时候考虑分库分表

3.1 分库

3.1.1 读写分离(一主多从)

3.1.2 水平分库

以字段为依据,按照一定策略(hash、range等(参考二),将一个库中的数据拆分到多个库中。

3.1.3 垂直分库

以表为依据,按照业务归属不同,将不同的表拆分到不同的库中。 达到专库专用的作用。

3.2 分表

3.2.1 垂直分表

以字段为依据,按照字段的活跃性,将表中字段拆到不同的表中(主表和扩展表)。 (参考一)

3.2.2 水平分表

以字段为依据,按照一定策略(hash、range 等),将一个表中的数据拆分到多个表中。 单表数据控制在500万。

3.3 常用分库分表工具

常用的分库分表工具如下: 各种工具的利弊自查

3.4 分库分表引发的问题

3.4.1 事务一致性问题

3.4.2 关联查询问题

3.4.3 跨节点分页、排序、函数等问题

3.4.4 全局主键避重问题

在分库分表环境中,由于表中数据同时存在不同数据库中,主键值平时使用的自增长将无用武之地,某个分区数据库自生成 ID 无法保证全局唯一。 需要单独设计全局主键,避免跨库主键重复问题。

3.4.5 数据迁移、扩容问题

3.4.6 小结

3.5 百亿级数据分表后怎么分页查询

3.5.1 分表

分表,借助唯一主键,查询的时候根据唯一主键的规则,可以指定到那一张表查询,常见的分布式生成唯一ID的方式很多,最常见的雪花算法Snowflake、滴滴Tinyid、美团Leaf。以雪花算法举例来说,一毫秒可以生成4194304多个ID。

3.5.2 借助ES

Elasticsearch 将全文检索、数据分析以及分布式技术,合并在了一起,使用 lucene(全文检索) ;

分布式的搜索引擎和数据分析引擎、处理海量数据、全文检索,结构化检索,数据分析 ;

3.5.3 提前计算

如果需要的是统计数据,如季报、年报等数据,可以进行提前计算,或者提前一天计算,但是会有一天的差值。

4. 创建分区、索引

参考资料

原文:https://www.cnblogs.com/renxiuxing/p/15265387.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!