25
Антон Фролов [email protected] Skype: a.f.r.o.l.o.v.

MongoDB первые впечатления

  • Upload
    fudz1k

  • View
    2.583

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: MongoDB первые впечатления

Антон Фролов[email protected]: a.f.r.o.l.o.v.

Page 2: MongoDB первые впечатления

NoSQL (not only)!?!?

• Первое появление (BigTable, Cassandra…)• Популяризация• Конференции, семинары…

Page 3: MongoDB первые впечатления

Название Распределенность Модель данных Хранение данных

Amazon Dynamo + Key-value Pluggable model

Amazon S3 + Key-value -

Scalaris + Key-value Memory

Voldemort + Key-value Disk

CouchDB + Document store Disk

Riak + Document store Disk

MongoDB + Document store Disk

BigTable + Column-Store Configurable

Cassandra + Column-Store Configurable

HyperTable + Column-Store Configurable

Hbase + Column-Store Configurable

Redis - Key-value Memory

MemcacheDB - Key-value Berkeley DB

Page 4: MongoDB первые впечатления

Почему MongoDB?

1. Масштабируемость (data sharding)2. Schema-less данные3. Производительность4. Быстрый поиск по индексу5. MapReduce6. Запросы в стиле JSON

Page 5: MongoDB первые впечатления

Memcached vs MongoDB

• Механизм хранения данных• Перезагрузка memcached• Сброс кеша• Размер объекта 4 Mb > 1 Mb

Пост (на блоге)

Посты на главной

Популярные посты

Посты в RSS

main_posts_key popular_posts_key

rss_posts_key

Page 6: MongoDB первые впечатления

Репликация данных

• Master-slave replication• Replica set

Page 7: MongoDB первые впечатления

Consistent hashingКонсистентные хэши

Server 0

Server 1

Server 2

Server 3

Hash функция: значение % 4

1,2,3,4,5,6,7…10,11,12,13

3

1. Набор целых чисел 0 – 2^32 закручиваем в ось

2. Каждому серверу сопоставляется целое число на кольце

3. Ключ хэшируется в число в том же диапазоне

Page 8: MongoDB первые впечатления

Архитектура масштабирования данных

Page 9: MongoDB первые впечатления

Back up

• Fsync, Write Lock and Backup• Shutdown and Backup• Exports (mongodump.exe)• Slave Backup

Page 10: MongoDB первые впечатления

Формат хранения данных – документно-ориентированная база данных

• База данных– Коллекция• Документ

» Ссылка на другой документ» Id» Простыя поля» Массивы» Другие объекты

B

MongoDB SQL Server

База данных База данных

Коллекция Таблица

Документ Запись(строка)

Page 11: MongoDB первые впечатления

Вставка данныхНа входеvar person = {

name: “Anton”,surname: “Frolov”,isUneta: 1,hands: [“left”, “right”],mobile: { name: “nokia”, color: “red”, weight: 100 }

}

На выходеvar person = {

_id: ObjectId("4caf6f41b12e0000000007eb"),name: “Anton”,surname: “Frolov”,isUneta: 1,hands: [“left”, “right”],mobile: { name: “nokia”, color: “red”, weight: 100 }

}

ObjectId – уникальный идентификатор:1). Если не указывать явно, то генерируется значение размером 12 байт2). Если явно указать поле _id, то его значение сохранится

Page 12: MongoDB первые впечатления

Установка• Установить можно двумя способами:

• Windows service• Запуск exe файла – работающий процесс

• Строки соединения:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/database]

http://localhost:28017

Mongo.exe

Др. приложения

.net client

Mongod.exe

Page 13: MongoDB первые впечатления

Первое приложения для MongoDB

Драйвера для C# .net: simple-mongodb, csharp-mongodb, NoRM

Page 14: MongoDB первые впечатления

Индексы в MongoDB

Индексы реализованы с помощью B-treeВсегда создается индекс для _id

Виды индексов: Простые индексы

Индексы для встроенных документов(embedded)

Документы в качестве индексов

Покрывающий индекс

Page 15: MongoDB первые впечатления

Полнотекстовый индекс

Multikeys feature (индексирует все значения в массиве)Пример для поиска по тегам:

Пример поиска по тексту:

Вывод: реализации полнотекстового индекса, которая могла бы применяться в качестве готового решения, нет.

Page 16: MongoDB первые впечатления

Снова индексы

Уникальные индексы:

Создание индекса блокирует работу базы данных, если не указать доп. параметр background:

Удаление индексов:

Удаление определенных индексов:

Page 17: MongoDB первые впечатления

Команды

Команды - специальные операции по работе с базой данных.

Скидывание файлов на диск(flush)

Page 18: MongoDB первые впечатления

Профилирование системы

Page 19: MongoDB первые впечатления

http://localhost:27017

Page 20: MongoDB первые впечатления

mongostat.exe

inserts/s - # количество вставок в секунду query/s - # количество запросов в секунду update/s - # количество обновлений в секунду delete/s - # количество удалений command/s - # количество команд в секунду flushes/s - # количество скидываний файлов в секунду mapped - данных, замапленых в память

Page 21: MongoDB первые впечатления

db.serverStatus()

• globalLock – время блокирования• mem – количество занятой памяти в

мегабайтах• connections – кол-во соединений• backgroundFlushing – информация о

скидывании файлов на диск• opcounters – информация об операциях

Page 22: MongoDB первые впечатления

MapReduce

• Map – обработка информации и формирование пары ключ-значение

• Reduce – собирает промежуточные значения, обрабатывает и выводит результат

Page 23: MongoDB первые впечатления
Page 24: MongoDB первые впечатления

Заключение

Не следует бояться использовать новые технологии!

Преимущества MongoDB:– Горизонтальное масштабирование– Репликация– Производительность

Page 25: MongoDB первые впечатления

Спасибо за внимание!

http://www.mongodb.org – официальный сайт mongodbhttp://groups.google.com/group/mongodb-user - google usergrouphttp://blog.mongodb.org/ - блог компании mongodb