Your SlideShare is downloading. ×
0
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
MongoDB basics in Russian
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MongoDB basics in Russian

6,173

Published on

MongoDB basics in Russian / Основы MongoDB по-русски / …

MongoDB basics in Russian / Основы MongoDB по-русски /
http://twitter.com/maximalno

Published in: Technology
0 Comments
14 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,173
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
84
Comments
0
Likes
14
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. mongodb.org NoSQL база данных
  • 2. Олег Качан Независимый разработчик twitter.com/ maximalno
  • 3. NoSQL = Not only SQL
  • 4. NoSQL базы данных <ul><li>Key-value (Redis, Dynamo, MemcacheDB, Voldemort) </li></ul><ul><li>Document (MongoDB, CouchDB, Riak) </li></ul><ul><li>Wide Column (BigTable, Cassandra, HBase) </li></ul><ul><li>Graph (Neo4j, InfiniteGraph) </li></ul>
  • 5. MongoDB <ul><li>Быстрая база данных ( C++ ) </li></ul><ul><li>Устоявшийся проект, выпущена версия 2 .0 </li></ul><ul><li>Open-source , но разрабатывается и поддерживается компанией 10gen </li></ul><ul><li>Одно из наиболее универсальных решений </li></ul>
  • 6. Поддержка MongoDB языками <ul><li>C/C++ </li></ul><ul><li>Java </li></ul><ul><li>.NET </li></ul><ul><li>Javascript </li></ul><ul><li>Perl </li></ul><ul><li>PHP </li></ul><ul><li>Python </li></ul><ul><li>Ruby </li></ul>Официальные драйверы <ul><li>Erlang </li></ul><ul><li>Scala </li></ul><ul><li>Haskell </li></ul>Драйверы open-source ActionScript, Clojure, Delphi, Node.js, F#, Go, Groovy, Lua, Objective C, Smalltalk и т.д.
  • 7. Кто использует MongoDB? Craigslist
  • 8. Кто использует MongoDB?
  • 9. @hipsterhacker If it&apos;s not MongoDB, it&apos;s the WrongoDB Retweeted by @bowermanandrew and 100+ others
  • 10. MongoDB Документная база данных
  • 11. Каждому ключу соответствует документ <ul><li>{ </li></ul><ul><ul><li>first_name: “Oleg”, </li></ul></ul><ul><ul><li>last_name: “Kachan”, </li></ul></ul><ul><ul><li>contacts: { </li></ul></ul><ul><ul><ul><li>twitter: “maximalno”, </li></ul></ul></ul><ul><ul><ul><li>email: “683009@gmail.com” </li></ul></ul></ul><ul><ul><li>}, skills: [“php”, “node.js”, “mongodb”] </li></ul></ul><ul><li>} </li></ul>_id: ObjectId(“ 4daf… ” ) =&gt;
  • 12. Организация данных SQL MongoDB База данных База данных Таблица Коллекция Строка/запись Документ
  • 13. Измение мышление <ul><li>Нет JOIN </li></ul><ul><li>Избыточность данных вместо нормализации </li></ul><ul><li>Контроль данных из приложения, а не из базы </li></ul>Навыки работы с SQL базами не подходят для NoSQL
  • 14. MongoDB Чем лучше?
  • 15. Сравнение с другими решениями Функциональность <ul><li>Memcached </li></ul><ul><li>Key/value </li></ul><ul><li>MongoDB </li></ul><ul><li>RDBMS </li></ul>
  • 16. Преимущества <ul><li>Документно-ориентированная база данных </li></ul><ul><li>Быстрое чтение и особенно запись </li></ul><ul><li>Широкая по сравнению с другими NoSQL функциональность </li></ul><ul><li>Масштабирование из коробки </li></ul><ul><ul><li>По чтению ( Master/slave, Replica sets ) </li></ul></ul><ul><ul><li>По записи ( Sharding ) </li></ul></ul>
  • 17. Но зачем? О бласти применения
  • 18. MongoDB <ul><li>Не подходит : </li></ul><ul><li>если вы используете JOIN’ ы </li></ul><ul><li>если вам необходимы транзакции </li></ul><ul><li>Подходит : </li></ul><ul><li>хранение разнородных данных </li></ul><ul><li>хранение геоданных </li></ul><ul><li>хранение логов и статистики </li></ul>
  • 19. Пример <ul><li>HTML- страница </li></ul><ul><li>Н овость </li></ul><ul><li>К арточка товара </li></ul>Система управления контентом
  • 20. Пример <ul><li>SQL </li></ul><ul><li>3 таблицы : pages, news, goods </li></ul><ul><li>MongoDB </li></ul><ul><li>1 коллекция : documents </li></ul>Система управления контентом
  • 21. Пример <ul><li>Страница </li></ul><ul><li>{ </li></ul><ul><ul><li>type: “page”, </li></ul></ul><ul><ul><li>content: “ Текст на странице ” </li></ul></ul><ul><li>} </li></ul>Система управления контентом
  • 22. Пример <ul><li>Новость </li></ul><ul><li>{ </li></ul><ul><ul><li>type: “news”, </li></ul></ul><ul><ul><li>date: new Date(), </li></ul></ul><ul><ul><li>header: “ Заголовок ” , </li></ul></ul><ul><ul><li>teaser: “ Краткий текст ” , </li></ul></ul><ul><ul><li>content: “ Полное содержание ” </li></ul></ul><ul><li>} </li></ul>Система управления контентом
  • 23. Пример <ul><li>Карточка товара </li></ul><ul><li>{ </li></ul><ul><ul><li>type: “good”, </li></ul></ul><ul><ul><li>name: “ Телевизор ” </li></ul></ul><ul><ul><li>price: 30000 , </li></ul></ul><ul><ul><li>features: { </li></ul></ul><ul><ul><ul><li>lcd: 1, </li></ul></ul></ul><ul><ul><ul><li>led: 0 </li></ul></ul></ul><ul><ul><li>}, </li></ul></ul><ul><ul><li>categories: [ “home”, “tv” ] </li></ul></ul><ul><li>} </li></ul>Система управления контентом
  • 24. MongoDB Подробнее
  • 25. Организация данных
  • 26. Типы данных BSON <ul><li>String </li></ul><ul><li>Integer </li></ul><ul><li>Double </li></ul><ul><li>Date </li></ul><ul><li>Byte array ( бинарные данные ) </li></ul><ul><li>Boolean </li></ul><ul><li>Null </li></ul><ul><li>BSON Object </li></ul>
  • 27. Ключ <ul><li>Каждому добавленному документу автоматически предоставляется уникальный ключ </li></ul><ul><li>_ id: ObjectId(“47cc67093475061e3d95369d”) </li></ul>
  • 28. CRUD
  • 29. Create <ul><li>SQL </li></ul><ul><li>CREATE DATABASE vldc; CREATE TABLE vldc.users (`id` INT AUTO_INCREMENT PRIMARY KEY, `first_name` VARCHAR(50), `last_name` VARCHAR(50)); INSERT INTO vldc.users SET first_name = “Oleg”; </li></ul><ul><li>MongoDB </li></ul><ul><li>use vldc db.users.insert({ first_name: “Oleg” }) </li></ul>
  • 30. Read <ul><li>SQL </li></ul><ul><li>SELECT * FROM users SELECT first_name FROM users </li></ul><ul><li>MongoDB </li></ul><ul><li>db.users.find() db.users.find({}, { first_name: 1 }) </li></ul>
  • 31. Read <ul><li>SQL </li></ul><ul><li>SELECT * FROM users WHERE first_name = “Oleg” ORDER BY id DESC LIMIT 1,10 </li></ul><ul><li>MongoDB </li></ul><ul><li>db.users.find({first_name: “Oleg” }).sort({ _id: -1 }).skip(1).limit(10) </li></ul>
  • 32. Операторы условий <ul><li>$gt, $lt, $gte, $lte </li></ul><ul><li>$ne </li></ul><ul><li>$in, $nin </li></ul><ul><li>$mod </li></ul><ul><li>$all </li></ul><ul><li>$size </li></ul><ul><li>$exists </li></ul><ul><li>$type </li></ul><ul><li>$not </li></ul><ul><li>$where </li></ul>
  • 33. Update
  • 34. Операторы модификации <ul><li>$set </li></ul><ul><li>$unset </li></ul><ul><li>$inc </li></ul><ul><li>$push </li></ul><ul><li>$pushAll </li></ul><ul><li>$addToSet </li></ul><ul><li>$pop </li></ul><ul><li>$pull </li></ul><ul><li>$pullAll </li></ul>
  • 35. Delete <ul><li>SQL </li></ul><ul><li>DELETE FROM users WHERE id = 1 DELETE FROM users WHERE first_name = “Oleg” </li></ul><ul><li>MongoDB </li></ul><ul><li>db.users.remove({ _id: ObjectId(“4df8fb81ed4cadd6271c0000”) }) db.users.remove({ first_name: “Oleg”}) </li></ul>
  • 36. Создание индексов <ul><li>SQL </li></ul><ul><li>ALTER TABLE `users` ADD INDEX (`first_name`) </li></ul><ul><li>MongoDB </li></ul><ul><li>db.users.ensureIndex({ first_name: 1 }) // по возрастанию db.users.ensureIndex({ first_name: -1 }) // по убыванию </li></ul>
  • 37. Гео-индекс <ul><li>MongoDB </li></ul><ul><li>db.places.ensureIndex({ location: “2d” } </li></ul><ul><li>Поиск при помощи операторов </li></ul><ul><li>$near – поиск объектов с сортировкой, самые близкие - первые </li></ul><ul><li>$box – поиск объектов в заданном квадрате </li></ul><ul><li>$center – поиск объектов в заданном радиусе </li></ul>
  • 38. Спасибо! Ответы на вопросы

×