分库分表方案
1. 垂直分片
将整个库按业务划分为多个库。可以扩展数据库连接数
,提升数据库IO性能,但不能解决单表数据量大的问题。
2. 水平分片
从数据维度切分,使用分片键+分片规则,将单表数据拆分到多张表中。可以扩展单表可控数据量,提升数据库查询性能
。
分库分表技术选型
市面上常用的有ShardingSphere和Mycat。
ShardingSphere是Apache的顶级分库分表项目,社区活跃度高,产品更新快。mycat的活跃度相对来说活跃度不高,且版本迭代更新慢。
ShardingSphere包括了jdbc,proxy, 它提供了水平分片、垂直分库分表、读写分离、分布式事务等功能。它支持多种主流数据库,包括 MySQL、PostgreSQL、Oracle 等。ShardingSphere 还提供了灵活的配置选项,方便开发人员根据实际需求进行定制化配置。ShardingSphere包含了jdbc和proxy两个产品。jdbc基于客户端分库分表,proxy基于服务端分库分表。 Mycat是基于客户端分库分表。
常用数据分片策略
1. 取模分片
优点:数据存放比较均匀
缺点:扩容需要大量数据迁移
2. 按范围分片
优点:扩容不需要迁移数据