30
Nyílt forráskódú adatbázis-kezelők Szabad szoftver keretrendszer Készítette a Közigazgatási és Igazságügyi minisztérium E-közigazgatási Szabad Szoftver Kompetencia Köz- pontja, Budapest, 2013 Kódszám: EKOP–1.2.15 – Ez a Mű a Creative Commons Nevezd meg! Í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/

Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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/

Page 2: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 3: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 4: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 5: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 6: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 7: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 8: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 9: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 10: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 11: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 12: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 13: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 14: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 15: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 16: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 17: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 18: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 19: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 20: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 21: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 22: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 23: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 24: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 25: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 26: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 27: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 28: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 29: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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

Page 30: Nyílt forráskódú adatbázis-kezelőkszabadszoftver.kormany.hu/letoltesek/keretrendszer/08-Adatbaziskezelok... · Nyílt forráskódú adatbázis-kezelők MySQL A MySQL7 jelenleg

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