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
- Datenbank.yml einrichten
- Direkte Verbindung
- 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
- 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")
- 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
Polymorphe Assoziationen mit aktivem Datensatz
Nehmen Sie Kontakt mit uns auf.
Manasa Heggere
Leitender Ruby on Rails-Entwickler