MongoDB basics in Russian
Upcoming SlideShare
Loading in...5
×
 

MongoDB basics in Russian

on

  • 6,045 views

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

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

Statistics

Views

Total Views
6,045
Slideshare-icon Views on SlideShare
6,045
Embed Views
0

Actions

Likes
11
Downloads
57
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    MongoDB basics in Russian MongoDB basics in Russian Presentation Transcript

    • mongodb.org NoSQL база данных
    • Олег Качан Независимый разработчик twitter.com/ maximalno
    • NoSQL = Not only SQL
    • NoSQL базы данных
      • Key-value (Redis, Dynamo, MemcacheDB, Voldemort)
      • Document (MongoDB, CouchDB, Riak)
      • Wide Column (BigTable, Cassandra, HBase)
      • Graph (Neo4j, InfiniteGraph)
    • MongoDB
      • Быстрая база данных ( C++ )
      • Устоявшийся проект, выпущена версия 2 .0
      • Open-source , но разрабатывается и поддерживается компанией 10gen
      • Одно из наиболее универсальных решений
    • Поддержка 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 и т.д.
    • Кто использует MongoDB? Craigslist
    • Кто использует MongoDB?
    • @hipsterhacker If it's not MongoDB, it's the WrongoDB Retweeted by @bowermanandrew and 100+ others
    • MongoDB Документная база данных
    • Каждому ключу соответствует документ
      • {
        • first_name: “Oleg”,
        • last_name: “Kachan”,
        • contacts: {
          • twitter: “maximalno”,
          • email: “683009@gmail.com”
        • }, skills: [“php”, “node.js”, “mongodb”]
      • }
      _id: ObjectId(“ 4daf… ” ) =>
    • Организация данных SQL MongoDB База данных База данных Таблица Коллекция Строка/запись Документ
    • Измение мышление
      • Нет JOIN
      • Избыточность данных вместо нормализации
      • Контроль данных из приложения, а не из базы
      Навыки работы с SQL базами не подходят для NoSQL
    • MongoDB Чем лучше?
    • Сравнение с другими решениями Функциональность
      • Memcached
      • Key/value
      • MongoDB
      • RDBMS
    • Преимущества
      • Документно-ориентированная база данных
      • Быстрое чтение и особенно запись
      • Широкая по сравнению с другими NoSQL функциональность
      • Масштабирование из коробки
        • По чтению ( Master/slave, Replica sets )
        • По записи ( Sharding )
    • Но зачем? О бласти применения
    • MongoDB
      • Не подходит :
      • если вы используете JOIN’ ы
      • если вам необходимы транзакции
      • Подходит :
      • хранение разнородных данных
      • хранение геоданных
      • хранение логов и статистики
    • Пример
      • HTML- страница
      • Н овость
      • К арточка товара
      Система управления контентом
    • Пример
      • SQL
      • 3 таблицы : pages, news, goods
      • MongoDB
      • 1 коллекция : documents
      Система управления контентом
    • Пример
      • Страница
      • {
        • type: “page”,
        • content: “ Текст на странице ”
      • }
      Система управления контентом
    • Пример
      • Новость
      • {
        • type: “news”,
        • date: new Date(),
        • header: “ Заголовок ” ,
        • teaser: “ Краткий текст ” ,
        • content: “ Полное содержание ”
      • }
      Система управления контентом
    • Пример
      • Карточка товара
      • {
        • type: “good”,
        • name: “ Телевизор ”
        • price: 30000 ,
        • features: {
          • lcd: 1,
          • led: 0
        • },
        • categories: [ “home”, “tv” ]
      • }
      Система управления контентом
    • MongoDB Подробнее
    • Организация данных
    • Типы данных BSON
      • String
      • Integer
      • Double
      • Date
      • Byte array ( бинарные данные )
      • Boolean
      • Null
      • BSON Object
    • Ключ
      • Каждому добавленному документу автоматически предоставляется уникальный ключ
      • _ id: ObjectId(“47cc67093475061e3d95369d”)
    • CRUD
    • 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” })
    • Read
      • SQL
      • SELECT * FROM users SELECT first_name FROM users
      • MongoDB
      • db.users.find() db.users.find({}, { first_name: 1 })
    • 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)
    • Операторы условий
      • $gt, $lt, $gte, $lte
      • $ne
      • $in, $nin
      • $mod
      • $all
      • $size
      • $exists
      • $type
      • $not
      • $where
    • Update
    • Операторы модификации
      • $set
      • $unset
      • $inc
      • $push
      • $pushAll
      • $addToSet
      • $pop
      • $pull
      • $pullAll
    • 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”})
    • Создание индексов
      • SQL
      • ALTER TABLE `users` ADD INDEX (`first_name`)
      • MongoDB
      • db.users.ensureIndex({ first_name: 1 }) // по возрастанию db.users.ensureIndex({ first_name: -1 }) // по убыванию
    • Гео-индекс
      • MongoDB
      • db.places.ensureIndex({ location: “2d” }
      • Поиск при помощи операторов
      • $near – поиск объектов с сортировкой, самые близкие - первые
      • $box – поиск объектов в заданном квадрате
      • $center – поиск объектов в заданном радиусе
    • Спасибо! Ответы на вопросы