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

Preview:

DESCRIPTION

 

Citation preview

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

MongoDB"}

NoSQL a RDBMS pohľad na svet.

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

-Bill Gates (1981)

“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

Základné rozdiely

NoSQL Vnorené objekty Rýchlosť

RDBMS Relácie ACID (atomicity,

consistency, isolation, durability)

Čo vlastne je mongoDB a ako funguje?

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

strycek@webserverba:~$ mongo 192.168.122.20:27017

> 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>

> 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

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

> db.pageviews.insert({})

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" })

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

BSON = binary-encoded serialization of JSON-like documents

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

{"_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();

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

}{

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

}

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

);

01111011211110101

Kedy je vhodný čas prejsť na 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},

],}

Škálo

vate

ľnosť

a v

ýkon

Funkcionalita

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

Dačo z praxe.

{ "_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

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

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

] ],}

Nachystajte si miesto

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

Recommended