Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 使用Rails对Postgres追随者(数据库镜像)运行分析_Ruby On Rails 3_Heroku - Fatal编程技术网

Ruby on rails 3 使用Rails对Postgres追随者(数据库镜像)运行分析

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

Heroku关于Postgres追随者的文档鼓吹“追随者可能被用来……为分析提供数据的只读视图”,但它没有给出如何实现这一点的任何见解

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

我还没有找到关于如何访问这些查询的分析数据库的详细信息,同时仍然使用主数据库进行常规访问。我找到的大部分资源都是关于打电话的

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
类分析数据 这将导致分析数据结果存储在主生产数据库中

2) 拥有rails应用程序的单个实例

  • 在开始分析工作之前,请调用ActiveRecord::Base。建立\u连接(:analytics)
  • 嘎吱嘎吱作响
  • 调用ActiveRecord::Base。建立\u连接(:生产)
  • 实例化AnalyticsData对象以保存结果
我不确定后一种方法是否有效,但它的优点是不必担心保持两个Heroku应用程序的同步

想法?谢谢

参考资料:

追随者的数据库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']
设置正确的数据库连接参数。我没有使用过这些,但你应该在这里调查你的选择:(并在互联网上分享对你有用的东西!)

关注者的数据库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报告/分析来自您追随者的数据