Ruby on rails 3 使用Rails对Postgres追随者(数据库镜像)运行分析
Heroku关于Postgres追随者的文档鼓吹“追随者可能被用来……为分析提供数据的只读视图”,但它没有给出如何实现这一点的任何见解 我的计划是让“分析数据库”镜像“主数据库”;在analytics db上执行一些主要的数字处理sql查询,并将结果存储在主数据库的表中 我还没有找到关于如何访问这些查询的分析数据库的详细信息,同时仍然使用主数据库进行常规访问。我找到的大部分资源都是关于打电话的Ruby on rails 3 使用Rails对Postgres追随者(数据库镜像)运行分析,ruby-on-rails-3,heroku,Ruby On Rails 3,Heroku,Heroku关于Postgres追随者的文档鼓吹“追随者可能被用来……为分析提供数据的只读视图”,但它没有给出如何实现这一点的任何见解 我的计划是让“分析数据库”镜像“主数据库”;在analytics db上执行一些主要的数字处理sql查询,并将结果存储在主数据库的表中 我还没有找到关于如何访问这些查询的分析数据库的详细信息,同时仍然使用主数据库进行常规访问。我找到的大部分资源都是关于打电话的 class MyModel < ActiveRecord::Base establish
class MyModel < ActiveRecord::Base
establish_connection :analytics # and configure analytics within config/database.yml
end
classmymodel
然而,这将导致MyModel的所有存储都在跟随器上(顺便说一句,这不会工作,因为跟随器是只读的)。我希望主要的存储空间在主数据库上,但只需对跟随者进行一些(只读)访问
可能的解决方案:
1) 有一个运行不同环境的rails应用程序的单独实例,例如“分析”而不是“生产”。因此,它将使用分析数据库进行所有访问。然后将结果存储在
class AnalyticsData < ActiveRecord::Base
establish_connection :production if Rails.env == 'analytics'
end
类分析数据- 在开始分析工作之前,请调用ActiveRecord::Base。建立\u连接(:analytics)
- 嘎吱嘎吱作响
- 调用ActiveRecord::Base。建立\u连接(:生产)
- 实例化AnalyticsData对象以保存结果
heroku config:add READONLY_DATABASE_URL=<the url> --app your-app
heroku-config:addreadonly\u-DATABASE\u-URL=--app-your-app
然后使用activerecord的任何分片插件,根据
ENV['READONLY\u database\u URL']
设置正确的数据库连接参数。我没有使用过这些,但你应该在这里调查你的选择:(并在互联网上分享对你有用的东西!)关注者的数据库URL将在你的应用程序上作为配置变量提供。您可以通过heroku config--app-your-app看到这一点
我会通过以下方式将其指定为只读数据库URL
heroku config:add READONLY_DATABASE_URL=<the url> --app your-app
heroku-config:addreadonly\u-DATABASE\u-URL=--app-your-app
然后使用activerecord的任何分片插件,根据
ENV['READONLY\u database\u URL']
设置正确的数据库连接参数。我没有使用过这些方法,但您应该在这里调查您的选择:(并在互联网上分享对您有效的方法!)要访问只读关注者仅用于分析工作,请创建一个单独的模型,然后:
类分析模型
现在,从同一个应用程序中,您可以像平常一样使用MyModel,并使用AnalyzeModel来报告/分析来自您的关注者的数据。要访问只读关注者仅用于分析工作,请创建一个单独的模型,然后:
类分析模型
现在,从同一个应用程序中,您可以像平常一样使用MyModel,并使用AnalyzeModel报告/分析来自您追随者的数据