Главная страница
Навигация по странице:

  • Лабораторна робота №1. Microsoft SQL Server. Основні пройоми роботи, SQL-запити і представлення. Організація транзакцій.

  • BEGIN TRAN

  • DELETE , UPDATE , SELECT

  • Лабораторна робота №2. Microsoft SQL Server. Збережені процедури, тригери.

  • INSERT/UPDATE/DELETE

  • 3. Web-додаток.

  • 4. Розподілена база даних. Фрагментація БД

  • Лабораторна робота №5. Реплікація БД.

  • НавчальнийПосібникРІАС. Вступ етапи проектування бд


    Скачать 255.69 Kb.
    НазваниеВступ етапи проектування бд
    Дата24.11.2018
    Размер255.69 Kb.
    Формат файлаdocx
    Имя файлаНавчальнийПосібникРІАС.docx
    ТипДокументы
    #57516
    страница2 из 2
    1   2

    Проектування розподіленої бази даних


    При проектування РБД виникають три проблеми:

    Фрагментація даних дозволяє розбити один об’єкт, наприклад таблицю, на декілька фрагментів, які можуть зберігатися на різних вузлах мережі. Існує три типи фрагментації таблиць:

    • горизонтальна фрагментація. При цьому таблиця розбивається на дві або більше таблиць з однаковими полями і унікальними рядками.

    • Вертикальна фрагментація. При цьому таблиця розбивається на дві або більше таблиць унікальними полями за виключенням спільного ключового поля.

    • Змішана фрагментація – являє собою комбінацію горизонтальної і вертикальної фрагментації.

    Приклад, коли необхідна горизонтальна фрагментація.

    Компанія веде БД по клієнтах і має філіали в різних областях, причому керівництву потрібна інформація про всіх клієнтів, а філіалам тільки про локальних клієнтів. Тоді таблиця customer фрагментується по областям.

    Приклад, коли необхідна вертикальна фрагментація.

    Компанія має два підрозділи: відділ обслуговування і відділ прийому платежів, які містяться в різних будинках, яким потрібна інформація тільки по деяким атрибутам таблиці customer . Тоді після вертикальної фрагментації фрагмент відділу обслуговування буде мати атрибути, наприклад, номер клієнта, імя, і адресу, а фрагмент відділу прийому платежів номер клієнта, баланс і рейтинг клієнта.

    Реплікація даних пов'язана із зберіганням копій даних в мережі на декількох вузлах, призначених для операцій з даними. Оскільки копії фрагментів підвищують рівень доступності даних і зменшують рівень відгуку, реплікація допоможе зменшити загальні витрати на комунікації при виконанні запитів.

    Наприклад, можливий сценарій, коли розподілена і реплікована БД розміщена таким чином: фрагмент А1 зберігається на сайтах S1 i S2, а A2 на S2 i S3:



    Можливі три варіанти реплікації БД:

    1. БД повністю реплікована, коли на множині сайтів зберігається декілька копій кожного фрагменту БД. При цьому така БД може бути незручною у використанні через великі накладні витрати.

    2. Частково реплікована БД зберігає на множині сайтів декілька копій деяких фрагментів БД.

    3. Нереплікована БД.

    На реплікацію БД впливають декілька факторів:

    • розмір БД;

    • частота використання БД;

    • витрати , пов'язані із синхронізацією транзакцій при забезпеченні стійкості до відмов, пов'язаної з реплікацією даних.

    Якщо частота звернень до віддалених даних висока, а БД велика, то реплікація даних може зменшити затрати на обробку запитів (зменшити навантаження на мережу і підвищити швидкість обробки запитів).

    Функція реплікації включається в багатьох сучасних СУБД. Наприклад, в СУБД Oracle, так створюється локальна репліка з інформацією про ціни із віддаленої таблиці PRODUCTS:

    CREATE SNAPSHOT PRODPRICE

    AS SELECT MFR_ID, PRODUCT_ID, PRICE

    FROM PRODUCTS@REMOUTE_LINK

    Створюється локальна таблиця PRODPRICE, яка складається із трьох колонок, які задані в інструкції SELECT, що вибирають дані із віддаленої БД. Символи @ REMOUTE_LINK говорить, що таблиця PRODUCTS є віддаленою і доступна через канал зв'язку REMOUTE_LINK. Цей канал створюється і налаштовується адміністратором БД.

    Лабораторна робота №1. Microsoft SQL Server. Основні пройоми роботи, SQL-запити і представлення. Організація транзакцій.

    Завдання на лабораторну роботу.

    Завдання виконується на Microsoft SQL Server. Розробити структуру даних для даного варіанту і привести її у третю нормальну форму. Впровадити створену структуру у вигляді таблиць на сервері.

    Створити індекси пошуку по двом ключовим стовпцям таблиці зв’язку.

    Створити діаграму, яка відображає структуру створеної бази даних і її зв’язки.

    За допомогою програми MS SQL Server Management Studio  виконати з’єднання з сервером, знайти свою базу даних, і заповнити таблиці даними, використовуючи інструкцію INSERT. Провести виправлення деяких рядків, видалити декілька рядків, проглянути результати. 

    Експериментуючи із інструкціями “BEGIN TRAN”, “COMMIT”, “ROLLBACK” упевнитися, що сервер не зберігає результати операцій, якщо не була виконана інструкція “COMMIT”. Використовувати інструкції INSERT, DELETE, UPDATE, SELECT.

    Створити представлення за своїм варіантом за необхідності додавши необхідні дані в базу, якщо потрібно змінивши її структуру. За допомогою інструкції SELECT вивести необхідну інформацію із представлення.


    1. Земельний кадастр (розташування ділянок, їхня якість, вартість, форма власності, власник). Вивід з представлення всіх земельних ділянок площею більше одног гектару. Вартість, власник.

    2. База даних поставок різних товарів від множини постачальників. Одна поставка містить один, або декілька товарів певної кількості. Вивід з представлення всіх поставок з кількістю товарів більше ста одиниць. Повинні повертатися: постачальник, найменування товару, кількість одиниць поставки.

    3. Статті в періодичних виданнях (назви, автори, періодичне видання, місце, обсяг, тема). Вивід з представлення всіх статей даного автора, а також назва, періодичне видання, місце, обсяг.

    4. База даних наявності деякої множини товарів на декількох складах. Вивід з представлення всіх товарів, які є на складах в кількості менше десяти одиниць.

    5. Залізниця (поїзд, пасажир, квиток). Вивід з представлення всіх квитків даного пасажира, тобто який поїзд, дата, час, пункт відправки, пункт призначення.

    6. База даних, яка відображає поточний стан прайс - листа на конкретну дату в конкретній точці продажу. Ціни позицій можуть мінятися в різний час. Структура повинна забезпечувати можливість перегляду цін на будь-яку дату в минулому. Вивід з представлення товарів, ціна на який змінилася після 23 серпня 2009 року. Найменування товарів, координати торгової точки, ціна.

    7. Розклад занять (дні, години, аудиторії, предмети, викладачі, навчальні групи; обмеження для студентів і викладачів). Вивід з представлення всіх викладачів, які ведуть заняття у певній групі, предмети, дні, години, аудиторії.

    8. Навчальний план (викладачі, предмети, види занять, планове й фактичне навантаження). Вивід з представлення всіх викладачів, які мають навантаження більше за 800 годин.

    9. Успішність студентів (заліки, іспити, викладачі, предмети; результати сесії, перевід на наступний курс, відрахування). Вивід з представлення всіх предметів, середнє арифметичне результатів іспитів з яких більше за 85 балів.

    10. База даних студентів і іспитів. Студент може здавати один і той же іспит декілька разів, отримуючи кожен раз оцінку. Викладача враховувати не потрібно. Вивід з представлення студентів, які здали філософію на відмінно. Імена студентів, дати іспитів.

    11. База даних музичних творів, які зберігаються в фонотеці. На одному і тому ж носієві може бути декілька творів, один і той же твір може бути дубльований на різних носіях. Вивід з представлення носіїв, які містять твір «Місячна соната». Всі дані про носій.

    12. База даних авторів і написаних ними книг. У кожної книги один автор і один і той же автор може написати декілька книг, які видаються в різних видавництвах. Вивід з представлення книг, написаних не раніше 2009 року. Назва книги, автор, рік видання.

    13. База даних рахунків на товар. Рахунок має деякий порядковий номер і виставляється на конкретного контрагента, вказується перелік товарів, їх кількостей і цін. Вивід з представлення рахунків, які виставлені пізніше 15 лютого 2005 року.

    14. База даних валют і їх курсів в різних пунктах обміну з вибіркою інформації на будь-яку дату. Курси можуть мінятися незалежно. Вивід з представлення даних про валюту, які змінювались більше ніж на десять пунктів, починаючи з 12 липня 2007 року.

    15. База даних абонентів телефонної мережі і зроблених ними міжміських переговорів з різними населеними пунктами (по кодам). Вивід з представлення даних про розмови з містом Київ (код 033). Дата, абонент, тривалість розмови.

    16. База даних співробітників підприємства і з роблених їм грошових виплат. Виплати співробітникам можуть робитися в різний час і з різних типових приводів. Вивід з представлення відомості про виплату премій за січень 2009 року.

    17. База даних матеріальних засобів і працівників, за якими вони закріплені. Вивід з представлення співробітників, за якими закріплені столи. Дата, прізвище і т. д.


    Лабораторна робота №2. Microsoft SQL Server. Збережені процедури, тригери.

    Завдання на лабораторну роботу.

    Написати і перевірити на практиці збережені процедури згідно зі своїм завданням для таблиць в базі даних. Розробити тригери INSERT/UPDATE/DELETE для перевірки складних обмежень, що накладаються на схему предметної області. Відповісти на питання викладача.

    Зручно спочатку перевірити на практиці сам текст процедури, як послідовності інструкцій в консолі MS SQL Server Management Studio, а потім відіслати її на сервер власне як збережену процедуру.

    Варіанти завдань для збережених процедур (дані передаються в процедуру через параметри).

      1. Додавання ділянки до бази даних.

      2. Додавання поставки до бази даних. Необхідно перевіряти наявність вказаного поставщика і товара в таблицях.

      3. Додавання нової статті до бази даних.

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

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

      6. Формування прайс листа для конкретної точки продажу на конкретну дату.

      7. Пошук всіх груп, які проводять заняття, у даній аудиторії з 8 до 12 годин.

      8. Пошук предметів, які мають іспити.

      9. Пошук студентів, які мають більше ніж три заборгованості.

      10. Формування відомості студентів по групам.

      11. Пошук всіх носіїв, які мають в назві твору вказане слово.

      12. Пошук вказаної книги за роком випуску і якомусь слову в назві.

      13. Видача рахунку за його номером.

      14. Підрахунок сумарної зміни курсу заданої валюти за заданий період.

      15. Формування рахунку конкретного абонента за період. В рахунку повинні міститись коди віддалених абонентів, дати і тривалість розмов.

      16. Вивід відомості по конкретному типу виплати за конкретне число.

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


    3. Web-додаток.

    Робота виконується у середовищі веб-сервера Apache на мові програмування PHP або іншої, та СУБД MS SQL Server. Вивід потрібно робити у форматі HTML. 

    Створити скрипт, який буде під'єднуватись до системного джерела даних ODBC, створеного на основі БД (із лаб. 2), та читати із вказаної таблиці всі записи. 
    4. Розподілена база даних. Фрагментація БД
    Реалізувати гомогенну розподілену БД (із лаб. 2) шляхом горизонтальної фрагментації таблиць і розміщення фрагментів на двох СУБД MS SQL Server. 

    Зв'язати два сервера MS SQL Server.  

    Вдосконалити процесор транзакцій та процесор даних, реалізувавши функціональність додавання оновлення та видалення записів таблиць РБД.  

    СУРБД повинна мати архітектуру клієнт-сервер із бізнес логікою на сервері, реалізованою за допомогою збережених процедур

    Лабораторна робота №5. Реплікація БД.
    Базуючись на завданні лабораторної роботи №1, реалізувати гомогенну розподілену БД на двох вузлах комп’ютерної мережі шляхом горизонтальної фрагментації таблиць та реплікації всіх фрагментів БД. Доступ до РБД реалізувати через веб-інтерфейс на мові PHP, або іншій, з можливістю редагувати, додавати та видаляти записи локальних фрагментів та перегляду віддалених фрагментів таблиць РБД. В якості процесорів даних використати СУБД MySQL.

    Порядок виконання лабораторної роботи

    1. Створити фрагменти БД на двох вузлах локальної мережі на СУБД MySQL (або на двох серверах MySQL в межах одного комп’ютера).

    2. Реалізувати реплікацію фрагментів БД з головного серверу MySQL на допоміжний.

    3. Реалізувати доступ через веб-інтерфейс до локального фрагменту РБД та до віддаленого фрагменту РБД через репліку.

    [якщо в масиві $row[$i] замість [] записати ():$row($i), то виникає помилка « Fatal error. Function name must be a string in…»].
    Примітки до виконання.

    1. Так, як структура локальної і віддаленої БД ідентична, то можна для створення віддаленої БД скористатися тим самим sql-запитом, що і для локальної БД, змінивши тільки дані.

    Якщо два sql-сервера працюють на одній машині, то необхідно сконфігурувати їх на різні ТСР-порти, наприклад 3306 і 3307. Наприклад: локальний sql-сервер на порт 3307, віддалений – 3306 (sql-сервери можуть входити до складу ХАМРР).

    1. В MySQL реплікація одностороння – БД з головного серверу (master) автоматично реплікується на додатковий (slave).

    У нашому випадку головним сервером буде віддалений сервер, додатковим – локальний сервер.

    Для налаштування головного сервера спочатку необхідно запустити бінарний журнал оновлень (binary log). Для цього треба у конфігураційному файлі my.ini (my.cnf у випадку linux) розкоментувати рядок log-bin = mysql-bin. Далі, в тому самому файлі у секції [mysqld] вказати унікальний ID сервера та ім’я БД для реплікації:

    server-id = 1

    replicate-do-db = books

    (необхідно достатньо місця на диску для бін.журналів).

    Далі треба додати користувача replication, під правами якого буде виконуватися реплікація, і надати йому привілей «replication slave»: grant replication slave on *.* to «replication» @ «127.0.0.1» identified by «password» (краще це зробити у Navicat).

    Перевантажити сервер і перевірити його роботу:

    show master status

    File: mysql-bin.000001

    Position: 105

    Binlog_Do_DB:

    Binlog_Ignore_DB:

    Для налаштування додаткового сервера необхідно в my.ini в секції [mysqld] вказати ID сервера, ім’я БД для реплікації і шлях до relay-бінлогам:

    server-id = 2

    relay-log = mysql-relay-bin

    relay-log-index = mysql-relay-bin.index

    replicate-do-db = books

    1. Перезавантажити сервер

    Далі переносимо дані з головного на допоміжний сервер. Для цього спочатку заблокуємо БД для запису і якщо таблиці MyISAM робимо також flush tables:

    flush tables rbith read lock;

    set global read_only = on;

    Запам’ятаємо значення File I Position:

    show master status

    File: mysql-bin: 000001

    Position: 105

    Робимо дамп БД і після завершення операції знімаємо блокування головного сервера:

    set global read_only = off;

    unlock tables;

    Переносимо дамп на допоміжний сервер і відновлюємо із нього дані. На допоміжному сервері запускаємо реплікацію:

    change master to master_host = «127.0.0.1», master_user = «replication»,

    master_password = «password», master_log_file = mysql – bin.000001,

    master_log_pos = 105;

    start slave;

    Значення master_log_file і master_log_pos беремо з основного сервера.

    Переглянути хід реплікації можна за допомогою команди

    show slave status

    (можлива помилка «error connecting to master repl@127.0.0.1:3306»

    - перевірити правильність IP адреси і порти.

    - файервол

    - привілеї replication. Спробувати дати всі привілеї)
    1   2


    написать администратору сайта