26
{ author:"Martin Strýček", twitter:"@martin_strycek", about:"Ako začať s MongoDB" }

Martin Strýček - Ako začať s MongoDB

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Martin Strýček - Ako začať s MongoDB

{author:"Martin Strýček", twitter:"@martin_strycek", about:"Ako začať s

MongoDB"}

Page 2: Martin Strýček - Ako začať s MongoDB

NoSQL a RDBMS pohľad na svet.

Page 3: Martin Strýček - Ako začať s MongoDB

“640kB of memory should be enough for anybody.” 

-Bill Gates (1981)

Page 4: Martin Strýček - Ako začať s MongoDB

“640K of memory should be enough for anybody.” 

byteKilobyte 1,024

Megabyte 1,048,576

Gigabyte 1,073,741,824

Terabyte 1,099,511,627,776

Petabyte 1,125,899,906,842,624

Exabyte 1,152,921,504,606,846,976

Zettabyte 1,180,591,620,717,411,303,425

Page 5: Martin Strýček - Ako začať s MongoDB

Základné rozdiely

NoSQL Vnorené objekty Rýchlosť

RDBMS Relácie ACID (atomicity,

consistency, isolation, durability)

Page 6: Martin Strýček - Ako začať s MongoDB

Čo vlastne je mongoDB a ako funguje?

Page 7: Martin Strýček - Ako začať s MongoDB

MongoDB od slova "humongous“ je škálovateľná, výkonná, open source NoSQL databáza.

strycek@webserverba:~$ mongo 192.168.122.20:27017

Page 8: Martin Strýček - Ako začať s MongoDB

> use harvester

MongoDB je databáza

strycek@webserverba:~$ mongo 192.168.122.20:27017MongoDB shell version: 1.4.4url: 192.168.122.20:27017connecting to: 192.168.122.20:27017/testtype "help" for help>

Page 9: Martin Strýček - Ako začať s MongoDB

> db.pageviews

MongoDB je databáza obsahujúca kolekcie (tabuľka)

strycek@webserverba:~$ mongo 192.168.122.20:27017MongoDB shell version: 1.4.4url: 192.168.122.20:27017connecting to: 192.168.122.20:27017/testtype "help" for help> use harvesterswitched to db harvester

Page 10: Martin Strýček - Ako začať s MongoDB

MongoDB je databáza obsahujúca kolekcie (tabuľka) kolekcie obsahujú dokumenty (riadky)

> db.pageviews.insert({})

Page 11: Martin Strýček - Ako začať s MongoDB

MongoDB je databáza obsahujúca kolekcie (tabuľka) kolekcie obsahujú dokumenty (riadky) dokumenty obsahujú množinu polí (stĺpce)

> db.pageviews.insert({url : "http://webelement.sk" })

Page 12: Martin Strýček - Ako začať s MongoDB

Dáta, veľa dát...

Page 13: Martin Strýček - Ako začať s MongoDB

BSON = binary-encoded serialization of JSON-like documents

Page 14: Martin Strýček - Ako začať s MongoDB

BSON = binary-encoded serialization of JSON-like documents

maximálna veľkosť jedného dokumentu je 16MB

pre väčšie dáta máme GridFS Súbory Kúsky

Page 15: Martin Strýček - Ako začať s MongoDB

{"_id" : ObjectId("4fcfd8db962e3f275a2847d6"), "url" : "http://webelement.sk","visitor" : 1 }{ "_id" : ObjectId("4fcfd8db962e3f275a2847d7"), "date" : "Thu Jun 07 2012 00:00:00 GMT+0200 (CET)", "url" : "http://webelement.sk", "visitor" : 225,"logged-in" : 55225}

db.pageviews.find();

Page 16: Martin Strýček - Ako začať s MongoDB

{"_id" : ObjectId("4fcfd8db962e3f275a2847d6"), "url" : "http://webelement.sk",

}{

"_id" : ObjectId("4fcfd8db962e3f275a2847d7"), "url" : "http://webelement.sk",

}

db.pageviews.find({url:”http://webelement.sk”},{url:1}

);

Page 17: Martin Strýček - Ako začať s MongoDB

01111011211110101

Kedy je vhodný čas prejsť na MongoDB?

Page 18: Martin Strýček - Ako začať s MongoDB

db.pageviews.find({"visitors.type" : {

"$gt" : 19}

});

{ "_id" : ..., "url" : ..., "visitors" : { "pijani" : [

"pocet" : 20 ], "nepijani" : [

"pocet" : 70 ] }}

{ "_id" : ..., "url" : ..., "visitors" : [

{ "type" : "pijani",

"pocet" : 20 },{ "type" : "nepijani" "pocet" : 48},

],}

Page 19: Martin Strýček - Ako začať s MongoDB
Page 20: Martin Strýček - Ako začať s MongoDB

Škálo

vate

ľnosť

a v

ýkon

Funkcionalita

Page 21: Martin Strýček - Ako začať s MongoDB

Ak potrebujete databázu s veľa dátami ale nechcete prísť o výkon.

Ak si chcete sami definovať indexy.

Ak potrebujete ľahko nastaviteľnú replikáciu.

Ak by ste miesto neho zvolili MySQL alebo PostgreSQL

Page 22: Martin Strýček - Ako začať s MongoDB

Dačo z praxe.

Page 23: Martin Strýček - Ako začať s MongoDB

{ "_id" : ..., "url" : ..., "blog" : [

{ "autor" : "ujovlado",

"msg" : "začal som robiť v Piano Media" },{ "autor" : "rootpd", "msg" : " ja tam robím tiež"

}, ],}

Nebojte sa duplikovať dáta

Page 24: Martin Strýček - Ako začať s MongoDB

{ "_id" : ..., "url" : ..., "visits" : [

"hours" : [[0,0,0,0……0],[0,0,0,0……0],…[0,0,0,0……0]

] ],}

Nachystajte si miesto

Page 25: Martin Strýček - Ako začať s MongoDB

Podmienka A vráti 25 000 dokumentov Podmienka B vráti 8 000 dokumentov Podmienka C vráti 2 000 dokumentov

Keď píšete dotazy rozmýšľajte

Page 26: Martin Strýček - Ako začať s MongoDB