SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Replikacija u bazama podataka


      Vatroslav Mileusnić, univ.bacc.inf.

      mileusnic.vatroslav@gmail.com


                                                 DORS/CLUC
                                            Zagreb, 24.5.2012.
Što je replikacija?
Replikacija baza podataka je kreiranje i održavanje
 višestrukih kopija iste baze.
Vrste replikacija:
   sinkrona i asinkrona
   master-slave i master-master (multimaster)
   ...
Sinkrona                      Asinkrona
propagira svaku transakciju     propagira skup transakcija
puno veći overhead zbog         koristi manje mrežne
  uspostavljanja konekcije za     propusnosti i pruža bolje
  svaku transakciju               performanse
zaustavlja replikaciju ako je   visoka dostupnost
  jedan server nedostupan          replikacijske grupe
                                mogućnost sukoba podataka
                                mogućnost izgubljenih
                                 transakcija
Master-slave                Multimaster
1 glavna, ostale kopije    višegospodarska
zapisuje se na master        replikacija
propagira se ostalima      moguće zapisivati na bilo
                            koji server, pa se
čitanje se dijeli između    propagira svim ostalima
   svih servera
                           čitanje se dijeli između
konfiguriranje slave          svih servera
  servera da preuzme
  ulogu master-a ako       snažna i fleksibilna
  pravi master ispadne       mogućnost, ali i vrlo
                             kompleksna
Problemi kod multimaster replikacije
mogućnost sukoba u asinkronoj replikaciji
  sukob ažuriranja
  sukob jedinstvenosti
  sukob brisanja
moguća rješenja:
  konfiguriranje aplikacije da piše u samo jednu bazu
  omogućiti da aplikacija može pisati u drugu bazu, ako prva
    ispadne
Problemi kod multimaster replikacije
vrlo kratki intervali pražnjenja redova
  korištenje velikog broja resursa sustava
  pokretanje i zaustavljanje pražnjenja redova zahtijeva puno
    procesorskih ciklusa
rješenje:
  ne pretjerivati sa zahtjevima intervala pražnjenja
  intervali od 1 ili više minuta su sasvim u redu
Problemi kod multimaster replikacije
alat za nadgledanje replikacijskog sustava
  ako koristimo sinkronu replikaciju, svi serveri moraju biti
    aktivni i ispravni
  automatizirani alat koji periodično provjera status svih
    servera
  ako alat odredi da je neki server nedostupan, pokušat će
    ga ponovno pokrenuti, a ako ne uspije, uklonit će ga iz
    replikacije, tako da replikacija može dalje funkcionirati
Primjer replikacije
Asinkrona master-slave replikacija u MySQL-u
Asinkrona master-slave replikacija u PostgreSQL-u
Asinkrona multimaster replikacija u CouchDB-u


Prikazana rješenja nisu konfigurirana za produkcijske
  servere, ali su dovoljno dobra za učenje i shvaćanje
MySQL
Na serverima kreirati bazu podataka (replicate_me)
Na master serveru izmijeniti: /etc/mysql/my.cnf
  #skip-networking
  #bind-address         = 127.0.0.1
  log-bin = /var/log/mysql/mysql-bin.log
  binlog-do-db = replicate_me
  server-id=1
Snimiti datoteku i resetirati MySQL
MySQL
Ući u MySQL i dodijeliti prava slave korisniku:
  GRANT REPLICATION SLAVE ON *.* TO
   slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka';
  GRANT RELOAD SLAVE ON *.* TO
   slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka';
  GRANT SUPER SLAVE ON *.* TO
   slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka';
  FLUSH PRIVILEGES;
MySQL
Izvršiti naredbe za prikazivanje statusa mastera:
  USE replicate_me;
  SHOW MASTER STATUS;
     obratimo pažnju na vrijednosti stupaca File i Position
  UNLOCK TABLES;
MySQL
Na slave serveru u /etc/mysql/my.cnf dodati:
  server-id = 2
  master-host = 192.168.1.100
  master-user = slave_korisnik
  master-password = lozinka
  master-connect-retry = 60
  replicate-do-db = replicate_me
