ݺߣ

ݺߣShare a Scribd company logo
{
    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)
byte
Kilobyte      1,024

Megabyte      1,048,576
   “640K of memory should be
Gigabyte      1,073,741,824

   enough for anybody.”
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
RDBMS
NoSQL                Relácie
 Vnorené objekty    ACID (atomicity,
 Rýchlosť            consistency, isolation,
                      durability)




Základné rozdiely
Č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
strycek@webserverba:~$ mongo
                          192.168.122.20:27017
                          MongoDB shell version: 1.4.4
   MongoDB je databáza   url: 192.168.122.20:27017
                          connecting to: 192.168.122.20:27017/test
                          type "help" for help
                          >




     > use harvester
strycek@webserverba:~$ mongo
                                    192.168.122.20:27017
                                    MongoDB shell version: 1.4.4
   MongoDB je databáza
                                    url: 192.168.122.20:27017
   obsahujúca kolekcie (tabuľka)   connecting to: 192.168.122.20:27017/test
                                    type "help" for help
                                    > use harvester
                                    switched to db harvester




      > db.pageviews
   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}
);
Kedy je vhodný čas prejsť
na MongoDB?
{                              {
    "_id" : ...,                   "_id" : ...,
    "url" : ...,                   "url" : ...,
                                   "visitors" : [
    "visitors" : {
                                               {
       "pijani" : [                                "type" : "pijani",
              "pocet" : 20                        "pocet" : 20
       ],                                      },
       "nepijani" : [                          {
                                                   "type" : "nepijani"
              "pocet" : 70
                                                   "pocet" : 48
      ]                                        },
    }                               ],
}                              }


    db.pageviews.find({
         "visitors.type" : {
                "$gt" : 19
         }
    });
Martin Strýček - Ako začať s MongoDB
Šk{lovateľ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
Martin Strýček - Ako začať s MongoDB

More Related Content

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

  • 1. { author:"Martin Strýček", twitter:"@martin_strycek", about:"Ako začať s MongoDB" }
  • 2. NoSQL a RDBMS pohľad na svet.
  • 3. “640kB of memory should be enough for anybody.” -Bill Gates (1981)
  • 4. byte Kilobyte 1,024 Megabyte 1,048,576 “640K of memory should be Gigabyte 1,073,741,824 enough for anybody.” 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
  • 5. RDBMS NoSQL  Relácie  Vnorené objekty  ACID (atomicity,  Rýchlosť consistency, isolation, durability) Základné rozdiely
  • 6. Čo vlastne je mongoDB a ako funguje?
  • 7. MongoDB od slova "humongous“ je šk{lovateľn{, výkonná, open source NoSQL databáza. strycek@webserverba:~$ mongo 192.168.122.20:27017
  • 8. strycek@webserverba:~$ mongo 192.168.122.20:27017 MongoDB shell version: 1.4.4  MongoDB je databáza url: 192.168.122.20:27017 connecting to: 192.168.122.20:27017/test type "help" for help > > use harvester
  • 9. strycek@webserverba:~$ mongo 192.168.122.20:27017 MongoDB shell version: 1.4.4  MongoDB je databáza url: 192.168.122.20:27017  obsahujúca kolekcie (tabuľka) connecting to: 192.168.122.20:27017/test type "help" for help > use harvester switched to db harvester > db.pageviews
  • 10. MongoDB je databáza  obsahujúca kolekcie (tabuľka)  kolekcie obsahujú dokumenty (riadky) > db.pageviews.insert({})
  • 11. 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" })
  • 13. BSON = binary-encoded serialization of JSON-like documents
  • 14. 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
  • 15. { "_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();
  • 16. { "_id" : ObjectId("4fcfd8db962e3f275a2847d6"), "url" : "http://webelement.sk", } { "_id" : ObjectId("4fcfd8db962e3f275a2847d7"), "url" : "http://webelement.sk", } db.pageviews.find( {url:”http://webelement.sk”}, {url:1} );
  • 17. Kedy je vhodný čas prejsť na MongoDB?
  • 18. { { "_id" : ..., "_id" : ..., "url" : ..., "url" : ..., "visitors" : [ "visitors" : { { "pijani" : [ "type" : "pijani", "pocet" : 20 "pocet" : 20 ], }, "nepijani" : [ { "type" : "nepijani" "pocet" : 70 "pocet" : 48 ] }, } ], } } db.pageviews.find({ "visitors.type" : { "$gt" : 19 } });
  • 21. 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
  • 23. { "_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
  • 24. { "_id" : ..., "url" : ..., "visits" : [ "hours" : [ [0,0,0,0……0], [0,0,0,0……0], … [0,0,0,0……0] ] ], } Nachystajte si miesto
  • 25. 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