Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,214 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

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 />

×