Skala applikationer med flera databasanslutning

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

  1. Ställ in database.yml
  2. Direktanslutning
  3. 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

  1. 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")

  1. 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

Bildmanipulation

Polymorfa associationer med aktiva rekord

 Kontakta oss.

Manasa Heggere

Senior Ruby on Rails-utvecklare

Prenumerera för de senaste uppdateringarna

relaterade inlägg

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

sv_SESwedish