MySQL kontra MongoDB programozás. SQL és NoSQL megközelítés egy konkrét példán keresztül



Hasonló dokumentumok
Adatbázis-kezelő rendszerek alkalmazása. MongoDB beadandó feladat Programtervező informatikus szak

Adatbázisok webalkalmazásokban

MongoDB THE NOSQL DATABASE. Készítette: Hugyák Tamás v2.1.1

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

Tematika. MongoDB koncepció JSON Schemaless logika Replicaset képzés Sharding Aggregate framework

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

B I T M A N B I v: T M A N

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Adatbázis használata PHP-ből

JavaServer Pages (JSP) (folytatás)

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Adatbázis-kezelés ODBC driverrel

Alternatív adatbázisok Gráfadatbázisok

A könyv tartalomjegyzéke

SZERVER OLDALI JAVASCRIPT. 8. hét MongoDB, séma tervezés, performancia kérdések

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

NoSQL technológiák. NoSQL Fórum Budapest, március 23. Diasablon: - a fotók sajátok :)


Adatbázisok* tulajdonságai

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

A WEB programozása - JSP1 dr.gál Tibor őszi félév

IBM Data Server ügyfelek telepítése

NYÍLT FORRÁSKÓDDAL A. FÉNYKÉP, TÉRKÉP, FÉNY TÉR KÉP 2012 konferencia Gyöngyös, Károly Róbert Főiskola

Adatbázis rendszerek 7. előadás State of the art

BBS-INFO Kiadó

AutoCAD MAP DWG mapobject TOPOBASE konvertáló program dokumentáció

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

NoSql, Document Store, MongoDB. Gombos Gergő

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

A DBM függvények használata

PHP alapjai II. Vincze Dávid Miskolci Egyetem, IIT


SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 8. Előadás:

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

Szathmáry László Debreceni Egyetem Informatikai Kar

JDBC - adatbáziskezelés

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Java Database Connectivity (JDBC)

MUMPS - a legfontosabb Adatbázis amiről (valószínűleg) soha nem hallott

MDAC - Microsoft Data Access Components

Könnyedén. és természetesen OPTEAMUS

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Adatbázis-kezelés. Harmadik előadás

MySQL. Elektronikus jegyzet Széchenyi István Egyetem Távközlési tanszék

INFORMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Adatbázisok I. Az SQL nyelv

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

A PHP nyelv alapjai. Web-Sky Consulting Kft Tóth Imre 2009

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Debreceni Egyetem Informatika Kar

Adatbázis rendszerek. dr. Siki Zoltán

B I T M A N B I v: T M A N

INFORMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Adatbázis fejlesztés és üzemeltetés II. Szabó Bálint

Programozás és adatbázis kezelés PHP ben

Debreceni Egyetem Informatika Kar DINAMIKUS WEBLAPOK KÉSZÍTÉSÉNEK LEHETŐSÉGEI. Matematikus

Biztonságos PHP a gyakorlatban

SZAKDOLGOZAT. Vígh Gábor DEBRECEN 2009.

INFORMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Tehergépkocsi TANFOLYAMOK ÁRAI. Képzés díja (Oktatási + Vizsgadíjak): "C" kategória OKTATÁSI DÍJ. VIZSGADÍJAK (az NKH részére fizetendők)

Gyakorlati vizsgatevékenység A

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

GEIAL Kovács László. GEIAL Kovács László GEIAL Kovács László

Kliens oldali SQL-API

Informatikai Tesztek Katalógus

Component Soft és tovább

Message Broadcasting. Rendszerkörnyezet. A Message Broadcasting telepítése. Üzenetek létrehozása

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Amazon Web Services. Géhberger Dániel Szolgáltatások és alkalmazások március 28.

Adatbázisok I A relációs algebra

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

Felhasználói kézikönyv Bázis, Aktív, Portál és Portál+ csomagokhoz

RDBMS fejlesztési irányok. Ferris Wheel (óriáskerék) Jim Gray törvényei. Elosztott adatbázisok problémái. Elosztott adatbázisok

B I T M A N B I v: T M A N

ÉTRENDKÉSZÍTŐ WEBALKALMAZÁS

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Programozási technológia

Hány komputer van a kezemben?

Gartner: Hype Cycle for Big Data NoSQL Database Management Systems

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Az MS Access adatbázis-kezelő program

Access adatbázis elérése OLE DB-n keresztül

ÜGYVITELI ALAPISMERETEK

Java és web programozás

Managed DB AWS. Tóbi Tamás, Technology TC2

MMK-Informatikai projekt ellenőr képzés 4

Linuxot mindenre - Raspberry Pi

SZAKDOLGOZAT. Szabó Attila

Átírás:

MySQL kontra MongoDB programozás SQL és NoSQL megközelítés egy konkrét példán keresztül Kardos Sándor sandor@component.hu

Miről lesz szó? Miért érdemes őket összehasonlítani? MySQL általános jellemzői MongoDB általános jellemzői Blog adatbázis és lekérdezése MySQL-ben Blog adatbázis és lekérdezése MongoDB-ben Összegzés

Miért érdemes őket összehasonlítani? Ugyanazt az adattárolási feladatot több módon is meg lehet oldani Természetesen az adott feladathoz leginkább illeszkedő megoldást szeretnénk Ehhez érdemes ismerni a tulajdonságaikat A MySQL már nagyon elterjedt, a MongoDB pedig nagyon gyorsan terjed?

