Upload
webelement
View
1.033
Download
2
Tags:
Embed Size (px)
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