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

16
Что это? Как готовить? С чем едят? Тимофей Миронов mironov@timeliner.ru bug0r

description

Краткий обзор о возможностях MongoDB. Позиционирование среди других СУБД. Репликация. Шардинг.

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

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

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

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

[email protected]

bug0r

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

Что это?

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

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

• Бесплатная

• Стартап – 10Gen (Seqoia, Flybridge)

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

Кто использует?

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

Позиционирование

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

Что умеет?

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

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

Map-Reduce

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

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

Геоданные Геоиндекс

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

Чем оперируем?

BSON (binary serialized JSON) schemaless

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

Пример синтакиса

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)

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

Индексы

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

• На одно поле

• Составной

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

• Sparse индекс

• На массив

• Геоиндекс

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

Что не умеет?

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

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

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

Базы более 2ГБ под Win32 x64

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

Репликация

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

Перевыборы

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

Перевыборы

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

Шардинг

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

Про скорость

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

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

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

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

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

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

Личные впечатления

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

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

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

Головной боли на несколько порядков

меньше, чем с MSSQL.

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

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

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

[email protected]

bug0r