PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एक रेल सर्वर से दूसरे में जानकारी प्राप्त करना

रेल में कई डेटाबेस कनेक्शन का उपयोग करने के साथ-साथ रेल में एपीआई बनाने के बारे में बहुत सारे ट्यूटोरियल हैं। गुगलिंग के कुछ मिनट आपको बहुत सारे उदाहरण देंगे। लेकिन यहाँ कुछ नंगे पैर दृष्टिकोण हैं:

एकाधिक डेटाबेस कनेक्शन के लिए, आप सही हैं, आपको अपने database.yml में परिभाषित दोनों डेटाबेस के लिए कनेक्शन जानकारी की आवश्यकता होगी फ़ाइल। उदाहरण:

# 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

रेल इस अतिरिक्त ब्लॉक के साथ कुछ भी नहीं करेंगे, हालांकि जब तक आप इसे स्पष्ट रूप से नहीं बताते हैं। सामान्य अभ्यास एक अमूर्त ActiveRecord मॉडल को परिभाषित करना है जो दूसरा कनेक्शन स्थापित करेगा:

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

फिर, आपके रिपोर्टिंग डेटाबेस में मौजूद तालिकाओं के लिए नए मॉडल बनाएं और ReportingRecord . से इनहेरिट करें 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

एक एपीआई बनाने के लिए, इसे करने के कई अलग-अलग तरीके हैं। आपके दृष्टिकोण के बावजूद, मैं आपको अत्यधिक सुझाव दूंगा कि आप सुनिश्चित करें कि यह केवल HTTPS के माध्यम से सुलभ है। यहाँ एक बुनियादी नियंत्रक है जिसमें एक क्रिया है जो 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

इस उदाहरण के लिए आपको अपने config/secrets.yml . में एक एक्सेस टोकन परिभाषित करना होगा फ़ाइल:

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)

एक एपीआई और एक से अधिक डीबी समाधान के बीच चयन करना ज्यादातर इस बात पर निर्भर करता है कि भविष्य में आपके आवेदन का विस्तार कैसे हो सकता है। एकाधिक डीबी दृष्टिकोण आमतौर पर कार्यान्वित करना आसान होता है और इसमें उच्च प्रदर्शन होता है। एक एपीआई क्षैतिज रूप से बेहतर पैमाने पर होता है और डेटाबेस जिसमें 2 या अधिक के बजाय केवल एक एप्लिकेशन से कनेक्शन होता है, समय के साथ बनाए रखना आसान हो जाता है।

आशा है कि यह मदद करता है!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में to_number () फ़ंक्शन कैसे काम करता है

  2. एकाधिक JSONB कॉलम के अंदर मानों के आधार पर पंक्तियों को फ़िल्टर करें

  3. रेल 3.2 में दो पोस्टग्रेज डेटाबेस से कनेक्ट नहीं हो सकता।

  4. Pyspark ipython नोटबुक में डेटाबेस पोस्टग्रेज करने के लिए कनेक्शन

  5. pgsql वापसी तालिका त्रुटि:स्तंभ संदर्भ अस्पष्ट है