Database Sharding-03-分库分表最佳实践
业务背景
移动互联网时代,海量的用户每天产生海量的数量,比如:
用户表
订单表
交易流水表
以支付宝用户为例,8亿;微信用户更是10亿。订单表更夸张,比如美团外卖,每天都是几千万的订单。淘宝的历史订单总量应该百亿,甚至千亿级别,这些海量数据远不是一张表能Hold住的。事实上MySQL单表可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW以下是最佳状态,因...
2018-09-04 08:26:49 |
Database
Database Sharding-02-分库分表实战 in action
单 key 业务
用户中心
用户中心是一个非常常见的业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为:
User(uid, login_name, passwd, sex, age, nickname, …)
其中:
uid 为用户ID,主键
login_name, passwd, sex, age, nickname 等用户属性
数据库设计上,一般来说在业务...
2018-09-04 08:26:49 |
Database
Database Sharding-01-分表分库入门介绍
拓展阅读
mycat
c3p0 数据池入门使用教程-00
shardingsphere-分布式数据库生态
分表分库
概念
常见分表分库方式
按照功能分库
按照功能进行分库。常见的分成 6 大库:
1 用户类库:用于保存了用户的相关信息。
2 业务类库:用于保存主要业务的信息。比如主要业务是笑话,用这个库保存笑话业务。
...
2018-09-04 08:24:49 |
Database
MySQL Proxy
MySQL Proxy
MySQL Proxy 是一个简单的程序,位于您的客户端和MySQL服务器之间,可以监控,分析或转换他们的通信。
它的灵活性允许多种用途,包括负载平衡、故障转移、查询分析、查询过滤和修改等。
缺点
1、通过 lua 脚本实现的读写分离,不太稳定,官网不建议用
MySQL Proxy is not GA, and is not recommended for ...
2018-09-04 07:27:31 |
Database
Dynamic Spring Datasource
Spring Datasource
开启本篇话题之前,先说下 spring 数据源的配置。
JDBC 直接配置
<!-- 配置数据源dataSource jdbc方式连接数据源 -->
<beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">...
2018-09-04 05:32:36 |
Spring
Graph Easy
Graph Easy
Graph::Easy lets you generate graphs consisting of various shaped nodes connected by edges (with optional labels).
It can read and write graphs in a variety of formats, as well as rend...
2018-09-04 01:38:54 |
Tool
Distributed High Availability
高可用
wiki
高可用性(英语:high availability,缩写为 HA),IT术语,指系统无中断地执行其功能的能力,代表系统的可用性程度。是进行系统设计时的准则之一。高可用性系统与构成该系统的各个组件相比可以更长时间运行。
高可用性通常通过提高系统的容错能力来实现。定义一个系统怎样才算具有高可用性往往需要根据每一个案例的具体情况来具体分析。
评定标准
其度量方式,是根据...
2018-09-04 01:29:39 |
Distributed
Database Read Write Separation
读写分离
作用
物理服务器增加,机器处理能力提升。拿硬件换性能。
主从只负责各自的读和写,极大程度缓解X锁和S锁争用。(ps: 一般的读 mysql 是 mvcc 控制的,不存在锁竞争。)
slave 可以配置 myiasm 引擎,提升查询性能以及节约系统开销。
master 直接写是并发的,slave 通过主库发送来的 binlog 恢复数据是异步。
slave 可以单独设置一...
2018-09-04 00:05:56 |
Design