Relatív elterjedtség

MySQL A világ legnépszerűbb nyílt forráskódú relációs adatbáziskezelője! több mint napi 70000 letöltés több mint 12 millió aktív telepítés minden földrészen használják stabil, kipróbált (1995 óta fejlesztik) az Oracle 2010-ben felvásárolta választható GPL vagy fizető licenc

MySQL Tradícionális RDBMS: Az adatokat táblákban tárolja, melyekben minden rekordnak ugyanolyan mezői vannak, és ezek sorrendje is azonos A táblák között kapcsolatok definiálhatók A szabvánnyal kompatibilis SQL, sok ügyes kiterjesztéssel Adatbázis-tervezésre komoly elméleti háttér

MySQL Kik használják?

MySQL Milyen programozási nyelvből használható?

MySQL Több adatbázis-kezelő motor

MySQL InnoDB, az alapértelmezett motor Tárolható adatmennyiség: 64TB Tranzakciók MVCC Indexek (B-tree, Clustered) Tömörített adattárolás Gyorsítótárak (Index, Data, Query)

MySQL InnoDB, az alapértelmezett motor Replikáció Sor szintű zárolás Idegen kulcsok támogatása Online biztonsági mentés Automatikus helyreállítás leállás után

JSON dokumentumokat tároló, nem relációs adatbáziskezelő (humongous: óriási nagy) A legnépszerűbb NoSQL adatbáziskezelő Nyílt forráskódú: AGPL licenc, driverek: Apache licenc A 10gen nevű cég fejleszti (2007 óta) Windows, Linux, OS X, és Solaris felett is működik

Használók pl.:

Támogatott nyelvek C C++ C# Erlang Java Javascript Perl PHP Python Ruby Scala

JSON (JavaScript Object Notation) Nincs adatbázis-séma: dokumentumonként más mezők tárolhatók { } "_id": "filemenu", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } Az adatbázis bináris formában tárolja (BSON)

MongoDB SQL utasítások helyett függvényhívások MySQL (lekérdezés egy táblából): SELECT * FROM grades ORDER BY score DESC LIMIT 100,1 MongoDB JavaScript (lekérdezés egy kollekcióból): db.grades.find().sort({'score': 1}).skip(100).limit(1)

MongoDB Memcached Key-Value stores MongoDB Sebesség RDBMS Funkcionalitás

MongoDB Jól skálázható, olcsó PC-ken futó, elosztott adatbázis, de Nincsenek tranzakciók Egy többsoros update egyes lépései utáni állapotot láthatják a párhuzamosan futó lekérdezések, de dokumentum szinten az atomicitás garantált Nincs JOIN Több collection-t érintő lekérdezést lépésenként kell megtenni, de egy relációs adatbázis több táblája helyett sokszor lehet egyetlen collection-t használni max. 16Mb / dokumentum

MongoDB jellemzői Generikus lekérdezések: mező érték, intervallum vagy reguláris kifejezés alapján Aggregáció: MapReduce Szerver-oldali JavaScript futtatás Indexek támogatása Replikáció: master-slave, csak a master írható, automatikus szerepváltás, ha a master kiesik Terhelésmegosztás: sharding, a fejlesztő által választott kulcs alapján az adatokat szétosztja shardokra (shard = master + slave-ek) Fájltárolás: hagyományos fájlrendszer skálázható kiváltására több gépen (GridFS)

Példa: Blog Milyen adatokat tároljunk?

Blog adatbázis relációs séma

Blog adatbázis MongoDB JSON kollekciók Posts collection { title: "Featured blog", author: "ASM", message: "Hi everyone!...", date: new Date('Jun 13, 2012'), comments: [{ commenter: "Alice", message: "First!"}, { commenter: "Bob", message: "Hi!"}], tags: ["blogs", "community", "featured blogs"] } Authors collection { _id: "ASM", password: "onewayhash" }

MySQL adatbázis-lekérdezés JAVÁ-ból try { Connection c = DriverManager.getConnection( "jdbc:mysql://localhost/blog", "user", "password"); Statement s = c.createstatement(); ResultSet rs = s.executequery( "SELECT title, message FROM posts"); while (rs.next()) { System.out.println(rs.getString("title") + " " + rs.getstring(2)); // field 2 is "message" } } catch (SQLException e) { System.out.println("SQL Exception: " + e.getmessage()); }

MongoDB lekérdezés JAVÁ-ból try { Mongo mongoclient = new Mongo("localhost"); DB db = mongoclient.getdb("blog"); DBCollection postscollection = db.getcollection("posts"); BasicDBObject whereclause = new BasicDBObject(); BasicDBObject columnselect = new BasicDBObject("title", true).append("message", true).append("_id", false); DBCursor cursor = postscollection.find(whereclause, columnselect); while (cursor.hasnext()) { System.out.println(cursor.next()); } } catch (MongoException e) { e.printstacktrace(); } catch (UnknownHostException e) { e.printstacktrace(); }

Összegzés MySQL InnoDB: hagyományos, tranzakcionális RDBMS MongoDB: elosztott JSON dokumentum tároló További, mélyebb ismeretekért ajánlom tanfolyamainkat: Oracle MySQL tanfolyamok (fejlesztői és rendszergazdai) Saját fejlesztésű MongoDB fejlesztői tanfolyam

Köszönöm a figyelmet!