MySQL
Na slave serveru ući u MySQL i izvršiti:
  STOP SLAVE;
  CHANGE MASTER TO MASTER_HOST = '192.168.1.100'
  MASTER_USER='slave_korisnik',
   MASTER_PASSWORD='lozinka',
   MASTER_LOG_FILE='mysql-bin.000001',
   MASTER_LOG_POS=106;
  START SLAVE;
PostgreSQL
Kao postgres korisnik inicijalizirati klaster i na masteru
 i na slave serverima:
   initdb /var/lib/pgsql/data
Omogućiti komunikaciju postgres korisnika
   SSH ili drugi način
PostgreSQL
Na master u /var/lib/pgsql/data/postgresql.conf
  wal_level = hot_standby
  archive_mode = on
  archive_command =
     'scp %p postgres@192.168.1.101:/var/lib/pgsql/archive/%f'
Pokrenemo klaster
  pg_ctl -D /var/lib/pgsql/data start
PostgreSQL
Napravimo backup
  psql -c "SELECT pg_start_backup('osnovni backup')"
    template1
  tar cvf pg_base_backup.tar /var/lib/pgsql/data
  psql -c "SELECT pg_stop_backup()" template1
Dobivenu datoteku kopiramo na slave i raspakiramo
  mv /var/lib/pgsql/pg_base_backup.tar /
  tar xvf pg_base_backup.tar
Na slave-u izbrišemo /data/postmaster.pid
PostgreSQL
Master, /var/lib/pgsql/data/postgresql.conf
  listen_addresses = '*'
  max_wal_senders = 5
  wal_keep_segments = 32
Master, /var/lib/pgsql/data/pg_hba.conf
  host replication postgres 192.168.1.101/24 trust
PostgreSQL
Na slave serveru /var/lib/pgsql/data/postgresql.conf
  hot_standby = on
Dodati recovery.conf
  standby_mode = 'on'
  primary_conninfo = 'host=192.168.1.100 port=5432
     user=postgres'
  može (trebao bi) imati i dodatne postavke
Pokrenuti servere
  pg_ctl -D /var/lib/pgsql/data start
CouchDB
Pristupimo konzoli za administraciju Futon
  <IP adresa računala>:5984/_utils
U Configuration namjestimo da sluša sve IP adrese
  bind_address u 0.0.0.0
Kreiramo baze podataka
U Replicator namjestiti
  <IP drugog računala>/baza_na_drugom_racunalu
  uključimo Continuous
  gumb Replicate
CouchDB
Kako bi napravili multimaster replikaciju, ponoviti
 podešavanje pomoću alata Replicator na drugom
 računalu
  <IP drugog računala>/baza_na_prvom_racunalu
  uključimo Continuous
  gumb Replicate
Zaključak
Dojmovi
  uobičajena MySQL vs PostgreSQL diskusija
  realno: nećemo birati koji sustav koristimo samo temeljem
    toga čija je replikacija bolja
  za male projekte i kućnu upotrebu, CouchDB


hr.linkedin.com/in/vatroslavmileusnic
Pitanja?

Weitere ähnliche Inhalte

Was ist angesagt?

Kelompok 2 multiplexing dan demultiplexing
Kelompok 2 multiplexing dan demultiplexingKelompok 2 multiplexing dan demultiplexing
Kelompok 2 multiplexing dan demultiplexingFahmi Dhimas
 
Arus dan tegangan ac
Arus dan tegangan acArus dan tegangan ac
Arus dan tegangan acAhmad Ilhami
 
Modul-Pelatihan-Microsoft-Word-2013.pdf
Modul-Pelatihan-Microsoft-Word-2013.pdfModul-Pelatihan-Microsoft-Word-2013.pdf
Modul-Pelatihan-Microsoft-Word-2013.pdfgungunar1
 
Analisa ac pada transistor
Analisa ac pada transistorAnalisa ac pada transistor
Analisa ac pada transistorAhmad_Bagus
 
Modul 10-teorema-norton
Modul 10-teorema-nortonModul 10-teorema-norton
Modul 10-teorema-nortonbernadsihotang
 
sharing belajar OP Am elektronika dasar
sharing belajar OP Am elektronika dasarsharing belajar OP Am elektronika dasar
sharing belajar OP Am elektronika dasarRinanda S
 
