• Like
MongoDB первые впечатления
Upcoming SlideShare
Loading in...5
×
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,546
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
21
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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