SlideShare a Scribd company logo
1 of 15
Átszokás Oracle-ről
PostgreSQL-re
Hogyan építsük le az idegrendszerünket 30
nap alatt
Kövendi-Veress Gábor
Első akadály: Management
eszközök
• Oracle:
Quest Toad
Quest SQL Navigator
PL/SQL Developer
• PostgreSQL:
pgAdmin (korlátozott használhatóság)
Navicat for PostgreSQL
EMS SQL Manager for PostgreSQL
Process management
• Oracle:
Ha beragadt valami, akkor célszerűbb operációs
rendszer szintjén kilőni. Van, amikor SQL-ből is
leállítható, de a tapasztalatok szerint ritkán sikerül
feloldani. (Viszont ritkábban ragadnak be például
queryk, mert azok leállíthatók).
• PostgreSQL:
db-ből többnyire minden feloldható. Ha nem, akkor itt is
le kell menni operációs rendszer szintjére. Sajnos egy
elengedett query gyakran nem állítható le.
Jobok
• Oracle:
Jobok: beépített funkció, jól használható.
• PostgreSQL:
pgAgent: utólagos komponens, csak pgAdminnal
managelhető (1.9+). Működésre jó, de több problémával
szembesülhetünk:
-Gyengén managelhető
-Esetleges beragadás feloldása nehézkes.
Backup/Restore
• Oracle:
Rman: jól működik, de körülményes, elavult, és lassú.
(Ha valaki nem gyűlöli szívből kérem tegye fel a kezét...)
• PostgreSQL:
pgDump: jól működik, egyszerű, aránylag gyors. Igaz
más elven működik, és nagy adatbázisoknál (100Gb+)
biztos hogy nagyon lassú (valakinek tapasztalat?)
Szintaxis, anomáliák
Hintek hiánya
Alapvetően ízlés dolga, de sokkal lazább és könnyebben
variálható, mint az „oldschool” SQL. Left join Oracle-ben:
select
cust.customer_id,
cust.customer_name,
task.contract_id,
task.contract_desc,
serv.service_code,
serv.type_desc,
serv.fee_huf
from
customers cust,
contact task,
service serv
where
cust.id=task.parent_id(+) and
task.id=serv.parent_id(+)
Hintek hiánya
Klasszikus megoldás:
select
cust.customer_id,
cust.customer_name,
task.contract_id,
task.contract_desc,
serv.service_code,
serv.type_desc,
serv.fee_huf
from
customers cust
left outer join contract task on
cust.id=task.parent_id
left outer join service serv on
task.id=service.parent_id
Joinok, performancia.
Maradjunk egy kicsit a left join-nál.
Oracle-ben (és minden másban) alapvetően
megszokott, hogy a halmazműveletek
lassabbak, mint egy bármilyen
összekapcsolás.
PostgreSQL-ben az a tapasztalat, hogy a
left-right join performanciája annyira
rossz, hogy ugyanazt az eredményt
halmazműveletekkel sokkal gyorsabb
elvégezni.
Joinok, performancia
Példa:
select
cust.cust_id,cust.customer_name,task.contract_id,task.des
cription
from
customer cust
left outer join contract task on cust.id=task.parent_id
Helyett:
Joinok, performancia
(select
cust.cust_id,cust.customer_name,task.contract_id,task.description
from
customer cust
join task on cust.id=task.parent_id)
union
(select cust.cust_id,cust.customer_name,null, null
from
customer cust
where
not exists (select 1 from contract task where task.parent_id=cust.id))
A fenti módon megírt selectek futási ideje sokszorosan
rövidebb, mint a left join. Az ok ismeretlen, a végrehajtási
terv szerint a sima join kellene, hogy gyorsabb legyen.
Indexelés
Minden –nagy adattartalommal rendelkező- adatbázisnál
probléma lehet, hogy az indexelés ellentétes hatást vált ki
lekérdezéseknél, mint amit várnánk tőle. (100 millió+os
táblák esetén általában, db platformonként változó).
PostgreSQL esetében sokkal kisebb adattartalom mellett is
megfigyelhető, hogy nem segít az indexelés a futási
időkön. (már 300-500.000 sortól!).
DB Link
Meg kell emlékeznünk az adatbázis linkekről is, amely
sajnos a PostgreSQL-nek nem nagy fegyvere.
A kapcsolat létrehozása könnyű, de lekérdezés a távoli
adatbázisból körülményes, nincs visszajelzés, ha valami
mégsem jó. Példalekérdezés dummy1 távoli DB-be:
SELECT dblink_send_query(‘dummy1', 'SELECT * FROM foo WHERE f1<
3');
Elég körülményes...
Azért fel a fejjel!
Ne feledjük, hogy a PostgreSQL egy ingyenes adatbázis
platform és annak kiváló!
Amellett, hogy az elmondott akadályokba ütközünk, mindig
van megoldás, és ha nem Oracle-re vagyunk szokva, akkor
valószínűleg nem is éljük meg problémaként ezeket.
Alapvetően működik, még adattárházként is.
Tehát ha low budget mellett kell egy jó adatbázist
építenünk, bátran ajánlom mindenkinek, azoknak is ,akik
az Oracle aranykalitkájából repülnek ki, mint jómagam 
Kövendi-Veress Gábor
g.kovendi@mito.hu
Köszi a figyelmet!

More Related Content

Similar to Atszokás Oracle-ről PostgreSQL-re

1 java megismerese
1 java megismerese1 java megismerese
1 java megismeresebalazs85
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtestczras
 
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...Ferenc Szalai
 
Objektum-orinetált mérések a gyakorlatban
Objektum-orinetált mérések a gyakorlatbanObjektum-orinetált mérések a gyakorlatban
Objektum-orinetált mérések a gyakorlatbanAntal Orcsik
 
Nagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseNagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseJános Pásztor
 

Similar to Atszokás Oracle-ről PostgreSQL-re (8)

Budapest.rb 201010
Budapest.rb 201010Budapest.rb 201010
Budapest.rb 201010
 
1 java megismerese
1 java megismerese1 java megismerese
1 java megismerese
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtest
 
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
 
Információbiztonság: Napló
Információbiztonság: NaplóInformációbiztonság: Napló
Információbiztonság: Napló
 
Szoftver tesztelés
Szoftver tesztelésSzoftver tesztelés
Szoftver tesztelés
 
Objektum-orinetált mérések a gyakorlatban
Objektum-orinetált mérések a gyakorlatbanObjektum-orinetált mérések a gyakorlatban
Objektum-orinetált mérések a gyakorlatban
 
Nagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseNagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztése
 

Atszokás Oracle-ről PostgreSQL-re

  • 1. Átszokás Oracle-ről PostgreSQL-re Hogyan építsük le az idegrendszerünket 30 nap alatt Kövendi-Veress Gábor
  • 2. Első akadály: Management eszközök • Oracle: Quest Toad Quest SQL Navigator PL/SQL Developer • PostgreSQL: pgAdmin (korlátozott használhatóság) Navicat for PostgreSQL EMS SQL Manager for PostgreSQL
  • 3. Process management • Oracle: Ha beragadt valami, akkor célszerűbb operációs rendszer szintjén kilőni. Van, amikor SQL-ből is leállítható, de a tapasztalatok szerint ritkán sikerül feloldani. (Viszont ritkábban ragadnak be például queryk, mert azok leállíthatók). • PostgreSQL: db-ből többnyire minden feloldható. Ha nem, akkor itt is le kell menni operációs rendszer szintjére. Sajnos egy elengedett query gyakran nem állítható le.
  • 4. Jobok • Oracle: Jobok: beépített funkció, jól használható. • PostgreSQL: pgAgent: utólagos komponens, csak pgAdminnal managelhető (1.9+). Működésre jó, de több problémával szembesülhetünk: -Gyengén managelhető -Esetleges beragadás feloldása nehézkes.
  • 5. Backup/Restore • Oracle: Rman: jól működik, de körülményes, elavult, és lassú. (Ha valaki nem gyűlöli szívből kérem tegye fel a kezét...) • PostgreSQL: pgDump: jól működik, egyszerű, aránylag gyors. Igaz más elven működik, és nagy adatbázisoknál (100Gb+) biztos hogy nagyon lassú (valakinek tapasztalat?)
  • 7. Hintek hiánya Alapvetően ízlés dolga, de sokkal lazább és könnyebben variálható, mint az „oldschool” SQL. Left join Oracle-ben: select cust.customer_id, cust.customer_name, task.contract_id, task.contract_desc, serv.service_code, serv.type_desc, serv.fee_huf from customers cust, contact task, service serv where cust.id=task.parent_id(+) and task.id=serv.parent_id(+)
  • 8. Hintek hiánya Klasszikus megoldás: select cust.customer_id, cust.customer_name, task.contract_id, task.contract_desc, serv.service_code, serv.type_desc, serv.fee_huf from customers cust left outer join contract task on cust.id=task.parent_id left outer join service serv on task.id=service.parent_id
  • 9. Joinok, performancia. Maradjunk egy kicsit a left join-nál. Oracle-ben (és minden másban) alapvetően megszokott, hogy a halmazműveletek lassabbak, mint egy bármilyen összekapcsolás. PostgreSQL-ben az a tapasztalat, hogy a left-right join performanciája annyira rossz, hogy ugyanazt az eredményt halmazműveletekkel sokkal gyorsabb elvégezni.
  • 11. Joinok, performancia (select cust.cust_id,cust.customer_name,task.contract_id,task.description from customer cust join task on cust.id=task.parent_id) union (select cust.cust_id,cust.customer_name,null, null from customer cust where not exists (select 1 from contract task where task.parent_id=cust.id)) A fenti módon megírt selectek futási ideje sokszorosan rövidebb, mint a left join. Az ok ismeretlen, a végrehajtási terv szerint a sima join kellene, hogy gyorsabb legyen.
  • 12. Indexelés Minden –nagy adattartalommal rendelkező- adatbázisnál probléma lehet, hogy az indexelés ellentétes hatást vált ki lekérdezéseknél, mint amit várnánk tőle. (100 millió+os táblák esetén általában, db platformonként változó). PostgreSQL esetében sokkal kisebb adattartalom mellett is megfigyelhető, hogy nem segít az indexelés a futási időkön. (már 300-500.000 sortól!).
  • 13. DB Link Meg kell emlékeznünk az adatbázis linkekről is, amely sajnos a PostgreSQL-nek nem nagy fegyvere. A kapcsolat létrehozása könnyű, de lekérdezés a távoli adatbázisból körülményes, nincs visszajelzés, ha valami mégsem jó. Példalekérdezés dummy1 távoli DB-be: SELECT dblink_send_query(‘dummy1', 'SELECT * FROM foo WHERE f1< 3'); Elég körülményes...
  • 14. Azért fel a fejjel! Ne feledjük, hogy a PostgreSQL egy ingyenes adatbázis platform és annak kiváló! Amellett, hogy az elmondott akadályokba ütközünk, mindig van megoldás, és ha nem Oracle-re vagyunk szokva, akkor valószínűleg nem is éljük meg problémaként ezeket. Alapvetően működik, még adattárházként is. Tehát ha low budget mellett kell egy jó adatbázist építenünk, bátran ajánlom mindenkinek, azoknak is ,akik az Oracle aranykalitkájából repülnek ki, mint jómagam 