Modulasi frekuensi dan modulasi phase (fm dan pm)
Modulasi frekuensi dan modulasi phase (fm dan pm)Modulasi frekuensi dan modulasi phase (fm dan pm)
Modulasi frekuensi dan modulasi phase (fm dan pm)Ishardi Nassogi
 
Kuliah Komunikasi Data ke-12 Propagasi
Kuliah Komunikasi Data ke-12 PropagasiKuliah Komunikasi Data ke-12 Propagasi
Kuliah Komunikasi Data ke-12 PropagasiYeffry Handoko
 
Pertemuan 3a Rangkaian Aritmatik-Half n Full Adder
Pertemuan 3a   Rangkaian Aritmatik-Half n Full AdderPertemuan 3a   Rangkaian Aritmatik-Half n Full Adder
Pertemuan 3a Rangkaian Aritmatik-Half n Full Adderahmad haidaroh
 
Sejarah Perkembangan Generasi Komputer
Sejarah Perkembangan Generasi KomputerSejarah Perkembangan Generasi Komputer
Sejarah Perkembangan Generasi KomputerRini de Lopez
 
Rangkaian logika digital
Rangkaian logika digitalRangkaian logika digital
Rangkaian logika digitalRez Inc
 
Jenis dan karakteristik media
Jenis dan karakteristik mediaJenis dan karakteristik media
Jenis dan karakteristik mediaRiska Ika
 
lkpd informatika.pdf
lkpd informatika.pdflkpd informatika.pdf
lkpd informatika.pdfNurulIlyas1
 

Was ist angesagt? (20)

Sistem multimedia-teknik-informatika
Sistem multimedia-teknik-informatikaSistem multimedia-teknik-informatika
Sistem multimedia-teknik-informatika
 
Kelompok 2 multiplexing dan demultiplexing
Kelompok 2 multiplexing dan demultiplexingKelompok 2 multiplexing dan demultiplexing
Kelompok 2 multiplexing dan demultiplexing
 
Arus dan tegangan ac
Arus dan tegangan acArus dan tegangan ac
Arus dan tegangan ac
 
listrik statis SMA FISIKA SEKOLAH
listrik statis SMA FISIKA SEKOLAHlistrik statis SMA FISIKA SEKOLAH
listrik statis SMA FISIKA SEKOLAH
 
Laporan rangkaian dasar op amp
Laporan rangkaian dasar op ampLaporan rangkaian dasar op amp
Laporan rangkaian dasar op amp
 
Modul praktikum pengolahan citra digital
Modul praktikum pengolahan citra digitalModul praktikum pengolahan citra digital
Modul praktikum pengolahan citra digital
 
Paralel prosesor
Paralel prosesorParalel prosesor
Paralel prosesor
 
Modul-Pelatihan-Microsoft-Word-2013.pdf
Modul-Pelatihan-Microsoft-Word-2013.pdfModul-Pelatihan-Microsoft-Word-2013.pdf
Modul-Pelatihan-Microsoft-Word-2013.pdf
 
Analisa ac pada transistor
Analisa ac pada transistorAnalisa ac pada transistor
Analisa ac pada transistor
 
Modul 10-teorema-norton
Modul 10-teorema-nortonModul 10-teorema-norton
Modul 10-teorema-norton
 
Power point (internet) novi
Power point (internet) noviPower point (internet) novi
Power point (internet) novi
 
sharing belajar OP Am elektronika dasar
sharing belajar OP Am elektronika dasarsharing belajar OP Am elektronika dasar
sharing belajar OP Am elektronika dasar
 
Modulasi frekuensi dan modulasi phase (fm dan pm)
Modulasi frekuensi dan modulasi phase (fm dan pm)Modulasi frekuensi dan modulasi phase (fm dan pm)
Modulasi frekuensi dan modulasi phase (fm dan pm)
 
Cara kerja cd player
Cara kerja cd playerCara kerja cd player
Cara kerja cd player
 
Kuliah Komunikasi Data ke-12 Propagasi
Kuliah Komunikasi Data ke-12 PropagasiKuliah Komunikasi Data ke-12 Propagasi
Kuliah Komunikasi Data ke-12 Propagasi
 
Pertemuan 3a Rangkaian Aritmatik-Half n Full Adder
Pertemuan 3a   Rangkaian Aritmatik-Half n Full AdderPertemuan 3a   Rangkaian Aritmatik-Half n Full Adder
Pertemuan 3a Rangkaian Aritmatik-Half n Full Adder
 
