Migracija sa MySQL-a na PostgreSQL

From RCUB
Jump to: navigation, search
 
(Copy paste poruka sa mailing liste)
Line 1: Line 1:
Test
+
Ova poruka se najviše tiče BIS i NetIS ekipa.
 +
 
 +
U četvrtak i petak smo obavili testnu migraciju IS Univerziteta sa
 +
MySQL-a na PostgreSQL.
 +
 
 +
S obzirom da koristimo JPA (Apache OpenJPA) i da nigde nismo koristili
 +
native upite, nisu bile neophodne nikakve prepravke na aplikaciji, osim
 +
stringa za konekciju, korisničkog imena i lozinke.
 +
 
 +
Ono što je bilo potrebno prepraviti su SQL skriptovi za kreiranje i
 +
insertovanje podataka. Sve promene koje je trebalo obaviti na njima su
 +
lepo dokumentovane na:
 +
 
 +
  http://www.markslade.name/Articles.html?a=9
 +
 
 +
Pored navedenih, naišli smo na još dve stvari:
 +
 
 +
1. U MySQL-u u insert statmentu za BOOLEAN polje je dozvoljeno staviti
 +
vrednost 1, u Postgresu mora '1' (pod apostrofima)
 +
2. LONGBLOB u MySQL-u se escape-uje heksadekadno, a BYTEA u Postgresu
 +
oktalno
 +
 
 +
Pored toga, vredi pomenuti da je UTF-8 podržan i u Postgresu, kao i
 +
srpsko sortianje (zavisi od podešavanja locale-a prilikom kreiranja baze).
 +
 
 +
U petak nam se učinilo neviđen dobitak u ubrzanju na jednom složenom
 +
upitu (EAGER JOIN, 33 tabele) - od neverovatnih 12 puta. Merenje je
 +
urađeno pod vrlo neravnopravnim uslovima, tako da rezultat nije ni
 +
približan realnosti (izvinjenje Jovani Vuleti za dezinformaciju - ne
 +
treba donositi važne zaključke u petak uveče).
 +
 
 +
Danas smo ponovili merenje pod koliko-toliko ravnopravnim uslovima (isti
 +
server, isti skup podataka, isti upit, deset ponavljanja). Performanse
 +
za ovaj konkretan upit su bile +30% u korist Postgresa.
 +
 
 +
Ukoliko je potrebno još informacija, ili pomoć oko migracije, javite.
 +
 
 +
Obratite takođe pažnju, hijerarhija u Postgresu je baza, šema, tabela.
 +
JDBC string za konekciju prima kao parametar samo ime baze, a ne i šemu.
 +
Tako da je verovatno najlakše kreirati posebne baze i koristiti njihove
 +
default "public" šeme.
 +
 
 +
psql komande koje vam mogu biti od interesa:
 +
 
 +
\l - listanje baza podataka
 +
\c - izbor aktivne baze podataka
 +
\dn - listanje svih sema u izabranoj bazi
 +
\du - listanje svih korisnika
 +
 
 +
CREATE USER username PASSWORD 'l0zinka' - kreiranje korisnika
 +
GRANT ALL ON SCHEMA public TO username; - dodeljivanje privilegija
 +
 
 +
Da bi ste omogućili pristup serveru preko JDBC-ja odnosno TCP/IP-ja,
 +
potrebno je da u data/postgresql.conf navedete:
 +
 
 +
listen_addresses = '*'          # what IP address(es) to listen on;
 +
port = 5432                    # (change requires restart)
 +
 
 +
i da u data/pg_hba.conf dodate:
 +
 
 +
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
 +
host    mydb        ognjen      147.91.4.66/32        md5
 +
 
 +
JDBC connection string je oblika:
 +
 
 +
jdbc:postgresql://netis-test.rcub.bg.ac.yu/e_university_v5
 +
 
 +
Default port je 5432, drajver je: org.postgresql.Driver.

Revision as of 12:34, 9 April 2008

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox