Rails Insights

Rails로 여러 데이터베이스 사용하기: 설정 및 팁

Ruby on Rails는 강력한 웹 애플리케이션 프레임워크로, 다양한 데이터베이스와 함께 사용할 수 있는 유연성을 제공합니다. 여러 데이터베이스를 사용하는 것은 대규모 애플리케이션에서 데이터 분리를 통해 성능을 향상시키고, 유지보수를 용이하게 하는 데 큰 도움이 됩니다. 이 글에서는 Rails에서 여러 데이터베이스를 설정하고 사용하는 방법에 대해 알아보겠습니다.

1. 여러 데이터베이스 설정하기

Rails에서 여러 데이터베이스를 설정하는 것은 생각보다 간단합니다. Rails 6부터는 기본적으로 여러 데이터베이스를 지원하므로, 이를 활용할 수 있습니다. 다음은 여러 데이터베이스를 설정하는 단계입니다.

1.1 데이터베이스 설정 파일 수정

먼저, config/database.yml 파일을 열어 여러 데이터베이스를 정의합니다. 예를 들어, 기본 데이터베이스와 추가 데이터베이스를 설정할 수 있습니다.

development:
  primary:
    adapter: postgresql
    encoding: unicode
    database: myapp_development
    pool: 5
    username: myapp
    password:

  secondary:
    adapter: postgresql
    encoding: unicode
    database: myapp_secondary_development
    pool: 5
    username: myapp
    password:

위의 예제에서는 primarysecondary라는 두 개의 데이터베이스를 설정했습니다. 각 데이터베이스에 대한 설정을 추가하여 필요에 따라 조정할 수 있습니다.

1.2 마이그레이션 설정

여러 데이터베이스를 사용할 때는 각 데이터베이스에 대해 마이그레이션을 관리해야 합니다. 마이그레이션을 실행할 때는 데이터베이스 이름을 명시해야 합니다. 예를 들어, primary 데이터베이스에 마이그레이션을 실행하려면 다음과 같이 입력합니다.

rails db:migrate:primary

또한, secondary 데이터베이스에 마이그레이션을 실행하려면 다음과 같이 입력합니다.

rails db:migrate:secondary

2. 모델에서 데이터베이스 지정하기

Rails에서는 각 모델이 어떤 데이터베이스를 사용할지 지정할 수 있습니다. 이를 통해 특정 모델이 특정 데이터베이스와 상호작용하도록 설정할 수 있습니다.

2.1 모델에서 데이터베이스 설정

모델에서 데이터베이스를 지정하려면 establish_connection 메서드를 사용합니다. 예를 들어, SecondaryModel이라는 모델이 secondary 데이터베이스를 사용하도록 설정할 수 있습니다.

class SecondaryModel < ApplicationRecord
  self.abstract_class = true
  establish_connection :secondary
end

이제 SecondaryModel을 상속받는 모든 모델은 secondary 데이터베이스와 연결됩니다.

2.2 데이터베이스 간의 관계 설정

여러 데이터베이스를 사용할 때는 데이터베이스 간의 관계를 설정하는 것이 중요합니다. 예를 들어, primary 데이터베이스의 모델이 secondary 데이터베이스의 모델과 관계를 맺고 싶다면, 다음과 같이 설정할 수 있습니다.

class PrimaryModel < ApplicationRecord
  has_many :secondary_models, class_name: 'SecondaryModel', foreign_key: 'primary_model_id'
end

class SecondaryModel < ApplicationRecord
  belongs_to :primary_model, class_name: 'PrimaryModel', foreign_key: 'primary_model_id'
end

이렇게 하면 primary 데이터베이스의 모델과 secondary 데이터베이스의 모델 간의 관계를 설정할 수 있습니다.

3. 데이터베이스 전환하기

Rails에서는 데이터베이스를 전환하는 것이 가능합니다. 이를 통해 특정 작업을 수행할 때 원하는 데이터베이스를 선택할 수 있습니다.

3.1 데이터베이스 전환 방법

데이터베이스를 전환하려면 ActiveRecord::Base.establish_connection 메서드를 사용합니다. 예를 들어, secondary 데이터베이스로 전환하려면 다음과 같이 할 수 있습니다.

ActiveRecord::Base.establish_connection(:secondary)

이제 모든 ActiveRecord 쿼리는 secondary 데이터베이스에서 실행됩니다.

3.2 데이터베이스 전환 시 주의사항

데이터베이스를 전환할 때는 주의해야 할 몇 가지 사항이 있습니다:

  • 전환 후에는 반드시 원래의 데이터베이스로 돌아가야 합니다.
  • 전환된 데이터베이스에서 실행되는 쿼리는 해당 데이터베이스의 스키마에 따라야 합니다.
  • 전환 후에는 데이터베이스 연결이 끊어질 수 있으므로, 필요한 경우 재연결을 고려해야 합니다.

4. 성능 최적화 팁

여러 데이터베이스를 사용할 때 성능을 최적화하는 것은 매우 중요합니다. 다음은 성능을 향상시키기 위한 몇 가지 팁입니다.

4.1 데이터베이스 인덱스 사용

각 데이터베이스에 적절한 인덱스를 설정하여 쿼리 성능을 향상시킬 수 있습니다. 인덱스는 데이터 검색 속도를 높여주므로, 자주 조회되는 컬럼에 인덱스를 추가하는 것이 좋습니다.

4.2 쿼리 최적화

복잡한 쿼리는 성능 저하를 초래할 수 있습니다. 쿼리를 최적화하여 불필요한 데이터 로드를 줄이고, 필요한 데이터만 가져오도록 설정하는 것이 중요합니다.

4.3 캐싱 활용

Rails에서는 다양한 캐싱 메커니즘을 제공하므로, 이를 활용하여 데이터베이스 쿼리 수를 줄일 수 있습니다. 예를 들어, Rails.cache를 사용하여 자주 조회되는 데이터를 캐싱할 수 있습니다.

5. 결론

Rails에서 여러 데이터베이스를 사용하는 것은 복잡할 수 있지만, 적절한 설정과 관리로 성능을 향상시키고 유지보수를 용이하게 할 수 있습니다. 이 글에서 소개한 설정 방법과 팁을 통해 여러분의 Rails 애플리케이션에서 여러 데이터베이스를 효과적으로 활용해 보세요. 다양한 데이터베이스를 통해 더 나은 성능과 확장성을 경험할 수 있을 것입니다.

Published: August 22, 2024

© 2024 RailsInsights. All rights reserved.