Sejarah Perkembangan Generasi Komputer
Sejarah Perkembangan Generasi KomputerSejarah Perkembangan Generasi Komputer
Sejarah Perkembangan Generasi Komputer
 
Rangkaian logika digital
Rangkaian logika digitalRangkaian logika digital
Rangkaian logika digital
 
Jenis dan karakteristik media
Jenis dan karakteristik mediaJenis dan karakteristik media
Jenis dan karakteristik media
 
lkpd informatika.pdf
lkpd informatika.pdflkpd informatika.pdf
lkpd informatika.pdf
 

Andere mochten auch

Diapositivas canaima
Diapositivas  canaimaDiapositivas  canaima
Diapositivas canaimaEmilde Medina
 
Steps to social media strategy
Steps to social media strategySteps to social media strategy
Steps to social media strategysmercer2
 
2013 Presidents' Forum of St. Louis - Kraftig Presentation
2013 Presidents' Forum of St. Louis - Kraftig Presentation2013 Presidents' Forum of St. Louis - Kraftig Presentation
2013 Presidents' Forum of St. Louis - Kraftig PresentationRobert Rodenbaugh
 
The House that Service Built
The House that Service BuiltThe House that Service Built
The House that Service BuiltRobert Rodenbaugh
 
WS `Publisher Deck
WS `Publisher DeckWS `Publisher Deck
WS `Publisher DeckDavid Facter
 
Arpita mehta mphil(0930006)
Arpita mehta mphil(0930006)Arpita mehta mphil(0930006)
Arpita mehta mphil(0930006)Ravi Prakash
 
WebSpectator - Time as a measurement
WebSpectator - Time as a measurementWebSpectator - Time as a measurement
WebSpectator - Time as a measurementDavid Facter
 
So Easy Pay Presentation
So Easy Pay PresentationSo Easy Pay Presentation
So Easy Pay Presentationssaib
 
Web spectator time as a measurement
Web spectator   time as a measurementWeb spectator   time as a measurement
Web spectator time as a measurementDavid Facter
 
Jmj gonzalez vega brandon manuel (1)
Jmj gonzalez vega brandon manuel (1)Jmj gonzalez vega brandon manuel (1)
Jmj gonzalez vega brandon manuel (1)BrandonGonzalezVega
 
Milieuprestatie Bouwbesluit 2012
Milieuprestatie Bouwbesluit 2012Milieuprestatie Bouwbesluit 2012
Milieuprestatie Bouwbesluit 2012gijrath
 

Andere mochten auch (20)

Positive influence of a strong reputatino on a company´s Economic and financi...
Positive influence of a strong reputatino on a company´s Economic and financi...Positive influence of a strong reputatino on a company´s Economic and financi...
Positive influence of a strong reputatino on a company´s Economic and financi...
 
Diapositivas canaima
Diapositivas  canaimaDiapositivas  canaima
Diapositivas canaima
 
I67 top managers’ engagement
I67 top managers’ engagementI67 top managers’ engagement
I67 top managers’ engagement
 
Mars gujarati
Mars gujaratiMars gujarati
Mars gujarati
 
Becoming a citizen brands
Becoming a citizen brandsBecoming a citizen brands
Becoming a citizen brands
 
Steps to social media strategy
Steps to social media strategySteps to social media strategy
Steps to social media strategy
 
2013 Presidents' Forum of St. Louis - Kraftig Presentation
2013 Presidents' Forum of St. Louis - Kraftig Presentation2013 Presidents' Forum of St. Louis - Kraftig Presentation
2013 Presidents' Forum of St. Louis - Kraftig Presentation
 
The House that Service Built
The House that Service BuiltThe House that Service Built
The House that Service Built
 
WS `Publisher Deck
WS `Publisher DeckWS `Publisher Deck
WS `Publisher Deck
 
Arpita mehta mphil(0930006)
Arpita mehta mphil(0930006)Arpita mehta mphil(0930006)
Arpita mehta mphil(0930006)
 
WebSpectator - Time as a measurement
WebSpectator - Time as a measurementWebSpectator - Time as a measurement
WebSpectator - Time as a measurement
 
