Базы данных/Лабораторная работа 5 — различия между версиями
Материал из Wiki - Факультет компьютерных наук
Ivsavin (обсуждение | вклад) |
Ivsavin (обсуждение | вклад) (→Моделирование данных в MongoDB) |
||
Строка 10: | Строка 10: | ||
Для импорта IMDb в MongoDB уже есть готовый скрипт, поэтому вам достаточно импортировать дамп базы (ссылки будут позже). | Для импорта IMDb в MongoDB уже есть готовый скрипт, поэтому вам достаточно импортировать дамп базы (ссылки будут позже). | ||
− | Схема модели данных в MongoDB | + | Схема модели данных в MongoDB: |
https://www.packtpub.com/sites/default/files/new_blog_images/147/1-flatmodel.gif | https://www.packtpub.com/sites/default/files/new_blog_images/147/1-flatmodel.gif | ||
− | Подробное описание скрипта и модели данных: https://www.packtpub.com/books/content/mongo-goes-to-the-movies | + | === Индексы === |
+ | |||
+ | В предлагаемом дампе уже есть некоторые важные индексы, но в ходе выполнения заданий могут понадобиться еще. | ||
+ | |||
+ | Просмотр существующих индексов в коллекции: | ||
+ | |||
+ | db.collection_name.getIndexes() | ||
+ | |||
+ | Функция просмотра всех индексов для всех коллекций: | ||
+ | |||
+ | db.getCollectionNames().forEach(function(collection) { | ||
+ | indexes = db[collection].getIndexes(); | ||
+ | print("Indexes for " + collection + ":"); | ||
+ | printjson(indexes); | ||
+ | }); | ||
+ | |||
+ | Создание индексов: | ||
+ | |||
+ | db.collection_name.createIndex( { field_name: 1 } ) | ||
+ | db.collection_name.createIndex( { field_name: "hashed" } ) // хэш-индексы | ||
+ | |||
+ | |||
+ | === Дополнительно === | ||
+ | * Подробное описание скрипта и модели данных: https://www.packtpub.com/books/content/mongo-goes-to-the-movies | ||
== Язык запросов MongoDB == | == Язык запросов MongoDB == |
Версия 11:16, 3 июня 2016
Задачи лабораторной работы:
- Установить MongoDB
- Рассмотреть различия в моделировании данных для реляционных БД и документоориентированных.
- Попрактиковаться в составлении запросов к MongoDB: добавление, обновление, селекция, фильтрация, агрегация.
- Настроить репликацию данных, инициировать отключение мастер-узла в процессе интенсивного обновления данных, проанализировать действия сервера и проверить целостность измененных данных.
Содержание
Установка MongoDB
Моделирование данных в MongoDB
Для импорта IMDb в MongoDB уже есть готовый скрипт, поэтому вам достаточно импортировать дамп базы (ссылки будут позже).
Схема модели данных в MongoDB:
Индексы
В предлагаемом дампе уже есть некоторые важные индексы, но в ходе выполнения заданий могут понадобиться еще.
Просмотр существующих индексов в коллекции:
db.collection_name.getIndexes()
Функция просмотра всех индексов для всех коллекций:
db.getCollectionNames().forEach(function(collection) { indexes = db[collection].getIndexes(); print("Indexes for " + collection + ":"); printjson(indexes); });
Создание индексов:
db.collection_name.createIndex( { field_name: 1 } ) db.collection_name.createIndex( { field_name: "hashed" } ) // хэш-индексы
Дополнительно
- Подробное описание скрипта и модели данных: https://www.packtpub.com/books/content/mongo-goes-to-the-movies
Язык запросов MongoDB
Базовые операции
Aggregation Framework
Репликации MongoDB
Принцип работы репликаций в MongoDB
Конфигурация набора реплик
Сценарий отказа мастер-узла
Стартовый скрипт инициализации сбоя во время работы
Дополнительно
Задания на защиту
- Составить запросы с агрегацией:
- Для каждого года из первой декады XXI века посчитать количество снятых фильмов.
- Выбрать топ-10 наиболее популярных ключевых слов для фильмов заданной страны.
- Написать скрипт на bash или любом другом скриптовом языке, который запускает сервер MongoDB в режиме реплики, начинает интенсивно изменять данные, определяет мастер-узел, убивает процесс мастер-узла, после этого заканчивает изменения данных и проверяет целостность данных.
Защита лабораторной работы
- Показать и выполнить запрос с агрегацией, объяснить структуру запроса
- Продемонстрировать работу скрипта инициализации сбоя во время работы и объяснить, что происходит с репликами MongoDB