icql

架构基础_高性能架构模式_分库分表

旧文档,TODO重新总结

海量数据存储

业界公认MySQL单表容量在1KW量级是最佳状态,因为这时它的BTREE索引树高在3~5之间,对于海量数据为了保证性能则需要将数据存放在多个地方

1)分区表

mysql分区表,屏蔽了sharding细节,但是受单机的限制,连接数、网络吞吐等

2)分库分表

sharding-sphere(支持CLIENT模式、PROXY模式) MyCAT(PROXY模式)

CLIENT模式、PROXY模式核心步骤:

SQL解析->重写->路由->执行->结果归并

3)NoSQL

目前还是关系型数据库为主,NoSQL为辅



案例分析

订单表:

order_id user_id store_id order_time remark

1)选取 sharding column

单sharding column:优先使用

以订单id作为分表的列

多sharding column:尽量避免

分别以订单id、用户id、店铺id作为各自分表的列

2)es + HBase

对于有其他查询条件需求的,可以采用 es + HBase 架构

将查询条件存在es,真实全量数据存储在 HBase 中 索引和数据存储分离