gpt4 book ai didi

ruby-on-rails-3 - 使用 Rails 对 Postgres Follower(数据库镜像)运行分析

转载 作者:行者123 更新时间:2023-12-04 18:14:50 25 4
gpt4 key购买 nike

Heroku 在 Postgres Followers 上的文档吹捧“Followers 可能被用来……为分析提供只读数据 View ”,但它没有提供任何关于如何实现这一点的见解。

我的计划是让“分析数据库”镜像“主数据库”;在分析数据库上运行一些主要的、数字运算的 sql 查询,并将结果存储在主数据库的表中。

我还没有找到有关如何为这些查询访问分析数据库的详细信息,同时仍使用主数据库进行一般访问。我发现的大多数资源都在谈论调用

class MyModel < ActiveRecord::Base
establish_connection :analytics # and configure analytics within config/database.yml
end

但是,这将导致 MyModel 的所有存储都在追随者上(顺便说一句,这将不起作用,因为追随者是只读的)。我希望主存储空间位于主数据库上,但只需对跟随者进行一些(只读)访问。

可能的解决方案:

1)有一个运行不同环境的rails应用程序的单独实例,例如“分析”而不是“生产”。因此,它将使用分析数据库进行所有访问。然后将结果存储在
class AnalyticsData < ActiveRecord::Base
establish_connection :production if Rails.env == 'analytics'
end

这将导致 AnalyticsData 结果存储在主生产数据库中。

2) 拥有一个 Rails 应用程序实例。
  • 在开始分析工作之前,调用 ActiveRecord::Base.establish_connection(:analytics)
  • 做嘎吱嘎吱声
  • 调用 ActiveRecord::Base.establish_connection(:production)
  • 实例化 AnalyticsData 对象以保存结果

  • 我完全不确定后一种方法是否可行,但它的优点是不必担心保持两个 Heroku 应用程序同步。

    想法?谢谢!

    引用:
  • https://devcenter.heroku.com/articles/improving-heroku-postgres-availability-with-followers
  • https://devcenter.heroku.com/articles/heroku-postgres-documentation#follow-beta
  • 最佳答案

    关注者的数据库 URL 将在您的应用程序中作为配置变量提供。您可以通过 heroku config --app your-app 查看.

    我会将其分配为 READONLY_DATABASE_URL 通过

    heroku config:add READONLY_DATABASE_URL=<the url> --app your-app

    然后使用任何用于 activerecord 的分片插件,根据 ENV['READONLY_DATABASE_URL'] 设置正确的数据库连接参数.我没有使用任何这些,但你应该在这里调查你的选择: https://www.ruby-toolbox.com/categories/Active_Record_Sharding (并在整个互联网上分享对您有用的东西!)

    关于ruby-on-rails-3 - 使用 Rails 对 Postgres Follower(数据库镜像)运行分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11937562/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com