Affärskraven förändras dag för dag och vi fortsätter alltid att optimera eller skala våra applikationer baserat på användningen, nya funktioner tillägg eller subtraktioner. Överallt lägger den agila utvecklingen till utmaningar då och då.
Tillämpningar beroende på databaser kan skalas genom att separera databaslagret och skala det oberoende. OPS-teamet tar hand om sådana infrastrukturförändringar baserat på applikationsimplementeringsarkitekturen.
Som programmerare kan vi konfigurera vår applikation för att fungera med flera databaser. I detta dokument kommer vi att förklara hur vi kan uppnå detta i en Rails-applikation.
Det finns 3 olika sätt att koppla extra databas till en applikation
- Ställ in database.yml
- Direktanslutning
- Skriva i modul
1. Konfigurera database.yml:
Som vi vet kommer database.yml att ha 3 databasanslutning som standard för utveckling, test och produktion. Vi kan koppla en annan databas till alla tre miljöerna genom att lägga till koden som visas nedan.
annan_utveckling:
adapter: adapter_name (mysql2, postgresql, oracle, Mssql, etc.)databas: databasnamn_utveckling
användarnamn: användarnamn
Lösenord: ******
annat_test:
adapter: adapter_name (mysql2, postgresql, oracle, Mssql, etc.)
databas: databasnamn_test
användarnamn: användarnamn
Lösenord: ******
annan_produktion:
adapter: adapter_name (mysql2, postgresql, oracle, Mssql, etc.)
databas: databasnamn_produktion
användarnamn: användarnamn
Lösenord: ******
Efter att ha ställt in database.yml kan vi ansluta den på två sätt baserat på nedanstående fall
- Känd databasstruktur
- Okänd databasstruktur
Känd databasstruktur:
Om vi är medvetna om databasstrukturen kan vi skapa modeller för var och en och vi kan upprätta kopplingen i modellen.
Exempel:
class OtherTable < ActiveRecord::Base
self.abstract_class = sant
establish_connection “other_#{Rails.env}”
slutet
Detta kan även ärvas av en annan modell
klass Astronaut < ÖvrigtTable
har_många :uppdrag
har_många :skyttlar, genom: :uppdrag
slutet
Okänd databasstruktur:
När vi inte känner till databasstrukturen kan vi bara skriva en modell och vi kan koppla till den. Vi kan göra crud baserat på de dynamiska parametrarna.
Exempel:
klass ExternalDatabaseConnection < ActiveRecord::Base
self.abstract_class = sant # denna klass har ingen tabell
upprätta_anslutning(:Databas namn)
slutet
- Direktanslutning:
Om 2:a databasen inte har så stor betydelse och används på ett eller två ställen kan vi direkt kalla den
ActiveRecord::Base.establish_connection med referenser och vi kan interagera med den databasen.
Exempel:
ActiveRecord::Base.establish_connection(:adapter=>"adapternamn",:host=>"localhost",
:Användarnamn =>"användarnamn",:lösenord => "*********",:databas => "databasnamn")
- Skriva i modulen:
Vi kan även koppla databasen från modul och ingår i modell enligt nedan.
Exempel:
modul SecondDatabaseMixin
utöka ActiveSupport::Concern
ingår { establish_connection “other_#{Rails.env}” }
slutet
Extern databasanslutning:
Databas som ska anslutas kan finnas på vilken server som helst. Om det inte är på samma server kan vi ge värd som IP-adress för servern där den finns.
Exempel:
adapter: adapter_name (mysql2, postgresql, oracle, Mssql, etc.)
värd: extern_db_server_ip (192.168.1.1)
användarnamn: användarnamn
Lösenord: *******
databas: db_name
Notera: Det finns få pärlor tillgängliga för magic_multi_connections, Db-charme etc.,.
För-och nackdelar:
Fördelar
- Om applikationen har flera klienter och var och en vill ha en annan databas för sina kunder.
- Hjälper till med säkerhetskopiering för varje klient.
- En annan databas kan användas i en annan applikation som kan ha en annan adapter.
- När användare rapporterar att åtkomsten är långsam är det lätt att veta vilken DB som orsakar problemet.
Nackdelar
- Om applikationen är enkel med färre användare
- Underhåll av kod för resten om några ändringar i databasstrukturen.
Läs mer :
Ett enkelt sätt att öka prestandan för din Rails-app
En introduktion till Rails API
Polymorfa associationer med aktiva rekord
Manasa Heggere
Senior Ruby on Rails-utvecklare