Planing my blog
Planing my blogPlaning my blog
Planing my blog
 
So Easy Pay Presentation
So Easy Pay PresentationSo Easy Pay Presentation
So Easy Pay Presentation
 
Web spectator time as a measurement
Web spectator   time as a measurementWeb spectator   time as a measurement
Web spectator time as a measurement
 
Jmj gonzalez vega brandon manuel (1)
Jmj gonzalez vega brandon manuel (1)Jmj gonzalez vega brandon manuel (1)
Jmj gonzalez vega brandon manuel (1)
 
Aligning Corporate Strategy with Risks in order to avoid a Crisis
Aligning Corporate Strategy with Risks in order to avoid a CrisisAligning Corporate Strategy with Risks in order to avoid a Crisis
Aligning Corporate Strategy with Risks in order to avoid a Crisis
 
Reasons and Emotions that Guide Stakeholder´s Decisions and Have an Impact on...
Reasons and Emotions that Guide Stakeholder´s Decisions and Have an Impact on...Reasons and Emotions that Guide Stakeholder´s Decisions and Have an Impact on...
Reasons and Emotions that Guide Stakeholder´s Decisions and Have an Impact on...
 
From Corporate Brand to Company Brand: Authenticity, Transparency and Origin
From Corporate Brand to Company Brand: Authenticity, Transparency and OriginFrom Corporate Brand to Company Brand: Authenticity, Transparency and Origin
From Corporate Brand to Company Brand: Authenticity, Transparency and Origin
 
Tim barton presentation
Tim barton presentationTim barton presentation
Tim barton presentation
 
Milieuprestatie Bouwbesluit 2012
Milieuprestatie Bouwbesluit 2012Milieuprestatie Bouwbesluit 2012
Milieuprestatie Bouwbesluit 2012
 

