Octopus gem基于shard_id为关联模型动态选择分片

时间:2016-05-14 15:03:41

标签: ruby-on-rails activerecord sharding octopus

我们有一个用户表。用户有很多列表。

我们希望对关联模型列表进行分片,以便所有用户都保留在数据库“master”分片上。用户将获得shard_id列,列表将被拆分为不同的数据库“shard1”,“shard2”。

我们可以使用using方法扩充我们的代码以访问正确分片上的列表:

Listing.where(user: current_user).using(current_user.shard_id)

然而,这是一个很大的代码更改。理想情况下,我们希望继续使用现有的关联语句,如下所示:

current_user.listings

让它在引擎盖下自动使用current_user.shard_id

有关此的任何建议吗?

1 个答案:

答案 0 :(得分:0)

根据文档,current_user.listings应该开箱即用。

  

八达通也处理协会。当您尝试获取与另一个对象关联的对象时,可以使用常规的ActiveRecord语法来获取对象

https://github.com/thiagopradi/octopus/wiki/How-Octopus-Works