将新的rails应用程序与现有的外部MS SQL Server数据库集成

时间:2017-07-04 14:23:29

标签: ruby-on-rails sql-server database

我需要创建一个新的rails应用程序,它将使用现有的外部Microsoft SQL Server数据库作为其主数据库。此DB正在我需要连接的外部服务器上运行。在这里我工作的是一个单独的DB Admins部分,所以我不确定我需要执行哪些步骤。我认为简单的部分是连接到服务器并设置应用程序以使用该数据库。但在那之后我感到困惑。

我应该创建数据库转储和迁移吗?

我应该添加模型来表示现有的数据库结构吗?

如果我需要在db中创建新模型和表...

我应该从rails生成器生成其模型并在db上运行迁移,还是联系数据库管理员来创建表,然后手动指定应用程序内的模型? < - 这让我很困惑

提前谢谢你,对不起我的英语! :)

修改!! - > The Rails Way

我找到了另一种集成多个数据库数据的好方法......你可以定义一个模型并指定它所在的数据库(所以数据库连接永远不会关闭)......这绝对是 The Rails Way 应该遵循......

这是一个不错的啧啧: Multiple Databases in Rails

TL; DR

  1. 在database.yml中定义secondary_db
  2. 定义模型并指定其数据库和表名

    Class ExternalDatabaseModel < ActiveRecord::Base
      establish_connection(:secondary_db)
      self.table_name = "the_table"
      self.primary_key = 'someWeirdIDColumn'
    end
    
  3. 然后使用任何其他rails模型,指定关系等等:)

    希望对某人有帮助!

1 个答案:

答案 0 :(得分:0)

我建议你看一下tiny tds gem:https://github.com/rails-sqlserver/tiny_tds。配置和使用它真的很有用......您可以使用它来连接外部sql server db并进行所需的查询。不知道您正在使用哪种类型的系统,但如果您不断检索数据,则外部请求可能会使您的系统变慢。根据您的应用程序,您可以考虑同步数据,使本地数据库变得多余。希望它对你有所帮助,祝你好运!

编辑:关于模型部分:如果您每次需要时都要从该sql服务器检索数据,那么您不需要在本地存储它。但是,如果您正在进行冗余,则应该创建具有您需要的属性的模型,而不是从服务器检索时,将其保存为正常,只是将值归因于模型并调用save!方法。