在Ruby on Rails 4/ActiveRecord上更好地练习大型表

new*_*ike 7 postgresql activerecord sharding rails-postgresql ruby-on-rails-4

fBetter在Ruby on Rails 4/ActiveRecord上练习大型表

我怎么能划分一个big tablepostgreSQLActive Record上轨道4

我更喜欢PostgreSQL或其他RDBMS,因为我在MongoDB中尝试过它.它真的很慢.

是否Rails 4支持整个大桌面的良好解决方案?

(我的情况:超过50 billions记录,大小是关于20TB)

数据描述

有一个User包含name, personal_data, year字段的表.

数据可以除以,year数据将被均匀分配.

思路

我认为这是not practical创建多个模型User_1950, User_2001,..., User_2015

我想通过partition整个数据year

有两个接近我能想到的

  • physical table在同一个数据库中拆分成不同的.(分片?)
  • physical database在不同的数据库上分成不同的.(它可以与Rails一起使用)

我希望解决方案可以兼容 Active Record

它会表现得像

User.find(name: xxx, year: 1988) User.find(name: xxx, year: 2012)

所以我不关心如何访问分区的多个表.

我所知道的

我找到了一颗宝石partitioned但不支持Rails 4

usm*_*ali 2

由于您是按年份存储数据,也许您可​​以使用基于年份的分片数据。我建议octopus与 activerecord 一起使用。

你的查询将变成这样:

User.using(:year_2012).find(name: xxx)
Run Code Online (Sandbox Code Playgroud)