Что это? Как готовить? С чем едят?



                      Тимофей Миронов

                        mironov@timeliner.ru
                                      bug0r
Что это?



• Документ-ориентированная NoSQL

• Масштабируемая и отказоустойчивая

• Бесплатная

• Стартап – 10Gen (Seqoia, Flybridge)
Кто использует?
Позиционирование
Что умеет?



Отказоустойчивость         Репликация

Масштабирование            Шардинг

                           Map-Reduce

Большие объекты            GridFS

Серверная логика           JavaScript

Геоданные                  Геоиндекс
Чем оперируем?


BSON (binary serialized JSON)    schemaless
Пример синтакиса
SELECT a,b FROM users WHERE age=33
             db.users.find({age:33},{a:1,b:1})


SELECT * FROM users WHERE age>33
             db.users.find({age:{$gt:33}})


SELECT * FROM users WHERE a=1 or b=2
             db.users.find({$or:[{a:1},{b:2}]})


SELECT * FROM users WHERE age=33 ORDER BY name
             db.users.find({age:33}).sort({name:1})


UPDATE users SET a=1 WHERE b='q‘
             db.users.update({b:'q'},{$set:{a:1}},false,true)
Индексы


Обычные B-Tree индексы


    • На одно поле

    • Составной

    • На поля вложенных объектов

    • Sparse индекс

    • На массив

    • Геоиндекс
Что не умеет?



             Не умеет                       Решение

Джоины                         “Embedding” – внедренные объекты


Транзакции                     Атомарный операции
                                              $set, $inc,$push,$pull

Базы более 2ГБ под Win32       x64
Репликация
Перевыборы
Перевыборы
Шардинг
Про скорость

Сравнивать NoSQL разных классов – Ошибка!


Update/Insert        в 3-5 раз быстрее чем MsSQL
                     до 10 раз быстрее чем MySQL


Select               в 1,5 -2 раза быстрее чем MsSQL
                     до 2х раз быстрее чем MySQL


до 10 раз быстрее (MS и My) при чтении без индексов




Вывод: все зависит от задач и контекста!
Личные впечатления



Легкое программирование


Безпроблемная эксплуатация


Отличная производительность


Головной боли на несколько порядков
меньше, чем с MSSQL.
Что это? Как готовить? С чем едят?



                      Тимофей Миронов

                        mironov@timeliner.ru
                                      bug0r

MongoDB. Как готовить, с чем едят?