Replikacija u bazama podataka

  • 1. Replikacija u bazama podataka Vatroslav Mileusnić, univ.bacc.inf. mileusnic.vatroslav@gmail.com DORS/CLUC Zagreb, 24.5.2012.
  • 2. Što je replikacija? Replikacija baza podataka je kreiranje i održavanje višestrukih kopija iste baze. Vrste replikacija: sinkrona i asinkrona master-slave i master-master (multimaster) ...
  • 3. Sinkrona Asinkrona propagira svaku transakciju propagira skup transakcija puno veći overhead zbog koristi manje mrežne uspostavljanja konekcije za propusnosti i pruža bolje svaku transakciju performanse zaustavlja replikaciju ako je visoka dostupnost jedan server nedostupan replikacijske grupe mogućnost sukoba podataka mogućnost izgubljenih transakcija
  • 4. Master-slave Multimaster 1 glavna, ostale kopije višegospodarska zapisuje se na master replikacija propagira se ostalima moguće zapisivati na bilo koji server, pa se čitanje se dijeli između propagira svim ostalima svih servera čitanje se dijeli između konfiguriranje slave svih servera servera da preuzme ulogu master-a ako snažna i fleksibilna pravi master ispadne mogućnost, ali i vrlo kompleksna
  • 5. Problemi kod multimaster replikacije mogućnost sukoba u asinkronoj replikaciji sukob ažuriranja sukob jedinstvenosti sukob brisanja moguća rješenja: konfiguriranje aplikacije da piše u samo jednu bazu omogućiti da aplikacija može pisati u drugu bazu, ako prva ispadne
  • 6. Problemi kod multimaster replikacije vrlo kratki intervali pražnjenja redova korištenje velikog broja resursa sustava pokretanje i zaustavljanje pražnjenja redova zahtijeva puno procesorskih ciklusa rješenje: ne pretjerivati sa zahtjevima intervala pražnjenja intervali od 1 ili više minuta su sasvim u redu
  • 7. Problemi kod multimaster replikacije alat za nadgledanje replikacijskog sustava ako koristimo sinkronu replikaciju, svi serveri moraju biti aktivni i ispravni automatizirani alat koji periodično provjera status svih servera ako alat odredi da je neki server nedostupan, pokušat će ga ponovno pokrenuti, a ako ne uspije, uklonit će ga iz replikacije, tako da replikacija može dalje funkcionirati
  • 8. Primjer replikacije Asinkrona master-slave replikacija u MySQL-u Asinkrona master-slave replikacija u PostgreSQL-u Asinkrona multimaster replikacija u CouchDB-u Prikazana rješenja nisu konfigurirana za produkcijske servere, ali su dovoljno dobra za učenje i shvaćanje
  • 9. MySQL Na serverima kreirati bazu podataka (replicate_me) Na master serveru izmijeniti: /etc/mysql/my.cnf #skip-networking #bind-address = 127.0.0.1 log-bin = /var/log/mysql/mysql-bin.log binlog-do-db = replicate_me server-id=1 Snimiti datoteku i resetirati MySQL
  • 10. MySQL Ući u MySQL i dodijeliti prava slave korisniku: GRANT REPLICATION SLAVE ON *.* TO slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka'; GRANT RELOAD SLAVE ON *.* TO slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka'; GRANT SUPER SLAVE ON *.* TO slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka'; FLUSH PRIVILEGES;
  • 11. MySQL Izvršiti naredbe za prikazivanje statusa mastera: USE replicate_me; SHOW MASTER STATUS; obratimo pažnju na vrijednosti stupaca File i Position UNLOCK TABLES;
  • 12. MySQL Na slave serveru u /etc/mysql/my.cnf dodati: server-id = 2 master-host = 192.168.1.100 master-user = slave_korisnik master-password = lozinka master-connect-retry = 60 replicate-do-db = replicate_me
  • 13. MySQL Na slave serveru ući u MySQL i izvršiti: STOP SLAVE; CHANGE MASTER TO MASTER_HOST = '192.168.1.100' MASTER_USER='slave_korisnik', MASTER_PASSWORD='lozinka', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=106; START SLAVE;
  • 14. PostgreSQL Kao postgres korisnik inicijalizirati klaster i na masteru i na slave serverima: initdb /var/lib/pgsql/data Omogućiti komunikaciju postgres korisnika SSH ili drugi način
  • 15. PostgreSQL Na master u /var/lib/pgsql/data/postgresql.conf wal_level = hot_standby archive_mode = on archive_command = 'scp %p postgres@192.168.1.101:/var/lib/pgsql/archive/%f' Pokrenemo klaster pg_ctl -D /var/lib/pgsql/data start
  • 16. PostgreSQL Napravimo backup psql -c "SELECT pg_start_backup('osnovni backup')" template1 tar cvf pg_base_backup.tar /var/lib/pgsql/data psql -c "SELECT pg_stop_backup()" template1 Dobivenu datoteku kopiramo na slave i raspakiramo mv /var/lib/pgsql/pg_base_backup.tar / tar xvf pg_base_backup.tar Na slave-u izbrišemo /data/postmaster.pid
  • 17. PostgreSQL Master, /var/lib/pgsql/data/postgresql.conf listen_addresses = '*' max_wal_senders = 5 wal_keep_segments = 32 Master, /var/lib/pgsql/data/pg_hba.conf host replication postgres 192.168.1.101/24 trust
  • 18. PostgreSQL Na slave serveru /var/lib/pgsql/data/postgresql.conf hot_standby = on Dodati recovery.conf standby_mode = 'on' primary_conninfo = 'host=192.168.1.100 port=5432 user=postgres' može (trebao bi) imati i dodatne postavke Pokrenuti servere pg_ctl -D /var/lib/pgsql/data start
  • 19. CouchDB Pristupimo konzoli za administraciju Futon <IP adresa računala>:5984/_utils U Configuration namjestimo da sluša sve IP adrese bind_address u 0.0.0.0 Kreiramo baze podataka U Replicator namjestiti <IP drugog računala>/baza_na_drugom_racunalu uključimo Continuous gumb Replicate
  • 20. CouchDB Kako bi napravili multimaster replikaciju, ponoviti podešavanje pomoću alata Replicator na drugom računalu <IP drugog računala>/baza_na_prvom_racunalu uključimo Continuous gumb Replicate
  • 21. Zaključak Dojmovi uobičajena MySQL vs PostgreSQL diskusija realno: nećemo birati koji sustav koristimo samo temeljem toga čija je replikacija bolja za male projekte i kućnu upotrebu, CouchDB hr.linkedin.com/in/vatroslavmileusnic