Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Nyílt forráskódú adatbázis-kezelők
Szabad szoftver keretrendszer
Készítette a Közigazgatási és Igazságügyi minisztériumE-közigazgatási Szabad Szoftver Kompetencia Köz-
pontja, Budapest, 2013
Kódszám: EKOP–1.2.15 – Ez a Mű a Creative Commons Nevezdmeg! Így add tovább! 3.0 Unported License feltételeinek megfele-
lően szabadon felhasználható.A dokumentum legfrissebb változata letölthető a honlapunkról:
http://szabadszoftver.kormany.hu/szabad-szoftver-keretrendszer/
EKOP-1.2.15-2011-2011-0001„E-KÖZIGAZGATÁSI SZABAD SZOFTVER
KOMPETENCIA KÖZPONT LÉTREHOZÁSA”CÍMŰ KIEMELT PROJEKT
TartalomjegyzékTörténeti áttekintés..........................................................................3MySQL............................................................................................7
Telepítése és beállítása.............................................................11A MySQL mentése...................................................................17Referenciák..............................................................................19
MariaDB........................................................................................20Referenciák..............................................................................22
PostgreSQL....................................................................................23Referenciák..............................................................................26
SQLite............................................................................................27Referenciák..............................................................................29
Hogyan válasszunk?......................................................................30
Az általános definíció szerint az adatbázis-kezelőszoftverek olyan speciális alkalmazások, amelyek ada-tok tárolására és elemzésére használhatók. Az adatbá-zis-kezelő rendszerek gyakran hálózatos környezetbentöbbfelhasználós, párhuzamos hozzáférést biztosítanakadatbázisokhoz. Angol megnevezésük: DBMS – Data-base Management System.
2
Történeti áttekintés
Történeti áttekintés
Már a 20. század legelején mutatkozott igény a né-pesség nyilvántartási adatok kezelése miatt adatbázisbaszervezésre. Valójában azonban csak a 1960-as évekbenalakult ki az a struktúra, amelynek nyomait a ma műkö-dő adatbázis-kezelők működési modelljeiben is megta-láljuk. Elsősorban bérszámfejtésre és adatsorok, statisz-tikák elkészítésére használták a lyukkártyás technológi-át. A ma használt legnépszerűbb adatbázis-modell mű-ködési logikáját 1970-ben Edgar F. Codd1 publikálta azIBM munkatársaként. Az első modern adatbázis-kezelőtis az IBM hozta létre System-R néven (ma DB/2 névenismert). Az első nagyszabású adatbázis-kezelő mégis azOracle2 nevéhez fűződik, amelyet ma is széles körbenhasználnak. Fejlesztésének motivációi között többekközött a CIA igényei is szerepeltek. A mai SQL alapjaitazonban a System-R fejlesztői fektették le, amelyet SE-QUEL nyelvnek neveztek el. Ma már sok kereskedelmitermék és számos kiváló nyílt forráskódú rendszer is a
1 http://hu.wikipedia.org/wiki/Edgar_F._Codd2 http://hu.wikipedia.org/wiki/Oracle_Corporation
3
Nyílt forráskódú adatbázis-kezelők
felhasználók rendelkezésére áll. A legelterjedtebb sza-bad szoftverek:
– MariaDB3
– MySQL4
– PostgreSQL5
– SQLite6
Rendelkezésre áll még több olyan adatbázis-kezelőis, amely akár bizonyos felhasználószámig, vagy bizo-nyos nem kereskedelmi esetekben ingyenesen használ-hatóak, de mivel ezek nem szabad szoftverek, és vagyfunkció-, vagy felhasználószám-korlátozással rendel-keznek, nem szerepelnek ebben a felsorolásban. Egynapjainkban üzemeltetett átlagos LAMP (mely a Linux,Apache, MariaDB és PHP stack közös rövidítése) szer-veren biztosan telepítve van egy adatbázis-szerver, hi-szen nem csak a modern CMS, CRM és egyéb webestechnológiák követelik meg a DB meglétét, hanemnagy felhasználó szám esetén az FTP, MAIL és egyéb
3 https://mariadb.org/4 http://www.mysql.com/about/legal/licensing/index.html5 http://www.postgresql.org/6 http://www.sqlite.org/copyright.html
4
Történeti áttekintés
felhasználói profilokat, jelszavakat is célszerű adatbá-zisban tartani.
Speciális igények, például nagy számú hálózati hoz-záférés ideiglenes adatainak tárolása, vagy rendkívülnagy mennyiségű adat (big data) gyors, párhuzamosfeldolgozása speciális adattároló- és kezelő alkalmazá-sokat hozott létre, amelyek a hagyományos adatbá-zis-kezelők kiegészítésére, illetve akár kiváltására ishasználhatók. Az első esetben a meglévő adatbá-zis-kezelők gyorsítótárazó képességeinek teljesítményétis meghaladva tömörebb, csak memóriában történő tá-rolást, és ezzel több felhasználó egyidejű kiszolgálásátteszik lehetővé olyan gyors kulcs-érték kezelők, mint anépszerű nyílt forráskódú memcached vagy Redis. Amásodik speciális esetben a noSQL adatbázis-kezelőkés a kapcsolódó map-reduce feldolgozó-rendszerek,mint például a szintén nyílt forráskódú MongoDB és ahozzá kapcsolható Hadoop jöhetnek számításba.
5
Nyílt forráskódú adatbázis-kezelők
MySQL
A MySQL7 jelenleg az egyik leginkább ismert és el-terjedt adatbázis-motor, amelynek közösségi változata(MySQL Community Edition) szabad szoftver. A jogtu-lajdonos Oracle nagyvállalati részre elérhetővé teszizárt forráskóddal, klasszikus licenc vásárlási konstruk-cióban a közösségi változat kibővített funkcionalitásúvariánsát. Feltehetőleg ez a fő oka, hogy a közösség anyílt licenc alatt hozzáférhető változat alapjain elkezdtefejleszteni a MariaDB nevű adatbázis kezelőt, mely ajelenlegi trendek szerint tempósan elkezdte átvenni aMySQL helyét a szabad operációs rendszer terjeszté-sekben és számos felhasználónál. De erről majd a kö-vetkező fejezetben.
A MySQL fejlesztését a svéd MySQL AB kezdtemeg kettős licencelés alatt. Lehetősége volt a felhaszná-lóknak GPL szabad szoftver licenc8 alatti üzleti felhasz-nálásra vagy zárt (tulajdonosi) licenccel egyéb üzletimodell megvalósítására is. A MySQL-t 2008-ban felvá-
7 http://www.mysql.com/about/legal/licensing/index.html8 GPL v2, szerkesztési (linking) kivétellel, amely még nagyobb
teret enged az üzleti célú felhasználásnak.
6
MySQL
sárolta a Sun, amelyet két évvel később az Oracle vásá-rolt fel. Így mára a MySQL fejlesztését az Oracle végzi,de az egyelőre nyílt forráskódú maradt. Ez egyrésztkedvező, mivel az Oracle egyike az adatbázis-fejlesztőcégek legnagyobbikának, másrészt pedig sok emberbenkételyeket ébreszt, hogy az Oracle-nek szüksége van-eegy nyílt forráskódú, konkurens termékre. Mivel azon-ban a MySQL továbbra is GPL alatt elérhető, így a le-hetőség adott egy esetleges kódbezárás utáni a rendszerfejlesztésének szabad folytatására. Jelenleg a legtöbbplatform alatt futtatható (Linux és Unix klónok, illetveWindows és Mac OS X alatt is). Üzemeltetési szem-pontból a kezelése egyszerűen elsajátítható és az elér-hető dokumentációk tekintetében is igen versenyképes.Főbb verzióit tekintve hatalmas fejlődésen ment keresz-tül az elmúlt években és egyre inkább kezdenek nemkis lekérdező motorként, hanem igen komoly feladatokellátására alkalmas DB-ként gondolni rá. Adminisztrá-lását számos eszköz könnyíti, többek között van általá-nos célra használható parancssoros felülete, ahol gya-korlatilag majdnem mindent könnyen el lehet érni (azadminisztrátorok inkább ezt szeretik és használják, mi-vel SSH-n keresztül távolról is könnyen és biztonságo-
7
Nyílt forráskódú adatbázis-kezelők
san kezelhető). A szabad szoftver MySQL GUI Tools afunkciók grafikus elérését teszi lehetővé, de ennek fej-lesztését az Oracle leállította és a részben szabadMySQL Workbench használatát ajánlják helyette,mindkét eszköz megtalálható a fontosabb Linux terjesz-tésekben, de elérhetők a MySQL honlapjáról is. Sajnosa legtöbb esetben a phpMyAdmin9 felületen keresztüladminisztrálják, amely PHP-alapú, nyílt forrású eszköz.Jellemzően a rendszer-üzemeltetők (az adatbázis üze-meltetőkkel szemben) nem kedvelik, mivel a biztonságihiányosságai és azok befoltozásának gyakorisága ésgyorsasága jellemzően problémás, folyamatosan veszé-lyezteti az őt futtató szerver és az adatbázis biztonságátegyaránt. Ennek ellenére, megfelelő környezetben hasz-nálva (SSL mögött, Htaccess és egyéb szabályok a hoz-záférés korlátozására, nem kitalálható URL stb.) ajánl-ható és remek eszköz a MySQL DB-adminok számára.Az adatbázisok mentése viszonylag egyszerű és a gyárisegédprogramokkal jól megoldható, a legtöbb mentőprogram képes kezelni natívan, illetve bizonyos esetbenlehetőség van MySQL Hotcopy-t csinálni az éppen futóadatbázisról. Az alaptelepítés minden esetben egy álta-
9 http://www.phpmyadmin.net/
8
MySQL
lános my.conf állománnyal érkezik, amely finomhango-lása feltétlen szükséges az adott rendszer várható terhe-lése és a hardverparaméterek függvényében. A MySQLszámos olyan képességgel rendelkezik, ami kiemeli amezőnyből.10 A MySQL-hez nagyvállalatoknak szántmegoldások is elérhetők, amely segítségével magasrendelkezésre állású rendszereket lehet építeni. Ilyenmegoldás például a MySQL Cluster. Működése pontolyan, mint egy teljes klaszteré, azonban csak az adat-bázis-motor van elosztva. Kisvállalati környezetben, il-letőleg ahol nincs szükség a teljes funkcionalitás (pl.LAMP) klaszterbe szervezésére, jó terheléselosztómódszer lehet, illetve az adatok redundáns tárolását le-het vele megoldani. A funkció beállítása viszonylagegyszerű, és igazi prémium funkcionalitást biztosít.Nagyvállalati környezetben a MySQL mellett szóló érv,hogy mivel hazánkban is igen elterjedt, sok informati-kai vállalkozás képes támogatást nyújtani hozzá.
10 http://hu.wikipedia.org/wiki/MySQL
9
Nyílt forráskódú adatbázis-kezelők
Telepítése és beállítása
Mivel a MySQL minden ismertebb platformra for-dítható és természetesen a legnépszerűbb terjesztésekcsomagolt részét képezi, ezért igen egyszerű:apt-get install mysql-server mysql-client
a függőségek kezelése miatt, az apt-get innentől felrak-ja a szükséges csomagokat. Természetesen, ha PHP alólis el akarjuk majd érni, akkor szükséges a php5-mysqlcsomag telepítése is, de erről bővebben olvashatunk aWEB fejezetben.
A telepítő tehát letölti a függőségeket és beállítja egyalap működésre a MySQL-t, kérni fogja az installációvégén a MySQL root jelszavát. Ezt érdemes legalább10 karakteres véletlen jelszónak beállítani, amelyetmajd a MySQL backup során is fel kell hogy használ-junk, így kénytelenek leszünk a MySQL gépen tárolni,ezért olyan állományba és könyvtárba rakjuk, ahol csaka root felhasználó olvashatja (igaz nem ez lesz azAchilles-sarka a MySQL rendszerünknek :)
Ezt követően a MySQL készen áll a működésre, azazcsak teljesen alap funkcionalitással. Ha szeretnénk alapesetben egy kicsit biztonságosabbá tenni, akkor erre
10
MySQL
egy remek lehetőséget kínál a mysql_secure_installati-on script. Szintén rootként futtatva, interaktívan tudunkpár igen hasznos opciót tiltani vagy engedni: tilthatjukaz anonymous felhasználó hozzáférését, a távoli roothozzáférést, törölhetjük vagy korlátozhatjuk a tesztadatbázishoz való hozzáférést. Ezek azért fontos dol-gok, mivel többnyire egy LAMP környezet gyengepontja (a PHP-n kívül) általánosságban az SQL szokottlenni.
A további konfigurálást a /etc/mysql/my.cnf állo-mányban tudjuk megtenni. A fontosabb opciók:[mysqld]
user = mysql pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockport = 3306basedir = /usrdatadir = /var/lib/mysqltmpdir = /tmplc_messages_dir = /usr/share/mysqlbind-address = 127.0.0.1
A fenti alap beállítások megváltoztatására csak indo-kolt esetben van szükség. Ilyen lehet, ha a nem a stan-
11
Nyílt forráskódú adatbázis-kezelők
dard 3306-os porton akarjuk hogy válaszoljon, vagy haDATADIR-t át akarjuk rakni, pl. lemez I/O vagy telí-tettség miatt. Fontos megjegyezni, hogy a MySQL na-gyon rosszul tolerálja, ha normál üzem közben elfogyalóla a lemezterület. Ilyenkor a táblák és a DB is sérül-hetnek, ezért nagyon fontos jól méretezi a DATADIRterületet, valamint érdemes folyamatosan egyedi scrip-tek, vagy nagios, vagy munin segítségével figyelemmelkísérni, nehogy kifusson a MySQL a neki fenntartott le-mezterületből. A bind-address segítségével pedig beál-líthatjuk, hogy a ne csak a localhoston hallgasson DBmotor, hanem pl. a külső lábon is. Ehhez ugyan aztán aDB-n belül is engedélyezni kell. Mivel ez egy jellemződolog ezért a többi konfiguráció előtt érdemes tárgyal-ni. Tehát ha egy távoli host részére szeretnénk engedni,hogy egy adott db vagy akár egy adott db táblájáhozhozzáférjen, akkor a következőket kell tennünk: a bind-address-t átírjuk a megfelelő IP-címre, pl.bind-address = 192.168.1.1
majd újraindítjuk a MySQL-t: service mysql restartEzek után belépünk a mysql -u root -p parancs segít-
ségével. Ha még nem hoztunk létre adatbázist, akkor a
12
MySQL
legegyszerűbb, ha rögtön úgy hozzuk lérte, hogy ahhoza megfelelő IP-ről hozzá is tudjanak férni:mysql> CREATE DATABASE webmotor;mysql> GRANT ALL ON webmotor.* TO
webuser@'192.168.1.2' IDENTIFIED BY 'jelszo';
mysql>flush privileges;mysql>quit;
jelen esetben tehát a webmotor db-hez a webuser fel-használónak engedtük a 192.168.1.2-ről a hozzáférést.Ezt később bármikor módosíthatjuk a GRANT parancssegítségével. A távoli SQL hozzáférések alap esetbentitkosítatlan csatornán utaznak, azaz tökéletesen lehall-gathatóak. Éppen ezért, ilyen távoli hozzáférést, csakVPN-en belül, vagy belső hálózaton belül, de mégisleginkább akár ssh port forward, vagy stunnel11 segítsé-gével csináljunk csak! A távoli management fejezetbenmindkettő opció elolvasható.
A továbbiakban a MySQL finom hangolását végez-hetjük el:max_connections = 100
11 http://shellboy.com/secure-remote-mysql-connection-using-stunnel.html
13
Nyílt forráskódú adatbázis-kezelők
alap esetben 100 db párhuzamos csatlakozást enged aszerver felé, természetesen ez akár lehet párhuzamosan100 db PHP kód, ami ír vagy olvas az SQL-ben. Éppenezért, nagyon fontos, hogy ezt a paramétert szükségesetén emeljük fel a megfelelő számra. Nagyon gyakorihiba, hogy egy jól méretezett vason a MySQL hatalmasterhelést ad, egyszerűen azért, mert elfogynak a nyitha-tó kapcsolatok és berakja őket egy várakozó sorba, amiaz Apache+PHP oldalon is fennakadást okoz. Ígyelőbb-utóbb megeszi az erőforrásokat, a memóriát és aCPU-t is. Egy átlagos és jól méretezett LAMP környe-zetben, átlagos vasteljesítmény mellett az ideális szám900.connect_timeout = 5wait_timeout = 600max_allowed_packet = 16Mthread_cache_size = 128sort_buffer_size = 4Mbulk_insert_buffer_size = 16Mtmp_table_size = 32Mmax_heap_table_size = 32M
Jellemzően a timeout és cache értékek beállításaimegfelelőek szoktak lenni egy teljesen alap rendszer-nek. Megint csak egy megfelelően megválasztott timeo-
14
MySQL
ut vagy cache mérettel nagy gyorsulást lehet elérni, deugyan akkor egy túl rövidre vagy hosszúra választott ti-meout, szépen le tudja ültetni a rendszert, akár csak atúl kicsi vagy nagy cache. Ezeket szépen fokozatosanérdemes igazítani az aktuális rendszerhez, a programo-zókkal együttműködve. Érdemes folyamatosan monito-rozni egy-egy átállított paraméter hatását pl. a muninsegítségével.slow_query_log_file =
/var/log/mysql/mysql-slow.loglong_query_time = 10
a slow query log beállítása egy befektetés a jövőbe, hi-szen utólag itt lehet majd visszakeresni azokat a lekér-dezéseket, amelyek valamiért akár percekig, vagy órá-kig futottak. Itt megint nagy segítséget jelenthet a Mu-nin Slow-Query mrtg diagramja, ahol látható hogy voltvagy nem volt ilyen. Utána pedig oda lehet adni a prog-ramozónak a logot elemzésre. Ezen kívül természete-sen a MySQL teljes és részleges log rögzítésre is képes,amely szintén megtalálható az alap konfigurációban, vi-szont ezzel nagyon csínján bánjunk, ugyan is nagyonhamar a telítődhet a teljes log partíció, ha nem csakadott periódusra kapcsoljuk be a teljes logot.
15
Nyílt forráskódú adatbázis-kezelők
A MySQL mentése
Értelemszerűen az installálás utolsó lépcsőjében ér-demes egy alap mentést azonnal beállítani, amit aztánlehet bővíteni, vagy mentési rendszerbe kötni. AMySQL beépített mentési mechanizmusát felhasználvaa következőképpen lehet a legegyszerűbben lementeni aDB-t:/usr/bin/mysqldump -prootjelszo webdb |
/bin/gzip > /backup/mysql-webdb-$1.tgz/usr/bin/mysqldump -prootjelszo
information_schema | /bin/gzip >/backup/mysql-information_schema-$1.tgz/usr/bin/mysqldump --all-databases
-prootjelszo | /bin/gzip > /backup/mysql-ALLDATABASE-$1.tgz
Mint az látható, az első két sor adott adatbázisokatment, amelyeket a jelszó után nevesítettünk, a harmadiksor pedig az összes adatbázist menti egyben. A mentősorok gzip tömörítést is alkalmaznak, mivel a DB állo-mányok akár 80-90%-os méret csökkenéssel is tárolha-tóak, hiszen azok jellemzően sima text állományok. Afenti példában azért van külön és egyben is mentve az
16
MySQL
összes használt DB, mivel egy esetleges részleges adatvesztés vagy korrupció esetén, nagyon nagy segítség,ha nem a teljes mentésből kell visszaállítani 1 táblátvagy 1 DB-t. Viszont fontos, hogy egy teljes dump isrendelkezésre álljon. Fontos továbbá azinformation_schema DB mentési is, mint az látható, hi-szen itt tárolódnak a DB közötti hozzáférések és egyébfontos információk. A teljes mentés természetesen ezttartalmazza. A fenti sorokat érdemes tehát egy héjprog-ramba belemásolni és a megfelelő időben, amely jel-lemzően hajnalban üresjárati időben van, futtatni. Akárnapi, heti, havi rotációs tárolással.
Egy alternatív mentési lehetőség, amikor a Mysql-HotCopy12 Perl script gyűjteményt használjuk. Jellem-zően ezt a módszert nem az előzőekben leírt mysql-dump helyett, hanem annak kiegészítésére, akár nap-közbeni vagy tesztelés előtti gyors DB-mentésre hasz-nálhatjuk bizonyos megkötésekkel. Pl. csak MyISAMDB és Archive db típusok esetében használható.
Természetesen a komplexebb mentő eszközök keze-lik a MySQL-t, de erről a Backup fejezetben olvasha-tunk.
12 http://dev.mysql.com/doc/refman/5.0/en/mysqlhotcopy.html
17
Nyílt forráskódú adatbázis-kezelők
Referenciák
Néhány fontosabb referencia, ahol a MySQL-t meg-elégedéssel használják13:
– WhiteHouse.Gov
– NASA
– Department of Homeland Security
– Swedish National Police
– Ministère de la Justice (France)
– Bank of Finland
– Swedish National Police
– US Navy
MariaDB
A MariaDB14 a MySQL forráskódjából kiindult fej-lesztés, mely jelenleg a MySQL-lel teljes mértékbenkompatibilis, közösség által fejlesztett és támogatott
13 http://www.mysql.com/customers/14 https://mariadb.org/
18
MariaDB
adatbázis szerver. A rendszer egyben kiválóan szemlél-teti a szabad szoftver licencelésben rejlő hatalmas lehe-tőséget is. A MariaDB-t az Oracle üzleti célokat szemelőtt tartó lépései miatt aggódó közösség hozta létre aGPL licenc előírásait betartva, a MySQL forráskódjá-nak továbbfejlesztésével. A legtöbb platformra elérhetőbinárissal vagy forráskóddal rendelkezik. Több kliens-sel használható, és rendelkezik a saját fejlesztésű Mari-aDB Client Library for Java Applicationsszel is. 2012decemberében egy alapítványt is létrehoztak, amelynekcélja a fejlesztés felügyelete, valamint annak hátterénekmegteremtése. Jelenleg azonban nem minden Linux ter-jesztésnek része (bár ez 2013 elején gyorsan változik,szinte minden fontosabb terjesztés átállt ráMySQL-ről), viszont minden lényeges terjesztéshez el-érhető, binárisan formában lévő programcsomagokszintjén (pl. Debian és Ubuntu rendszerekhez apt.-source szinten is). Minden jel arra mutat, hogy a Mari-aDB a jövő szabad szoftveres adatbázis-kezelője, hi-szen az Oracle MySQL fejlesztése nagyon könnyen ve-het nem várt fordulatot, így a felhasználók jelentős ré-sze tart a MySQL-től.
19
Nyílt forráskódú adatbázis-kezelők
A MariaDB installálása majdnem pontosan meg-egyezik a MySQL beállításaival, csupán jelenleg nemalap része a terjesztések szoftver kínálatának. Ezért elsőközelítésben szükséges felvenni a MariaDB csomag tá-rolóit15 a rendszerbe:sudo apt-get install
python-software-propertiessudo apt-key adv --recv-keys --keyserver
keyserver.ubuntu.com 0xcbcb082a1bb943dbsudo add-apt-repository 'deb
http://ftp.heanet.ie/mirrors/mariadb/repo/5.5/ubuntu precise main'
Innentől pedig már csak telepíteni kell:sudo apt-get updatesudo apt-get install mariadb-server
A továbbiakban pontosan ugyanolyan parancsok éslehetőségek segítségével állíthatjuk be, mint a MySQLesetében.
15 https://downloads.mariadb.org/mariadb/repositories/
20
MariaDB
Referenciák
Számos ismert sikertörténetről olvashatunk a Mari-aDB honlapján16, ezek közül néhány nagyobb, érdeke-sebb:
– A Wikipédia angol és német kiadásai valamint aWikiData 2013 április 22-én befejezte a MariaDB-revaló átállást17, melyet azóta is elégedetten használ-nak. A rendszer terhelésére jellemző, hogy az inten-zív gyorstárazás ellenére (melyet memcached és Re-dis segítségével valósítottak meg) az angol Wikipé-dia csúcsterhelése 50k lekérdezés másodpercenként.
– A 150 millió felhasználós Nimbuzz háttérrendszerénátállt MariaDB-re18.
– Az OLX, mely napi 40 millió lapot szolgál ki, szin-tén MariaDB-t használ19.
16 https://kb.askmonty.org/en/mariadb-case-studies/17 http://blog.wikimedia.org/2013/04/22/wikipedia-adopts-mariad
b/18 https://kb.askmonty.org/en/nimbuzz-uses-mariadb/19 https://kb.askmonty.org/en/olx_serves_40_million_page_views
_daily_MariaDB/
21
Nyílt forráskódú adatbázis-kezelők
PostgreSQL
A PostgreSQL20 fejlesztését az 1970-as évekbenkezdték meg a kaliforniai Berkeley egyetemen Ingresnéven. A 80-as évek közepétől több különböző kereske-delmi termék (mint a Sybase vagy a Microsoft SQLServer), és akkor még Postgres (Post Ingres) néven in-gyenes verzióként élt tovább a projekt. 1996-ban kaptaa manapság használt PostgreSQL nevet (a 6.0-ás verzi-ótól). Alapvetően egy olyan adatbázis-kezelő rendszer,amely szabványos SQL-felületen vezérelhető, azonbana tudása jóval komplexebb a függvényrendszernek kö-szönhetően. A függvények megvalósítása több nyelvenis lehetséges (pl. Java, Perl, Python, Ruby, Tcl, C/C++,PL/pgSQL). További előnyei a triggerek21 definiálása, atranzakciókezelés, a komplex adattípusok használható-sága, a sémák és a replikáció. Természetesen rendelke-zik a magyar nyelv teljes körű támogatásával DB szin-ten. Komplexitásának és tudásának köszönhetően gyak-ran választják nagy teherbírású és magas rendelkezésre
20 http://www.postgresql.org/21 http://hu.wikipedia.org/wiki/Trigger_%28adatb%C3%A1zisok
%29
22
PostgreSQL
állást igénylő feladatokhoz. A PostgreSQL is szabadszoftver, amelyet a MIT-stílusú (a módosított változatokzárt licencelését is megengedő) PostgreSQL22 licencalatt tesznek közzé.
Jelenleg a következő, igencsak meggyőző korlátok-kal rendelkezik:
– maximális adatbázisméret korlátlan
– maximális táblaméret 32 TB
– maximális sorméret 1,6 TB
– maximális mezőméret 1 GB
– sorok maximális száma táblánként korlátlan
– oszlopok maximális száma táblánként250–1600, oszloptípustól függően
– indexek maximális száma táblánként korlátlan
Rendelkezik a természetesnek számító parancssoroskezelést lehetővé tevő eszközzel, és számtalan támoga-tott és igen magas szinten elkészített GUI segédprog-rammal23 is, amelyek megkönnyítik az adatbázis-admi-
22 http://opensource.org/licenses/postgresql23 http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreS
QL_GUI_Tools
23
Nyílt forráskódú adatbázis-kezelők
nisztrátorok munkáját. Az egyik ilyen igen népszerű se-gédprogram a phpPgAdmin24, amely akárcsak aMySQL esetében a phpMyAdmin, egy PHP alapú GUI.Érdemes megnézni a tudásmátrixot25, amely jól szem-lélteti, hogy az elmúlt években hatalmas fejlődésenment keresztül, amelyet folyamatosan honorálnak is akülönféle díjakkal26. A kételkedőknek pedig érdemes át-futni a nagyobb felhasználók27 listáját tartalmazó web-oldalt, ahol meggyőződhetünk arról, hogy mekkora cé-gek döntöttek a PostgreSQL mellett. Természetesenrendelkezik az összes ilyenkor elvárható support és in-formációs felülettel, Wiki-oldallal, célzott fórumrend-szerrel. Inkább érdekesség, mint fontos információ, de aPostgreSQL team kizárólag Debian GNU/Linuxot hasz-nál a saját28 projektjén belül. Számos európai cég vállal7×24-es támogatást a PostgreSQL-re, itthon is több kö-zepes méretű cég vállal Enterpise supportot rá. Érdemesmegemlíteni a számos gyári kiterjesztés közül a Post-
24 http://sourceforge.net/projects/phppgadmin/25 http://www.postgresql.org/about/featurematrix/26 http://www.postgresql.org/about/awards/27 http://www.postgresql.org/about/users/28 http://www.postgresql.org/about/servers/
24
PostgreSQL
GIS29 kiterjesztést, amely kifejezetten földrajzi adatokkezeléséhez nyújt hathatós segítséget. Gyakorlati ta-pasztalat, hogy a PostreSQL a komplexebb Oracle-szin-tű DB kiváltására kiválóan alkalmas.
Referenciák
A rendszer honlapján számos komoly referencia vanfeltüntetve30, ezek közül néhány fontosabb:
– U.S. Department of Labor
– U.S. General Services Administration
– U.S. State Department
– National Physical Laboratory of India
– United Nations Industrial Development Organisation
– City of Garden Grove, California
– BASF, Agricultural Product Division
– IMDB.com
– Creative Commons
– Greenpeace
29 http://www.postgresql.org/about/news/1387/30 http://www.postgresql.org/about/users/
25
Nyílt forráskódú adatbázis-kezelők
– Fujitsu
– Cisco
SQLite
Az SQLite31 egy igen széles körben használt (a többifelsorolt DB-hez képest apró) adatbázis-kezelő függ-vénykönyvtár, mely egyszerű kezelését egy parancssoriadminisztrációs eszköz és egy Firefox kiegészítő (SQ-Lite Manager) segíti. Egyéni felhasználásra szánt (bárhelyben párhuzamosan több folyamat és szál is használ-hatja), nem biztosít hálózati hozzáférést az egyetlen ál-lományként tárolt adatbázisaihoz. Jellemzően kliens ol-dali szoftverekbe építik a rendszer adatainak és a gyor-sító tárnak egyszerű kezelésére. Jó példa erre a Fire-fox32 böngésző és Thunderbird33 levelezőkliens, ahol azelsődleges adatok tárolására használják. Számos máscég építi bele34 kereskedelmi vagy szabad szoftveres
31 http://www.sqlite.org/32 http://www.mozilla.org33 https://www.mozilla.org/hu/thunderbird/34 http://www.sqlite.org/famous.html
26
SQLite
termékébe. Felhasználási feltételei nincsenek35, hivata-losan közkincs (public domain)36, amely szabad kezetad a felhasználás tekintetében. Tudása folyamatosanfejlődik,37 és méreteihez képest igen figyelemre méltó.Az adatbázis fájlok kényelmes elérésére használhatómég az Sqliteman38, az SQLite Studio39 és a (PHP-baníródott) SQLiteManager40.
Számos további adatbázis-kezelő megoldás létezikszabad szoftverként, azonban egy tipikus vállalati kör-nyezetben (ide nem értve az olyan felhasználási terüle-tet, ahol párhuzamosan több ezer, százezer, vagy milliófelhasználó férhet hozzá egy időben ugyanahhoz azadatbázishoz, mint pl. a Google vagy a Facebook eseté-ben) jellemzően a több főkiszolgálós replikációt41 tudóadatbázis-motorokat használjuk.
35 http://www.sqlite.org/copyright.html36 http://en.wikipedia.org/wiki/Public_Domain37 http://www.sqlite.org/features.html38 http://sqliteman.com39 http://sqlitestudio.pl/index.rvt40 http://www.sqlitemanager.org/41 http://hu.wikipedia.org/wiki/Multi-master_replication
27
Nyílt forráskódú adatbázis-kezelők
Referenciák
Meglepő, hogy az SQLite teljesen észrevétlenülmennyire részévé vált a mindennapjainknak. A projekthonlapján található fontosabb referenciák közül42 ki-emelünk néhány fontosabbat:
– Mozilla Firefox, Thunderbird, FirefoxOS - ezek azóriási felhasználói bázissal rendelkező programok ésrendszerek a belső adataik tárolására használják azSQLite-ot.
– A Google számos helyen használja az SQLite-ot. Aleginkább ismert felhasználási terület az Androidrendszer, de ez végzi Google egyre népszerűbb bön-gészőjének, a Chrome-nak az adattárolását is.
– Az Apple is használja a rendszert a MacOS X, AppleMail, Safari, iTunes szoftverekben, valamint az iP-hone rendszerben.
– A széles körben használt Dropbox adatmentő ésszinkronizáló szolgáltatás kliens oldalán ebben tárol-ják az adatokat.
42 http://www.sqlite.org/famous.html
28
Hogyan válasszunk?
Hogyan válasszunk?
Felmerül a kérdés, hogy a felsoroltak közül melyikaz, amelyik egy adott feladatra megfelelő. Ha hálózatonis elérhető, többfelhasználós adatbázis kezelőre vanszükség, akkor a kérdés a PostgreSQL és a MariaDBközött fog eldőlni. Általánosságban elmondható, hogymindkét rendszer kiválóan használható általános felada-tokra. De a rendszer használatát jól ismerők nagyobbszáma (korábbi MySQL DBA-k), elterjedtsége (aMySQL-t is beleértve), illetve népszerűségének gyorsnövekedése miatt a MariaDB43 a legjobb választás. Hamindenképpen szeretnénk nagyvállalati rutinnal licenc-vásárlással egybekötni a támogatási igényünket, akkorjavasolt a MySQL nagyvállalatoknak szánt változataiközül választani. A legjobb tanács, ami adható, hogy afeladathoz válasszunk eszközt, és ne fordítva. Azaz,nézzük meg, hogy közép távon mire van szükségünk,mekkora adatmennyiség, milyen adatbázis-felépítés,milyen típusú adatbázis-kiterhelés várható, és ezt azajánlásokkal és a két projekt weboldalán feltüntetett tu-
43 http://db-engines.com/en/system/MariaDB%3BPostgreSQL
29
Nyílt forráskódú adatbázis-kezelők
dásmátrixszal összevetve döntsünk. Fontos továbbiszempont, hogy a MariaDB azt az utat járja, amit előttea MySQL sok sok éven át, mielőtt felvásárolták, így akibiztos szeretne lenni abban, hogy még sokáig a közös-ség támogatását fogja élvezni, annak érdemes megfon-tolni a MariaDB-re való váltást.
30