Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MongoDB ir kiti pasapaliojimai Paulius Leščinskas 2010-11-12
Teoriniai modeliai neveikia <ul><li>Pasenę </li><ul><li>Gantt'o diagrama sukurta 1910-1915 m. </li></ul><li>Kurti teoretik...
Teorinius modelius keičia praktiniai <ul><li>Filosofija ir teorija yra praktikos pagrindas, bet tik tiek...
HTML5 vysto WHATWG, o ne W3C
Facebook vysto HipHop, Cassandra, Thrift, Varnish, tobulina MySQL, Memcached etc.
Waterfall ->  Agile, TDD etc.
Gantt chart -> Scrum burndown chart </li></ul>
RDBMS <ul><li>1NF – 1970m., 2 ir 3NF – 1971m., BCNF – 1974m.
Normalizacijos tikslai: </li><ul><li>Išvengti duomenų pertekliaus
Užtikrinti duomenų vientisumą
Pašalinti anomalijas </li></ul><li>RDMBS -> Memcached (NoSQL DB RAMe) </li></ul>
MongoDB <ul><li>Išleista 2009m.
Document-oriented DB (JSON/BSON)
Tarpinis variantas tarp RDBMS ir key-value store
Upcoming SlideShare
Loading in …5
×

MongoDB

6,363 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

MongoDB

  1. 1. MongoDB ir kiti pasapaliojimai Paulius Leščinskas 2010-11-12
  2. 2. Teoriniai modeliai neveikia <ul><li>Pasenę </li><ul><li>Gantt'o diagrama sukurta 1910-1915 m. </li></ul><li>Kurti teoretikų </li><ul><li>XHTML </li></ul><li>Design patternai neatitinka realios situacijos </li></ul>
  3. 3. Teorinius modelius keičia praktiniai <ul><li>Filosofija ir teorija yra praktikos pagrindas, bet tik tiek...
  4. 4. HTML5 vysto WHATWG, o ne W3C
  5. 5. Facebook vysto HipHop, Cassandra, Thrift, Varnish, tobulina MySQL, Memcached etc.
  6. 6. Waterfall -> Agile, TDD etc.
  7. 7. Gantt chart -> Scrum burndown chart </li></ul>
  8. 8. RDBMS <ul><li>1NF – 1970m., 2 ir 3NF – 1971m., BCNF – 1974m.
  9. 9. Normalizacijos tikslai: </li><ul><li>Išvengti duomenų pertekliaus
  10. 10. Užtikrinti duomenų vientisumą
  11. 11. Pašalinti anomalijas </li></ul><li>RDMBS -> Memcached (NoSQL DB RAMe) </li></ul>
  12. 12. MongoDB <ul><li>Išleista 2009m.
  13. 13. Document-oriented DB (JSON/BSON)
  14. 14. Tarpinis variantas tarp RDBMS ir key-value store
  15. 15. Nebūtina laikyti panacėja </li></ul>
  16. 16. Kas naudoja MongoDB Ir t.t.
  17. 17. MongoDB savybės <ul><li>Neturi schemos
  18. 18. Palaiko UTF-8
  19. 19. Turi indeksus, taip pat fulltext paieškai
  20. 20. Scale'inasi horizontaliai, veikia kaip cluster'is
  21. 21. Turi PHP (ir kt. kalbų) extensionus
  22. 22. Turi Javascript variklį, gali naudoti map/reduce
  23. 23. Turi explain(), hint(), profiliavimą ir log'inimą
  24. 24. Turi vartotojų autorizaciją </li></ul>
  25. 25. MongoDB SQL užklausų analogai SQL MongoDB CREATE TABLE USERS (a Number, b Number) Nebūtina, bet galima sukurti kolekciją INSERT INTO USERS VALUES(1,1) db.users.insert({a:1,b:1}) SELECT * FROM users WHERE age=33 ORDER BY name db.users.find({age:33}).sort({name:1}) SELECT * FROM users WHERE age>33 db.users.find({'age':{$gt:33}})}) CREATE INDEX myindexname ON users(name) db.users.ensureIndex({name:1}) SELECT * FROM users LIMIT 10 SKIP 20 db.users.find().limit(10).skip(20) EXPLAIN SELECT * FROM users WHERE z=3 db.users.find({z:3}).explain()
  26. 26. MongoDB SQL užklausų analogai SQL MongoDB SELECT DISTINCT last_name FROM users db.users.distinct('last_name') SELECT COUNT(*y) FROM users where AGE > 30 db.users.find({age: {'$gt': 30}}).count() SELECT COUNT(AGE) from users db.users.find({age: {'$exists': true}}).count() UPDATE users SET a=1 WHERE b='q' db.users.update({b:'q'}, {$set:{a:1}}, false, true) DELETE FROM users WHERE a=1 db.users.remove({a: 1})
  27. 27. MongoDB ir PHP <ul><li>Extensionas turi klases Mongo, MongoDB, MongoCollection, MongoCursor </li></ul><?php $mongo = new Mongo(&quot;mongodb://[<user>:<password>@]localhost&quot;, $mongo->connect(); $result = $mongo->selectDB(&quot;foo&quot;) -> command(array(&quot;distinct&quot; => &quot;bar&quot;, &quot;key&quot; => &quot;age&quot;));
  28. 28. MongoDB ir PHP <?php $collection = $db->my_db->articles; $articles = $collection->find(array( 'type' => array('$in' => array('homepage', 'editorial')) )); // Atrinkimas naudojant JS funkciją $js = &quot;function() { return this.type == 'homepage' || this.featured == true; }&quot;; $articles = $collection->find(array('$where' => $js));
  29. 29. MongoDB ir PHP <?php // MongoCursor vertimas į masyvą (PHP >= 5.1.0) $cursor = $collection->find(); $array = iterator_to_array($cursor); // JS funkcijos vykdymas $response = $db->execute(&quot;function() { return 'Hello, world!'; }&quot;); echo $response['retval'];
  30. 30. MongoDB ir PHP <?php $person = array(&quot;name&quot; => &quot;Joe&quot;, &quot;age&quot; => 20); $collection->insert($person, true); // now $person has an _id field, so if we save it  // again, we will get an exception try {      $collection->insert($person, true); } catch(MongoCursorException $e) {      echo &quot;Can't save the same person twice!n&quot;; }
  31. 31. Informacijos šaltiniai <ul><li>http://www.mongodb.org
  32. 32. http://lt.php.net/mongo
  33. 33. http://google.com :)
  34. 34. Ačiū už dėmėsį </li></ul>

×