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

3,079 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,079
On SlideShare
0
From Embeds
0
Number of Embeds
60
Actions
Shares
0
Downloads
37
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Антон Фролов<br />anton.frolov@dctua.com<br />Skype: a.f.r.o.l.o.v.<br />
  2. 2. NoSQL (not only)!?!?<br />Первое появление (BigTable, Cassandra…)<br />Популяризация<br />Конференции, семинары…<br />
  3. 3.
  4. 4. Почему MongoDB?<br />Масштабируемость (data sharding)<br />Schema-less данные<br />Производительность<br />Быстрый поиск по индексу<br />MapReduce<br />Запросы в стиле JSON<br />
  5. 5. Memcached vs MongoDB<br />Механизм хранения данных<br />Перезагрузка memcached<br />Сброс кеша<br />Размер объекта 4 Mb > 1 Mb<br />main_posts_key<br />popular_posts_key<br />Посты на главной<br />Популярные посты<br />Пост (на блоге)<br />rss_posts_key<br />Посты в RSS<br />
  6. 6. Репликация данных<br />Master-slave replication<br />Replica set<br />
  7. 7. Consistent hashing<br />Консистентные хэши<br />Server 0<br />Server 1<br />Server 2<br />Server 3<br />3<br />Hash функция: значение % 4<br />1,2,3,4,5,6,7…10,11,12,13<br />Набор целых чисел 0 – 2^32 закручиваем в ось<br />Каждому серверу сопоставляется целое число на кольце<br />Ключ хэшируется в число в том же диапазоне<br />
  8. 8. Архитектура масштабирования данных<br />
  9. 9. Back up<br />Fsync, Write Lock and Backup<br />Shutdown and Backup<br />Exports (mongodump.exe)<br />Slave Backup<br />
  10. 10. Формат хранения данных – документно-ориентированная база данных<br />База данных<br />Коллекция<br />Документ<br />Ссылка на другой документ<br />Id<br />Простыя поля<br />Массивы<br />Другие объекты<br />B<br />
  11. 11. Вставка данных<br />На входе<br />var person = <br />{<br /> name: “Anton”,<br /> surname: “Frolov”,<br /> isUneta: 1,<br /> hands: [“left”, “right”],<br /> mobile: { name: “nokia”, color: “red”, weight: 100 }<br />}<br />На выходе<br />var person = <br />{<br />_id: ObjectId("4caf6f41b12e0000000007eb"),<br /> name: “Anton”,<br /> surname: “Frolov”,<br /> isUneta: 1,<br /> hands: [“left”, “right”],<br /> mobile: { name: “nokia”, color: “red”, weight: 100 }<br />}<br />ObjectId – уникальный идентификатор:<br />1). Если не указывать явно, то генерируется значение размером 12 байт<br />2). Если явно указать поле _id,то его значение сохранится<br />
  12. 12. Установка<br />Установить можно двумя способами:<br />Windows service<br />Запуск exe файла – работающий процесс<br />Строки соединения: <br />mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/database]<br />.net client<br />Mongod.exe<br />http://localhost:28017<br />Mongo.exe<br />Др. приложения<br />
  13. 13. Первое приложения для MongoDB<br />Драйвера для C# .net: simple-mongodb, csharp-mongodb, NoRM<br />
  14. 14. Индексы в MongoDB<br />Индексы реализованы с помощью B-tree<br />Всегда создается индекс для _id<br />Виды индексов:<br /><ul><li>Простые индексы
  15. 15. Индексы для встроенных документов(embedded)
  16. 16. Документы в качестве индексов
  17. 17. Покрывающий индекс</li></li></ul><li>Полнотекстовый индекс<br />Multikeys feature(индексирует все значения в массиве)<br />Пример для поиска по тегам:<br />Пример поиска по тексту:<br />Вывод: реализации полнотекстового индекса, которая могла бы применяться в качестве готового решения, нет.<br />
  18. 18. Снова индексы<br />Уникальные индексы:<br />Создание индекса блокирует работу базы данных, если не указать доп. параметрbackground:<br />Удаление индексов:<br /> Удаление определенных индексов:<br />
  19. 19. Команды<br />Команды - специальные операции по работе с базой данных. <br />Скидывание файлов на диск(flush)<br />
  20. 20. Профилирование системы<br />
  21. 21. http://localhost:27017<br />
  22. 22. mongostat.exe<br />inserts/s - # количество вставок в секунду<br />query/s - # количество запросов в секунду<br />update/s - # количество обновлений в секунду<br />delete/s - # количество удалений<br />command/s - # количество команд в секунду<br />flushes/s - # количество скидываний файлов в секунду<br />mapped - данных, замапленых в память<br />
  23. 23. db.serverStatus()<br />globalLock – время блокирования<br />mem – количество занятой памяти в мегабайтах<br />connections – кол-во соединений<br />backgroundFlushing – информация о скидывании файлов на диск<br />opcounters – информация об операциях<br />
  24. 24. MapReduce<br />Map – обработка информации и формирование пары ключ-значение<br />Reduce – собирает промежуточные значения, обрабатывает и выводит результат<br />
  25. 25.
  26. 26. Заключение<br /> Не следует бояться использовать новые технологии!<br /> Преимущества MongoDB:<br />Горизонтальное масштабирование<br />Репликация<br />Производительность<br />
  27. 27. Спасибо за внимание!<br />http://www.mongodb.org – официальный сайт mongodb<br />http://groups.google.com/group/mongodb-user - google usergroup<br />http://blog.mongodb.org/ - блогкомпании mongodb<br />

×