introduction to mongodb

31
MongoDB Огиенко Юрий linkedin.com/in/ogiienko Zend_Coffee&Code #4 Июль, 2011

Upload: iurii-ogiienko

Post on 14-Jan-2015

1.662 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Introduction to MongoDB

 MongoDB

Огиенко Юрийlinkedin.com/in/ogiienkoZend_Coffee&Code #4

Июль, 2011

Page 2: Introduction to MongoDB

Что такое mongoDB ?СУБД:

• Open source

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

• С гибкой схемой данных

• Высокопроизводительная

• Написаная на C++

Page 3: Introduction to MongoDB

Pros/Cons• Нет JOIN• Нет сложных транзакций• Горизонтальное масштабирование• Индексы, вторичные индексы• Репликация, отказоустойчивость• Шардинг из коробки• Документная структура• Встроенный язык - javascript• MMAP • Preallocation (open files limit)

Page 4: Introduction to MongoDB

Коллекции документовБаза данных - база данных Таблица - КоллекцияСтрока - Документ

Документ это BSON = бинарному JSON

Процедуры на JavaScript SpiderMonkey (V8 в будущем)

Page 5: Introduction to MongoDB

Типы данных1. BSON типы данных        * целочисленные, с плавающей запятой        * Unicode строки        * бинарные данные        * булевые данные        * массивы        * timstamp и UTC datetime        * http://bsonspec.org/#/specification

2. typeof и instanceof

3. Используя PHP и следим за приведениями.

Page 6: Introduction to MongoDB

Отсутствие схемы данныхХраним только необходимые данные:

Ни каких больше миграций и блокирующих ALTER TABLE

Page 7: Introduction to MongoDB

Динамические запросы:Поддерживается все обычные фишки SQL (CRUD):

• insert/save• find• update• remove

Нестандартные:

• findAndModify• атомарные операции• mapReduce• GridFS

Page 8: Introduction to MongoDB

Поиск  - find (SQL SELECT)Поиск документов в колекции. При поиске возвращается cursor

Page 9: Introduction to MongoDB

Поиск  - limit, count, sortПолучив курсор можно над ним поколдовать:

Page 10: Introduction to MongoDB

Вставка - insert, saveВставляем обычный JSON объект.Второй параметр safe - гарантирует запись на диск

Ограничение на документ - 4mbСкоро будет 16mb

Максимум 24000 коллекций

Page 11: Introduction to MongoDB

Скорость вставки по отношению к размеру блока

записи 1.5 mb         ~80 insert/sec              ~120 mb/sec

записи 0.5 mb         ~ 300 insert/sec           ~150 mb/sec

записи 0.03 mb       ~ 3500 ins/sec             ~105 mb/sec

Следим за пропускной способностью канала!

Page 12: Introduction to MongoDB

Удаление - removeБыстрее всего удалять используя _id документа каторый у вас в памяти.

Можно удалять передав полоностью документ в фильтр, но это не эффективно.

Page 13: Introduction to MongoDB

Обновление - updateСамая мощная операция.

Page 14: Introduction to MongoDB

Плюшки обновленияДанные опарации позволяют менять структуру документа

Page 15: Introduction to MongoDB

ИндексыСоздание, удаление индексов

Page 16: Introduction to MongoDB

еще индексыБлокировка при создании индекса, память и переиндексация

Page 17: Introduction to MongoDB

Двумерные индексыДвумерные индексы позволяют искать по координатам• один индекс на колекцию• несколько локейшинов в документе

Page 18: Introduction to MongoDB

Еще!Двумерные индексы позволяют искать по разному

Page 19: Introduction to MongoDB

Скорость вставки по отношению к числу индексов

1 индекс                 ~4000 insert/sec             20% lock

8 индексов             ~ 3500 insert/sec            40% lock

20 индексов           ~ 3000 insert/sec            70% lock

Используем:db.table.find(col1:"value").sort(col3: -1).limit(20).explain()Следим за "nscanned" и "indexBounds"

Page 20: Introduction to MongoDB

Профилирование запросовПрофилирование nscanned, millis

Page 21: Introduction to MongoDB

Индексы в память

Page 22: Introduction to MongoDB

MapReduce - map and reduce

Page 23: Introduction to MongoDB

MapReduce - finilize and output

Page 24: Introduction to MongoDB

ReplicaSetСет реплицируеммых серверов.

1. Должна содержать минимум 3 ноды, для обеспечения отказоустойчивости.

2. Пишем на одну, а читаем со всех

3. Система автоматически преключается и выбирает мастера в случае если текущий упал.

4. В момент падаения вы теряете данные которые неуспели реплицироватся на слейвы.

Page 25: Introduction to MongoDB

ReplicaSet 1.          2.

3.       4.

Page 26: Introduction to MongoDB

ShardingИдеальный шардинг

Page 27: Introduction to MongoDB

Мониторингmongostat - основная утилита профилирования

\

insert, query, update, delete - число запросов по нодамgetmore - выборка по курсоруcommand - число комманд (gelLastError)flushes - записи на диск, по умолчанию 1 раз в 60 сек.

Page 28: Introduction to MongoDB

Мониторинг

mapped - объем отображаемой виртуальной памяти в РАМvsize - память виртуальная, отведенная под колекцииfaults - промахи, когда требуемая страница находится на     HDD и ее надо загрузитьlocked - степень блокировки при записи, обновлении, индексированииidx miss - запросы которые не используют индекс

Page 29: Introduction to MongoDB

Мониторинг\\\\

netIn, netOut - объем передаваемых данных по сетиconn - число подключенийqr, qw, ar, aw - очередь запросов на чтение/запись

Page 30: Introduction to MongoDB

Общее состояние

Page 31: Introduction to MongoDB

Инсталяция и поддержка

1. Установка mongoDB

2. Установка драйвера

3. mongod.lock - при некорректном падении базы, необходимо удалить lock файл и выполнить комманду repair