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

DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

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

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

[email protected]

bug0r

Page 2: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Что это?

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

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

• Бесплатная

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

Page 3: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

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

Page 4: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

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

Page 5: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Что умеет?

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

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

Map-Reduce

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

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

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

Page 6: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

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

BSON (binary serialized JSON) schemaless

Page 7: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

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

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: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Индексы

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

• На одно поле

• Составной

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

• Sparse индекс

• На массив

• Геоиндекс

Page 9: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Что не умеет?

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

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

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

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

Page 10: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Репликация

Page 11: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Перевыборы

Page 12: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Перевыборы

Page 13: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Шардинг

Page 14: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

Про скорость

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

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

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

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

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

Page 15: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

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

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

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

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

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

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

Page 16: DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

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

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

[email protected]

bug0r