PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mendapatkan informasi dari satu server Rails ke yang lain

Ada banyak tutorial tentang cara menggunakan beberapa koneksi database di Rails serta membangun API di Rails. Beberapa menit dari Googling akan memberi Anda banyak contoh. Tapi di sini ada beberapa pendekatan sederhana:

Untuk beberapa koneksi database, Anda benar, Anda harus memiliki info koneksi untuk kedua database yang ditentukan di database.yml Anda mengajukan. Contoh:

# Local Database
development:
  adapter: mysql2
  database: local_db
  username: my_user
  password: my_password
  host: localhost
  port: 3306

# Reporting Database
development_reporting_db:
  adapter: postgresql
  encoding: unicode
  database: reporting
  username: some_user
  password: some_password
  host: 1.2.3.4
  port: 5432

Rails tidak akan melakukan apa pun dengan blok tambahan ini kecuali jika Anda secara eksplisit menyuruhnya. Praktik umum adalah mendefinisikan model ActiveRecord abstrak yang akan membuat koneksi kedua:

class ReportingRecord < ActiveRecord::Base
  establish_connection( "#{Rails.env}_reporting_db".to_sym )
  self.abstract_class = true
end

Kemudian, buat model baru untuk tabel yang berada di database pelaporan Anda dan mewarisi dari ReportingRecord bukannya ActiveRecord::Base :

class SomeModel < ReportingRecord
  # this model sits on top of a table defined in database.yml --> development_reporting_db instead of database.yml --> development
end

Untuk membangun API, ada banyak cara berbeda untuk melakukannya. Terlepas dari pendekatan Anda, saya sangat menyarankan Anda memastikan itu hanya dapat diakses melalui HTTPS. Berikut adalah pengontrol dasar dengan satu tindakan yang merespons permintaan json:

class ApiController < ApplicationController
  before_filter :restrict_access # ensures the correct api token was passed (defined in config/secrets.yml)
  skip_before_action :verify_authenticity_token # not needed since we're using token restriction

  respond_to :json

  def my_endpoint_action
    render :json => {some_info: 'Hello World'}, :status => 200 # 200 = success
  end

  private
    rescue_from StandardError do |e|
      render :json => {:error => e.message}.to_json, :status => 400 # 400 = bad request
    end

    # ensures the correct api token was passed (defined in config/secrets.yml)
    def restrict_access
      authenticate_or_request_with_http_token do |token, options|
        token == Rails.application.secrets[:my_access_token]
      end
    end
end

Contoh ini mengharuskan Anda untuk menentukan token akses di config/secrets.yml berkas:

development:
  secret_key_base: # normal Rails secret key base
  my_api_access_token: # put a token here (you can generate one on the command like using rake secret)

Memilih antara solusi API dan beberapa DB sebagian besar bergantung pada bagaimana aplikasi Anda dapat berkembang di masa mendatang. Pendekatan multiple DB biasanya lebih mudah diterapkan dan memiliki kinerja yang lebih tinggi. API cenderung menskalakan secara horizontal lebih baik dan basis data yang memiliki koneksi hanya dari satu aplikasi, bukan dari 2 atau lebih, cenderung lebih mudah dipelihara dari waktu ke waktu.

Semoga membantu!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menargetkan nilai tertentu dari JSON API dan memasukkan ke dalam Postgresql, menggunakan Python

  2. Cara mendapatkan tipe dasar array di postgres melalui jdbc

  3. Bisakah Komit Postgres Ada dalam Prosedur yang memiliki Blok Pengecualian?

  4. Analisis Log PostgreSQL Dengan pgBadger

  5. Bagaimana cara menggunakan (menginstal) dblink di PostgreSQL?