Skalieren von Anwendungen mit mehreren Datenbankverbindungen

Die Geschäftsanforderungen ändern sich von Tag zu Tag und wir optimieren oder skalieren unsere Anwendungen stets auf der Grundlage der Nutzung sowie neuer hinzugefügter oder entfernter Funktionen. Insgesamt bringt die agile Entwicklung hin und wieder Herausforderungen mit sich.

Anwendungen, die auf Datenbanken basieren, können skaliert werden, indem die Datenbankschicht getrennt und unabhängig skaliert wird. Das OPS-Team kümmert sich um solche Infrastrukturänderungen basierend auf der Anwendungsbereitstellungsarchitektur.

Als Programmierer können wir unsere Anwendung so konfigurieren, dass sie mit mehreren Datenbanken funktioniert. In diesem Dokument erklären wir, wie wir dies in einer Rails-Anwendung erreichen können.

Es gibt drei verschiedene Möglichkeiten, eine zusätzliche Datenbank mit einer Anwendung zu verbinden

  1. Datenbank.yml einrichten
  2. Direkte Verbindung
  3. Schreiben im Modul

1. Datenbank.yml einrichten:

Wie wir wissen, wird „database.yml“ standardmäßig über drei Datenbankverbindungen für Entwicklung, Test und Produktion verfügen. Wir können eine weitere Datenbank mit allen drei Umgebungen verbinden, indem wir den unten gezeigten Code hinzufügen.

andere_entwicklung:

  Adapter: Adaptername (MySQL2, PostgreSQL, Oracle, Mssql usw.)

  Datenbank: Datenbankname_Entwicklung

  Benutzername: Benutzername

  Passwort: ******

other_test:

  Adapter: Adaptername (MySQL2, PostgreSQL, Oracle, Mssql usw.)

  Datenbank: Datenbankname_test

  Benutzername: Benutzername

  Passwort: ******

andere_produktion:

  Adapter: Adaptername (MySQL2, PostgreSQL, Oracle, Mssql usw.)

  Datenbank: Datenbankname_Produktion

  Benutzername: Benutzername

  Passwort: ******

Nachdem wir „database.yml“ eingerichtet haben, können wir es basierend auf den folgenden Fällen auf zwei Arten verbinden

  • Bekannte Datenbankstruktur
  • Unbekannte Datenbankstruktur

Bekannte Datenbankstruktur:

Wenn wir die Datenbankstruktur kennen, können wir für jede Datenbank Modelle erstellen und die Verbindung im Modell herstellen.

Beispiel:

Klasse OtherTable < ActiveRecord::Base

  self.abstract_class = true

  Establish_connection „other_#{Rails.env}“

Ende

Dies kann auch auf ein anderes Modell vererbt werden

Klasse Astronaut < OtherTable

  has_many :missionen

  has_many :shuttles, through: :missions

Ende

Unbekannte Datenbankstruktur:

Wenn wir die Datenbankstruktur nicht kennen, können wir nur ein Modell schreiben und die Verbindung dazu herstellen. Wir können die Rohdaten basierend auf den dynamischen Parametern erstellen.

Beispiel:

Klasse ExternalDatabaseConnection < ActiveRecord::Base

  self.abstract_class = true # Diese Klasse hat keine Tabelle

  Establish_connection(:Name der Datenbank)

Ende

  1. Direkte Verbindung:

Falls die zweite Datenbank keine große Bedeutung hat und an ein oder zwei Stellen verwendet wird, können wir sie direkt aufrufen

ActiveRecord::Base.establish_connection mit Anmeldeinformationen und wir können mit dieser Datenbank interagieren.

Beispiel:


ActiveRecord::Base.establish_connection(:adapter=>"adapter_name",:host=>"localhost",

:Nutzername =>"user_name",:password => "*********",:database => "database_name")

  1. Schreiben im Modul:

Wir können die Datenbank auch vom Modul aus verbinden und in das Modell einbinden, wie unten gezeigt.

Beispiel:

Modul SecondDatabaseMixin

  ActiveSupport::Concern erweitern

  enthalten { Establish_connection „other_#{Rails.env}“ }

Ende

Externe Datenbankanbindung:

Die zu verbindende Datenbank kann auf einem beliebigen Server vorhanden sein. Falls es sich nicht auf demselben Server befindet, können wir den Host als IP-Adresse des Servers angeben, auf dem es existiert.

Beispiel:

Adapter: Adaptername (MySQL2, PostgreSQL, Oracle, Mssql usw.)

  Host: external_db_server_ip (192.168.1.1)

  Benutzername: Benutzername

  Passwort: *******

  Datenbank: Datenbankname

Notiz: Es sind nur wenige Edelsteine verfügbar  magic_multi_connections, Db-charme usw.,.

Vor-und Nachteile:

 Vorteile

  • Wenn die Anwendung mehrere Clients hat und jeder eine andere Datenbank für seine Kunden möchte.
  • Hilft bei Backups für jeden Client.
  • Eine andere Datenbank kann in einer anderen Anwendung verwendet werden, die möglicherweise einen anderen Adapter hat.
  • Wenn Benutzer melden, dass der Zugriff langsam ist, lässt sich leicht erkennen, welche Datenbank das Problem verursacht.

Nachteile

  • Wenn die Anwendung mit weniger Benutzern einfach ist
  • Wartung des Codes für den Rest, falls sich Änderungen an der Datenbankstruktur ergeben.

Mehr lesen : 

Eine einfache Möglichkeit, die Leistung Ihrer Rails-App zu steigern

Eine Einführung in die Rails-API

Bildbearbeitung

Polymorphe Assoziationen mit aktivem Datensatz

 Nehmen Sie Kontakt mit uns auf.

Manasa Heggere

Leitender Ruby on Rails-Entwickler

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman