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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

MongoDB basics in Russian

5,773
views

Published on

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

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

Published in: Technology

0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

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