我如何使ActiveRecord搜索多个表(类似的模式)默认情况下?



我有一个非常大的表Metrics,主整数键名为id。

主键为32位整数,即将溢出。我试图解决这个问题的方法是:

  1. 用(几乎)相同的模式创建一个新表,但是用64位整数代替ID。
  2. Metric模型上设置self.table_name = "metrics_with_bigints"
  3. metrics_with_bigints表中创建(31 ^^ 2)+ 1 ID
  4. 的记录

对于NEW记录可以正常工作。然而,我希望能够调用Metrics.find(1),仍然让它返回记录。

该表是APPEND ONLY,记录不能被修改。

我认为我想在默认情况下UNION ALL这两个表,但我有问题解决这个

我的想法是:

class Metric < AR::Base
def self.find_by_sql(*args)
sql = args.first
# do something here that unions the 2 tables?
super
end
end

我不确定这种方法是否可行。

我相信你可以改变主键的类型。并将其改为UUID。它是128位数字,有几个额外的优点。遵循这个->https://andycroll.com/ruby/choose-uuids-for-model-ids-in-rails/

相关内容

  • 没有找到相关文章

最新更新