数据库简单认知

数据库简单认知

假设购物网站数据库主要存储
1、商品信息表
2、会员信息等其他表


刚开始(我们将1 2全部放在一个DB中,记作 DB_MASTER_A
突然有一天发现DB坏了,备用的DB都没有,这时候DB_SLAVE_A就应景而生了
####读写分离
可以将读频繁的和慢的切换到DB_SLAVE_A中以减轻DB_MASTER_A的压力,
比如:商品各类信息
可以配置多个数据源 指向不同的数据库
sql调用那个数据源 1、可以通过不同路径配置不同的数据源
2、AOP实现访问制定的数据源


有一天发现会员的信息是核心模块不能什么都能访问,核心数据,
这个时候就有了垂直切分了 拆一个DB_MASTER_B
以及一个用于读的DB_SLAVE_B
####垂直切分
DB_MASTER_A核心数据 DB_SLAVE_A核心数据读库
DB_MASTER_B非核心数据 DB_SLAVE_B非核心数据读库
优点:业务清晰,扩展容易


有一天商品的浏览日志记录数据每天都会产生大量的数据
这个时候水平拆分就应景而生了

水平切分

DB_MASTER_C用于记录日志,
但如果把每天的数据都放在一张表里面,那么即使有DB_SLAVE_C读库那么查询也很慢,这时候就有了分表
例如按照每天建立一张表, 表名LOG_20180124,这样查询不同时间的日志就可以去对应的表里面查了。
分表还可以按照,对编码取hash然后取余数分表,
或者定义规则表,每次访问先看数据那个规则再访问不同的表


最后的DB

DB_MASTER_A核心数据 DB_SLAVE_A核心数据读库
DB_MASTER_B非核心数据 DB_SLAVE_B非核心数据读库
DB_MASTER_C日志数据 DB_SLAVE_C日志数据读库

DB_MASTER_C 表:LOG_20180123表:LOG_20180124表:LOG_20180125
DB_SLAVE_C表:LOG_20180123表:LOG_20180124表:LOG_20180125


欢迎指正交流欢迎指正交流欢迎指正交流欢迎指正交流

你可能感兴趣的:(数据库)