`

Mysql sharding 方案

阅读更多

大牛@Fenng有两篇与sharding相关的博客,值得一读:

  - http://www.dbanotes.net/database/sharding.html

  - http://www.dbanotes.net/database/database_sharding.html

 

Replication与Sharding的区别

  - Replication用户扩展数据库系统的读性能

  - Sharding用于扩展数据库系统的写性能

 

 

实现方案

1. Hibernate Shards(Google)

 

2. HiveDB

 

3. Mysql Proxy(官方,不成熟)

 

4. Amoeba for mysql

  - 案例(http://pengranxiang.iteye.com/blog/1145342

  - 操作文档(http://docs.hexnova.com/amoeba/chap-getting-started.html

 

5. Spock Proxy (http://spockproxy.sourceforge.net/

  - 基于Mysql Proxy扩展

  - ROR版本

 

6. DataFabric (https://github.com/bpot/data_fabric

   - application-level sharding

   - master/slave replication

 

 

分片如何在节点上分布? 节点、数据库实例、分片直接的关系?

  - 常用方案:一对一对一关系(一个节点上一个mysql实例,部署一个分片)

  - 分片的命名方式:shard_1.users, shard_2.users ...

 

 

分区键,分区函数的选择

  - 一般选择ID,Hash,确定所在分区(新浪微博采用的方案)

 

需考虑的问题

  - 当一次查询的数据分散在多个分片时,需要排序和合并多个数据集

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics