Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Лабораторная работа № 1

Тема: Распределенные базы данных

Задание

1.  На основе БД, разработанной в рамках курса «Базы данных», создать распределённую базу в двух вариантах:

1) разделив таблицы БД на две группы по какому-либо смысловому признаку. Например, если имеется база данных «Спортивный клуб», то в первую группу можно отнести таблицы, используемые для административной работы: список спортсменов, список тренеров, список баз и т. д., а во вторую группу таблицы для соревнований: график соревнований, участие спортсменов в соревнованиях и т. д.

2) проведя оптимальное размещение таблиц базы по двум узлам. Задачу линейного программирования можно решать любым подходящим алгоритмом с использованием любого существующего ПО. Оптимальное размещение следует рассчитывать, исходя из того, что суммарный объём узлов (b(1) + b(2)) равен 1.5 * суммарный объём всех таблиц.

2.  Реализовать генератор данных больших объемов. С помощью этого генератора заполнить оба варианта разбиения баз данных большим числом данных. Должны быть таблицы, имеющие несколько сотен записей, и таблицы, имеющие несколько тысяч записей. При этом должна сохраняться целостность как локальных БД, так и глобальной распределённой БД.

3.  Оценить эффективность каждого варианта по набору SQL-запросов, имеющемуся в задании. Посчитать время выполнения каждого из запросов к базе данных и суммарное время работы по двум базам для каждого разбиения и сделать выводы.

Пояснения

http://ami. *****/~vms/method3/Method1_pgs. htm - Язык структурных запросов SQL

НЕ нашли? Не то? Что вы ищете?

http://ami. *****/phpPgAdmin - Программа phpPgAdmin

http://ami. *****/~vms/method2m/index. htm (глава 4, задания) - Номера и описания вариантов

Для размещения таблиц использовать базы данных (PostgreSQL): students51 и students52.

Для восстановления Вашей базы и по другим техническим вопросам обращайтесь к Петрову Роману Владимировичу.

Для воссоздания Вашей базы данных на новом рабочем сервере необходимо выполнить команду через терминал (putty):

new_schema схема students51

new_schema схема students52

psql students51 –f dump. sql

В случае, если базы данных имеются у нескольких человек в бригады, то можно взять любую из них. База данных должна состоять не менее, чем из 8 таблиц.

Набор SQL-запросов для оценки эффективности должен состоять не менее, чем из 7-и запросов. Эти 7 запросов должны быть написаны для каждого из двух вариантов разбиения. Из этих 7-и запросов не менее пяти должны быть распределенными, т. е. обращаться сразу к двум базам данных.

Итог работы

Отчёт по лабораторной работе должен включать в себя:

–  титульный лист;

–  описание использованной вами базы с точки зрения предметной области;

–  структура базы данных на языке SQL с указанием имен и типов полей всех таблиц;

–  ER-диаграмма, на которой должны быть показаны все связи между таблицами базы и показаны графически два варианта разбиения базы;

–  количество записей в каждой таблице, сгенерированных вашим генератором;

–  SQL-запросы для обоих вариантов разбиения баз данных;

–  среднее время выполнения запросов (в мс) для обоих разбиений базы данных для каждого запроса и суммарное время выполнения запросов на обоих разбиениях;

–  вывод, объясняющий, почему время работы в одном из двух разбиений оказалось меньшим (большим, равным), чем в другом.

Замечание: текст генератора данных в отчёте можно не приводить.

Критерии оценивания качества работы

1.  Полнота набора SQL-запросов для оценки эффективности:

1 – не менее 7 запросов, из которых не менее 5 распределённых;

0 – не менее 3 запросов, из которых не менее 2 распределённых.

Л. р. не принимается – менее 3 запросов или менее 2 распределённых.

2.  Наличие ER-диаграммы с изображёнными разбиениями таблиц по узлам:

1 – есть;

0 – нет.

3.  Содержание отчёта:

1 – отчёт включает все требуемые разделы;

0 – отчёт включает не все требуемые разделы.

4.  Глубина понимания материала лабораторной работы каждым членом бригады:

1 – быстрые и правильные ответы на все вопросы;

0 – не на все вопросы ответы правильные и быстрые.

Л. р. не принимается – на половину вопросов ответы неправильные.

Выполнение запросов к распределённой базе данных

В PostgreSQL запросы между базами данных реализуются с использованием библиотеки dblink следующим образом:

dblink(text connstr, text sql)

где:

connstr

Cтрока соединения вида:

"dbname=<имя_вашей_базы> user=<ваш_логин> password=<ваш_пароль>"

sql

SQL-выражение, запускаемое на удалённой машине. Например:

"select * from customer"

Пример использования:

select * from ttt. t1, public. dblink('dbname=students52 user=user1 password=password1','select * from t2') as t2(t21 text, t22 text) where t1.t12=t2.t21;

Примечание. Предполагается, что запрос выполняется с базы students51.

Методические указания для поиска оптимального размещения таблиц по узлам

Пусть:

- число узлов в сети

- число таблиц БД

- общее число запросов к БД

- j-ый узел в сети

- l-ая таблица

- объем l-ой таблицы, где - максимальный размер одной строки данных таблицы (в байтах), - число строк l-ой таблицы

- объем памяти узла для размещения таблицы

- i-ый запрос

- объем пересылаемых данных из таблицы при выполнении i-ого запроса. Определим , где - размер одной строки данных (в байтах) таблицы , пересылаемой при выполнении i-ого запроса, - число строк l-ой таблицы

- интенсивность появления i-ого запроса, инициированного из узла

определяется произвольно на основе экспертной оценки пользователя и показывает, как часто запрос i будет вызываться из узла

- интенсивность пересылаемых данных при выполнении i-ого запроса

- целевая функция, которую нужно оптимизировать

При ограничениях:

- каждая таблица может находиться только в одном узле

- суммарный объем таблиц в узле не должен превышать объем узла

Преобразуем целевую функцию:

Первая компонента в последнем равенстве – константа, которая может быть опущена, т. к. нас интересуют только значения переменных.

Для базы данных необходимо составить следующие таблицы значений

Таблица значений

1

1

Таблица значений

1

1

Таблица значений

1

Таблица значений

1