Upload
fudz1k
View
2.583
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Антон Фролов[email protected]: a.f.r.o.l.o.v.
NoSQL (not only)!?!?
• Первое появление (BigTable, Cassandra…)• Популяризация• Конференции, семинары…
Название Распределенность Модель данных Хранение данных
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
Почему MongoDB?
1. Масштабируемость (data sharding)2. Schema-less данные3. Производительность4. Быстрый поиск по индексу5. MapReduce6. Запросы в стиле JSON
Memcached vs MongoDB
• Механизм хранения данных• Перезагрузка memcached• Сброс кеша• Размер объекта 4 Mb > 1 Mb
Пост (на блоге)
Посты на главной
Популярные посты
Посты в RSS
main_posts_key popular_posts_key
rss_posts_key
Репликация данных
• Master-slave replication• Replica set
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. Ключ хэшируется в число в том же диапазоне
Архитектура масштабирования данных
Back up
• Fsync, Write Lock and Backup• Shutdown and Backup• Exports (mongodump.exe)• Slave Backup
Формат хранения данных – документно-ориентированная база данных
• База данных– Коллекция• Документ
» Ссылка на другой документ» Id» Простыя поля» Массивы» Другие объекты
B
MongoDB SQL Server
База данных База данных
Коллекция Таблица
Документ Запись(строка)
Вставка данныхНа входе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, то его значение сохранится
Установка• Установить можно двумя способами:
• Windows service• Запуск exe файла – работающий процесс
• Строки соединения:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/database]
http://localhost:28017
Mongo.exe
Др. приложения
.net client
Mongod.exe
Первое приложения для MongoDB
Драйвера для C# .net: simple-mongodb, csharp-mongodb, NoRM
Индексы в MongoDB
Индексы реализованы с помощью B-treeВсегда создается индекс для _id
Виды индексов: Простые индексы
Индексы для встроенных документов(embedded)
Документы в качестве индексов
Покрывающий индекс
Полнотекстовый индекс
Multikeys feature (индексирует все значения в массиве)Пример для поиска по тегам:
Пример поиска по тексту:
Вывод: реализации полнотекстового индекса, которая могла бы применяться в качестве готового решения, нет.
Снова индексы
Уникальные индексы:
Создание индекса блокирует работу базы данных, если не указать доп. параметр background:
Удаление индексов:
Удаление определенных индексов:
Команды
Команды - специальные операции по работе с базой данных.
Скидывание файлов на диск(flush)
Профилирование системы
http://localhost:27017
mongostat.exe
inserts/s - # количество вставок в секунду query/s - # количество запросов в секунду update/s - # количество обновлений в секунду delete/s - # количество удалений command/s - # количество команд в секунду flushes/s - # количество скидываний файлов в секунду mapped - данных, замапленых в память
db.serverStatus()
• globalLock – время блокирования• mem – количество занятой памяти в
мегабайтах• connections – кол-во соединений• backgroundFlushing – информация о
скидывании файлов на диск• opcounters – информация об операциях
MapReduce
• Map – обработка информации и формирование пары ключ-значение
• Reduce – собирает промежуточные значения, обрабатывает и выводит результат
Заключение
Не следует бояться использовать новые технологии!
Преимущества MongoDB:– Горизонтальное масштабирование– Репликация– Производительность
Спасибо за внимание!
http://www.mongodb.org – официальный сайт mongodbhttp://groups.google.com/group/mongodb-user - google usergrouphttp://blog.mongodb.org/ - блог компании mongodb