Базы данных/Лабораторная работа 5 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Моделирование данных в 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:

1-flatmodel.gif

Индексы

В предлагаемом дампе уже есть некоторые важные индексы, но в ходе выполнения заданий могут понадобиться еще.

Просмотр существующих индексов в коллекции:

 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" } )  // хэш-индексы


Дополнительно

Язык запросов MongoDB

Базовые операции

Aggregation Framework

Репликации MongoDB

Принцип работы репликаций в MongoDB

Конфигурация набора реплик

Сценарий отказа мастер-узла

Стартовый скрипт инициализации сбоя во время работы

Дополнительно

Задания на защиту

  • Составить запросы с агрегацией:
    • Для каждого года из первой декады XXI века посчитать количество снятых фильмов.
    • Выбрать топ-10 наиболее популярных ключевых слов для фильмов заданной страны.
  • Написать скрипт на bash или любом другом скриптовом языке, который запускает сервер MongoDB в режиме реплики, начинает интенсивно изменять данные, определяет мастер-узел, убивает процесс мастер-узла, после этого заканчивает изменения данных и проверяет целостность данных.

Защита лабораторной работы

  • Показать и выполнить запрос с агрегацией, объяснить структуру запроса
  • Продемонстрировать работу скрипта инициализации сбоя во время работы и объяснить, что происходит с репликами MongoDB