View source
From RCUB
for
Migracija sa MySQL-a na PostgreSQL
Jump to:
navigation
,
search
Timovi koji imaju nameru da MySQL zamene sa PostgreSQL-om, ovaj dokument mogu da koriste kao polaznu osnovu. PostgreSQL se čita kao "Postgres Kju El" ili samo "Postgres". ==JDBC parametri konekcije za PostgreSQL== JDBC connection string je oblika: jdbc:postgresql://server.rcub.bg.ac.yu/baza Default port je 5432, a drajver je: org.postgresql.Driver ==Promene na aplikaciji== U slučaju da se koristi JPA za apstrakciju pristupa bazi, i da se koriste samo JPQL upiti, nikakve promene na aplikaciji nisu potrebne. Jedino je potrebno promeniti parametre konekcije. U slucaju da se koriste Native upiti pod JPA-om, ili da se koristi JDBC, potrebno je nekoliko zahvata na MySQL upitima (npr. skriptovi za kreiranje i insertovanje podataka) da bi bili kompatibilni sa Postgresom. Sve promene koje treba obaviti na njima su lepo dokumentovane na: http://www.markslade.name/Articles.html?a=9 Pored navedenih, naišli smo na još dve stvari: # U MySQL-u u insert statmentu za BOOLEAN polje je dozvoljeno staviti vrednost 1, u Postgresu mora '1' (pod apostrofima) # 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). ==Performanse== Vrlo površno merenje pod koliko-toliko ravnopravnim uslovima (isti server, isti skup podataka, isti upit, deset ponavljanja) je pokazalo +30% u brzini u korist Postgresa. ==Hijerarhija== 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== '''psql''' je linux konzolni SQL klijent. Pokretanje iz klijenta kao '''root''' će vam verovatno prourokovati poruku o grešci psql: FATAL: database "root" does not exist Jer '''psql''' pokusava da otvori bazu koja ima isti naziv kao i korisnik, a koja ne postoji. Zbog toga je potrebno prvo se prebaciti na korisnika postgres sa su - postgres i zatim pozvati '''psql'''. Komande koje vam mogu biti od interesa: \l - listanje baza podataka \c - izbor aktivne baze podataka \dn - listanje svih sema u izabranoj bazi \dt - listanje svih tabela \du - listanje svih korisnika Kreiranje baze: CREATE DATABASE "TestBaza" WITH ENCODING='UTF8'; Kreiranje korisnika: CREATE USER username PASSWORD 'l0zinka'; Izbor baze: \c TestBaza Dodeljivanje privilegija nad default "public" šemom. GRANT ALL ON SCHEMA public TO username; ==Konfigurisanje servera== Da biste omogućili pristup serveru preko JDBC-ja odnosno TCP/IP-ja, potrebno je da u '''data/postgresql.conf''' (najčešće u /var/lib/psql) 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.123/32 md5 postle promena na kofiguracionim fajlovima potrebno je da restartujete server ili da kao korisnik '''postgres''' pozovete reload konfiguracije: pg_ctl reload
Return to
Migracija sa MySQL-a na PostgreSQL
.
Personal tools
Log in
Namespaces
Page
Discussion
Variants
Views
Read
View source
View history
Actions
Search
Navigation
Main page
Community portal
Current events
Recent changes
Random page
Help
Toolbox
What links here
Related changes
Special pages