Об’єктно-орієнтована модель даних. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Об’єктно-орієнтована модель даних.



ТЕМАТИКА І ПЛАНИ САМОСТІЙНОЇ РОБОТИ

 

№ п/п Назва теми, питань Кількість годин
     
1. Вступ Порівняльна характеристика файлових систем та баз даних.  
2. Тема 1.1 Системи баз даних. Основні поняття й архітектура Історичний розвиток баз даних.  
3. Тема 1.2 Моделі та типи даних 1. Багатомірна модель даних. 2. Об’єктно-орієнтована модель даних.  
4. Тема 1.3 Реляційна модель даних 1. Реляційне числення.  
5. Тема 1.4 Внутрішня організація реляційних СУБД 1. Синхронізаційні захвати 2. Серіалізація транзакцій  
6. Тема 2.1 Основи проектування баз даних 1. Концептуальне моделювання предметної області. 2. Логічне і фізичне проектування.  
7. Тема 2.2 Засоби автоматизованого проектування баз даних 1. Класифікація CASE – систем. 2. Перша нормальна форма ER-діаграми  
8. Тема 2.3 Цілісність та захист даних 1. Програмно-апаратні методи захисту інформації. 2. Вбудовані засоби захисту баз даних.  
9. Тема 3.1 Мова SQL 1. Тригери. Функції. Процедури. 2. Додаткові можливості.  
10. Тема 3.2 Використання СКБД MongoDB 1. Індекси в MongoDB 2. Реплікації  
11. Тема 3.3 Використання СКБД PostgreSQL 1.Клієнтські інтерфейси 2. Розширений SQL 3. Надійність і журнал випереджаючого запису (WAL)  
12. Тема 4.1 Розвиток сучасних баз даних 1. Підтримка мультимедійних об'єктів 2. Управління потоками робіт і транзакціями. 3. Інтелектуальний аналіз даних.  
13. Тема 4.2 Системи управління базами даних наступного покоління 1. Напрямок Starburst. 2. Напрямок Exodus / Genesis.  
14. Тема 4.3 NoSQL бази даних 1. UnQL. 2. Хороша горизонтальна масштабованість.  

 

Самостійна №1

 

"Бази даних та інформаційні системи" входить до циклу дисциплін професійної науково-предметної підготовки, що формують кваліфікованих фахівців високого рівня. Засвоєння студентами цієї дисципліни поряд з освітньо пізнавальними має й науково-прикладне значення як на початковому етапі навчання, так і в процесі формуванні фахівця загалом. Сучасний рівень інформаційних технологій вимагає від студентів, майбутніх фахівців, ґрунтовних знань з обліку й ефективної обробки даних засобами систем управління базами даних (СУБД).

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

Метою вивчення курсу є:

1) формування ґрунтовної теоретичної бази знань студентів про об'єкти системи управління базами даних;

2) властивості цих об'єктів;

3) проектування інформаційних систем, баз даних і систем їх керування;

4) формування практичних навичок із розробки логічної структури бази даних, створення таблиць баз даних та подальшої роботи з ними.

До теоретичної бази знань належить: етапи розвитку технології баз даних, ієрархічні та мережні моделі інформаційних систем, принципи концептуального проектування баз даних, реляційна модель даних, реляційна алгебра та реляційне числення, управління реляційною базою даних, мова SQL, хеш-організація. До практичних навичок належать: навички розробки логічної структури бази даних у процесі технічного проектування; навички розробки таблиць баз даних, введення, модифікації, вилучення, відображення даних, використовуючи форми введення та модифікації даних і табличні режими, використання мови SQL під час роботи з базою даних.

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

 

Самостійна №2

 

Історія розвитку Бази Даних

Бази даних — це одна з найбільш важливих сучасних комп'ютерних технологій. Сьогодні вони багато в чому асоціюються з банківськими транзакціями, хоча так було не завжди. Історія баз даних починається з одного із самих значних інженерних подвигів минулого сторіччя: польоту на Місяць.

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

Зіштовхнувшись із завданням координації замовлень на мільйони деталей, компанія Rockwell у співробітництві з IBM в 1968 р. розробила автоматизовану систему замовлень. Названа IMS (Information Management System — система керування інформацією), вона заклала основу концепції СКБД. Ключовим нововведенням IMS був поділ даних і функцій ділової логіки. Прикладні програмісти одержали можливість працювати з інформацією на логічному рівні, а база даних брала на себе завдання фізичного зберігання. Подібний поділ праці привів до різкого стрибка продуктивності.

Ще одним винаходом стала мова DL/I (Data Language / I). Це була спеціалізована мова складання нерегламентованих запитів до бази даних. Його поява зробила непотрібним дороге програмування на таких мовах, як COBOL і FORTRAN, популярних у той час.

В СКБД IMS, застосовуваної дотепер, реалізована ієрархічна модель даних, у якій існує один - єдиний шлях від кореня ієрархії до кожного запису. Така модель стала основою для систем керування даними, вона ж дала поштовх до наступних винаходів через свою обмеженість. Повна історія IMS була опублікована в 1998 р.

В 1971 р. відбулася конференція по мовах обробки даних (Conference on Data Systems Languages, CODASYL) у завдання якої входила розробка стандартів баз даних. Раніше ця конференція вже стандартизувала мову COBOL. Новий стандарт був розширений на ієрархічну модель даних, застосовувану в IMS. Результатом стала поява мережної моделі даних.

В мережної моделі будь-який запис може брати участь у декількох відносинах предок/нащадок. Це дозволяло обходити цілий ряд обмежень ієрархічної моделі. Розробкою мережної моделі займався Чарльз Бейчман (Charles Bachman) у той час керівник проекту IDS (Integrated Data System — інтегрована система обробки даних) у компанії General Electric. Він же винайшов "діаграми Бейчмана", що описують мережні бази даних. За свою працю в 1973 р. Бейчман одержав нагороду Тьюринга.

Тим часом науковий співробітник компанії IBM доктор Эдгар Кодд (Edgar Codd) працював над епохальним документом для Асоціації виробників обчислювальної техніки (Association for Computing Machinery, ACM). У червні 1970 р. цей документ був опублікований в ACM Journal за назвою "Реляційна модель для більших банків спільно використовуваних даних" ("A Relational Model of Data for Large Shared Data Banks"). Цей документ у корені змінив теорію баз даних і приніс докторові Кодду нагороду Тьюринга в 1981 році.

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

У результаті з'явилися дві СКБД: System R компанії IBM і Ingres Каліфорнійського університету в Беркли. В обидві був реалізований реляційний модуль і мова запитів. Останній в СКБД System R спочатку називався SEQUEL (Structured English Query Language - структурована англійська мова запитів). Пізніше з'явилася назва SQL (Structured Query Language). В 1986 р. організація ANSI опублікувала офіційний стандарт мови SQL.

 

Самостійна №3

 

Багатомірна модель даних.

Багатовимірна база даних – база даних, що підтримує багатовимірну модель даних на концептуальному рівні та призначена для інтерактивного аналітичного опрацювання аґреґованих історичних і проґнозованих даних.

Основними поняттями багатовимірної моделі даних є:

· гіперкуб даних rel,

· вимір V,

· атрибут A,

· комірка X,

· значення rel(V,A).

 

Гіперкуб даних містить один або більше вимірів і є впорядкованим набором комірок. Кожна комірка визначається одним і лише одним набором значень вимірів – атрибутів. Комірка може містити дані – значення або бути порожньою.

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

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

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

Операція зрізу здійснюється з метою отримання необхідної підмножини комірок і відсікання «непотрібних» значень шляхом послідовної фіксації атрибутів. Зріз, як правило, є двовимірним масивом (таблицею).

Зміна порядку подання (візуалізація) вимірів називається обертанням. Обертання забезпечує можливість візуалізації даних у формі, найбільш комфортній для їх сприйняття.

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

Багатовимірну модель даних (гіперкуб даних) можна подати за допомо-гою паралелотопу – геометричної фігури (множини точок), одержаної всіма можливими операціями згортки детальної точки, де значення міри в точках постійне. Паралелотоп є одним із підвидів моделі Версо.

Багатовимірна модель підтримує такі типи даних: класифікаційні правила (у термінах видобування знань називають ще асоціативними правилами); залежності між аґреґатами; залежності між елементами ієрархії.

Багатовимірна модель розширює реляційну: носій – вкладені (ненор-малізовані), залежні від часу дані, множина операцій, окрім традиційних реляційнх, містить операції зрізу, згортки, деталізації, обертання.

 

Класифікація CASE – систем.

 

Всі сучасні CASE-засоби можуть бути класифіковані в основному за типами та категоріями. Класифікація за типами відбиває функціональну орієнтацію CASE-засобів на ті чи інші процеси ЖЦ. Класифікація за категоріями визначає ступінь інтегрованості по виконуваних функцій і включає окремі локальні засоби, вирішальні невеликі автономні завдання (tools), набір частково інтегрованих засобів, що охоплюють більшість етапів життєвого циклу ІС (toolkit) і повністю інтегровані кошти, підтримують весь ЖЦ ІС та пов'язані загальним репозиторием. Крім цього, CASE-засоби можна класифікувати за такими ознаками:

· застосовуваним методологиям і моделях систем і БД;

· ступеня інтегрованості з СУБД;

· доступним платформам.

 

Класифікація за типами переважно збігаються з компонентним складом CASE-засобів і включає наступні основні типи:

 

· засоби аналізу (Upper CASE), призначені для побудови й аналізу моделей предметної області (Design / IDEF (Meta Software), BPwin (Logic Works));

· засоби аналізу і проектування (Middle CASE), що підтримують найбільш поширені методології проектування й які використовуються для створення проектних специфікацій (Vantage Team Builder (Cayenne), Designer/2000 (ORACLE), Silverrun (CSA), PRO-IV (McDonnell Douglas), CASE. Аналітик (МакроПроджект)). Виходом таких засобів є специфікації компонентів і інтерфейсів системи, архітектури системи, алгоритмів і структур даних;

· засоби проектування баз даних, щоб забезпечити моделювання даних і генерацію схем баз даних (як правило, на мові SQL) для найбільш поширених СУБД. До них відносяться ERwin (Logic Works), S-Designor (SDP) і DataBase Designer (ORACLE). Засоби проектування баз даних є також в складі CASE-засобів Vantage Team Builder, Designer/2000, Silverrun і PRO-IV;

· засоби розробки додатків. До них відносяться засоби 4GL (Uniface (Compuware), JAM (JYACC), PowerBuilder (Sybase), Developer/2000 (ORACLE), New Era (Informix), SQL Windows (Gupta), Delphi (Borland) та ін) і генератори кодів, що входять до складу Vantage Team Builder, PRO-IV і частково - у Silverrun;

· засоби реінжинірингу, що забезпечують аналіз програмних кодів і схем баз даних і формування на їх основі різних моделей і проектних специфікацій. Засоби аналізу схем БД і формування ERD входять до складу Vantage Team Builder, PRO-IV, Silverrun, Designer/2000, ERwin і S-Designor. У сфері аналізу програмних кодів найбільшого поширення отримують об'єктно-орієнтовані CASE-засоби, що забезпечують реінжиніринг програм мовою С + + (Rational Rose (Rational Software), Object Team (Cayenne)).

 

Допоміжні типи включають:

 

v засоби планування і управління проектом (SE Companion, Microsoft Project та ін);

v кошти конфігураційного управління (PVCS (Intersolv));

v засоби тестування (Quality Works (Segue Software));

v засоби документування (SoDA (Rational Software)).

 

Додаткові можливості.

 

Збережені процедури – це об’єкти бази даних, які зазвичай містять велику кіль­кість директив SQL. Такі процедури можуть містити сукупність команд (складних запитів, операцій оновлення, додавання та видалення), що часто використовуються як єдине ціле. Збережена процедура дає змогу звернутися до неї як до функції, замість того, щоб послідовно записувати команди SQL, які вона містить. Значне зниження навантаження на канали зв’язку під час роботи користувачів із сервером теж є важливою перевагою збережених процедур, адже замість окремих багаторазових звернень до бази даних виконується єдине звернення до збереженої процедури.

Розширення SQL

 

Будь-яка СКБД розширює стандарт мови SQL, причому в багатьох випадках SQL трансформується в мову програмування, що надає усі можливості SQL. Наприклад, у Microsoft SQL Server таким розширенням є мова Transact-SQL, в Oracle — мова PL/SQL. Кожна з них має переваги звичайних мов програмування, підтримує всі можливості стандарту ANSI SQL, а також розширює його.

Крім того, багато СКБД надають засоби для застосування SQL у традиційних мовах програмування. Існують два методи такого використання мови.

СтатичнаSQL припускає вкладання безпосередньо в програмний код речення, що не може бути змінене під час виконання програми. Зазвичай статична SQL вимагає використання предкомпілятора. Наприклад, Oracle має предкомпілятори для використання SQL у мовах С, Pascal, Ada, COBOL та FORTRAN.

ДинамічнаSQ L дає змогу програмувати побудову SQL -запитів, що створюю­ться під час виконання програми і передаються СКБД, яка, в свою чергу, передає знайдені дані змінним програми.

Ця радіостанція 50-70 років, тут ви почуєте артистів цієї епохи, і насолодитеся улюбленими і добрими піснями сайт Радіо “СРСР 50-70″ онлайн – ретро радіо, яке слухають всі, іменно ця радіохвиля подарує вам гарну атмосферу повернуться в минуле, і насолодиться ейфорією 70-х років.

Самсотійна №10

Індекси в MongoDB

 

Індекси в MongoDB, так само як і в РСУБД використовуються для прискорення роботи запитів. Індекси реалізовані у вигляді B- дерев.

MongoDB завжди разом з колекцією створює індекс по полю _id.

Для створення індексу використовується команда:

db.things.ensureIndex ({ name: 1 })

Things - колекція, name - ім'я поля. 1 означає, що індекс вибудовується за зростанням, -1 за спаданням.

Можна створювати складені індекси вказуючи кілька полів:

db.things.ensureIndex ({ name: 1, y: -1 })

При створенні складових індексів потрібно пам'ятати, що MongoDB буде використовувати їх при обробці запитів, тільки в тому випадку, коли в запиті поля вказані в тому ж порядку, що і в індексі.

Наприклад: складовою індекс по полях a, b, c.

MongoDB буде використовувати цей індекс якщо в запиті зазначено:

- a

- A, b

- A, b, c

 

Якщо поле є масивом значень, то при його індексуванні індексуються всі елементи масиву.

 

При створенні індексів можна вказувати додаткові параметри:

1) background (true / false). Створення індексу в фоні.

2) unique (true / false). Створюється індекс з унікальними значеннями. За наявності не унікальних значень у полі поверне помилку;

3) dropDubs (true / false). Використовується якщо необхідно створити унікальний індекс по полю з дублюючими значеннями. Документи з дублюючими значеннями просто видаляються. Використовується в парі з unique;

4) sparce (true / false). З цією опцією індекс може бути створений по полю, відсутньому в деяких документах. При цьому ці документи не потрапляють в індекс.

 

Видалення всіх індексів:

db.things.dropIndexes ()

Видалення одного індексу:

db.things.dropIndex ({ name: 1 })

переіндексація:

db.things.reIndex ()

 

Реплікації

Коли ми говоримо про реплікації, ми маємо на увазі, що у нас є кілька баз. Для локальних експериментів можна запустити кілька демонів вказавши їм різні порти і директорії для баз.

 

Створимо кілька директорій для експериментальних баз:

 

$ Mkdir db1

$ Mkdir db2

$ Mkdir db3

Запуск демона MongoDb (mongod) виконується наступною командою $ mongod якщо хочемо вказати шлях до бази і порт, тоді так:

 

$ Mongod - dbpath db1 - port 27001

плюс додамо ще параметр вказує на те що це реплікасет:

 

$ Mongod - dbpath db1 - port 27001 - replSet myreplica

myreplica - в даному випадку ім'я для нашого реплікасета.

 

Тепер таким же чином запускаємо ще 2 демона:

 

$ Mongod - dbpath db2 - port 27002 - replSet myreplica

$ Mongod - dbpath db3 - port 27003 - replSet myreplica

У результаті у нас підготовлені 3 бази і нам слід тепер розподілити між ними ролі: хто буде Первинним (Primary) ланкою, до якого будуть додані інші.

 

Припустимо ми вирішили зробити db1 головним. Для цього заходимо на нього використовуючи mongoshell:

 

$ Mongo - port 27001 і робимо

mongo > rs.initiate ()

для ініціалізації конфігурації.

 

Всі маніпуляції з реплікасетом виконуються за допомогою методів об'єкта rs. Весь список методів пожно отримати виконавши команду rs.help ().

 

Перевіримо статус нашого реплікасета:

 

mongo > rs.status ()

як бачимо у властивості members присутсвует тільки поточний сервер, для того щоб додати інші робимо:

 

mongo > rs.add (" myhost: 27002 ")

mongo > rs.add (" myhost: 27003 ")

 

Самостійна №11

Клієнтські інтерфейси

Приклад №1

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <sqlite3.h>

 

static int res=0;

static int callback(void *NotUsed, int argc, char **argv, char

**azColName)

{

int i;

if (res==0)

{

for(i=0; i<argc; i++)

{

printf("%s", azColName[i]);

if (i!=argc-1)

{

printf(" | ");

}

}

res=1;

}

printf("\n");

for(i=0; i<argc; i++)

{

printf("%s", argv[i]? argv[i]: "NULL");

if (i!=argc-1)

{

printf(" | ");

}

}

printf("\n");

return 0;

}

 

const char manual[]=

"\nSimple SQLite WC Design Manual\n"

"Version 1.0\n"

"\nSystem command:\n"

"help - open Design Manual.\n"

 

"quit - close program.\n"

"exit - close program.\n"

"restart - close old database and open new database.\n"

"\n";

 

static int sys_command_analysis(sqlite3 *db, char database[],

char command[])

{

int rc;

if (strcmp(command, "")==0)

{

printf("Interface message: Empty command.\n");

return 0;

}

if ((strcmp(command, "quit")==0)|(strcmp(command,

"exit")==0))

{

printf("Interface message: Program closed.\n");

return 1;

}

if (strcmp(command, "help")==0)

{

printf("%s", manual);

return 0;

}

if (strcmp(command, "restart")==0)

{

if (db!=NULL)

{

sqlite3_close(db);

fprintf(stderr, "Interface message: %s saved and

closed.\n", database);

}

fprintf(stderr, "Enter database file: ");

gets(database);

rc=sys_command_analysis(db,database,database);

if (rc==1)

{

return 1;

}

return 0;

}

return -1;

}

 

int main(int argc, char **argv)

{

sqlite3 *db=NULL;

sqlite3_stmt *stmt=NULL;

char *zErrMsg = 0;

int rc;

int i;

char database[256];

char sql[256];

fprintf(stderr, "Simple SQLite WC Design 1.0\nDesign file:

%s\n\n", argv[0]);

fprintf(stderr, "Enter database file: ");

gets(database);

rc=sys_command_analysis(db,database,database);

if (rc==1)

{

return 0;

}

for (;;)

{

fprintf(stderr, "SQLite> ");

gets(sql);

rc=sys_command_analysis(db,database,sql);

if (rc==1)

{

return 0;

}

else if (rc==0)

{

continue;

}

rc = sqlite3_open_v2(&database, &db,

SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);

if(rc!=SQLITE_OK)

{

fprintf(stderr, "Interface message: Can't open

database: %s\n", sqlite3_errmsg(db));

sqlite3_close(db);

return(1);

}

rc = sqlite3_prepare_v2(db, &sql, -1, &stmt, NULL);

if(rc!=SQLITE_OK)

{

printf("Interface message: Syntax error.\n");

continue;

}

rc = sqlite3_exec(db, &sql, callback, 0, &zErrMsg);

if(rc!=SQLITE_OK)

{

fprintf(stderr, "Interface message: SQL error:

%s\n", zErrMsg);

sqlite3_free(zErrMsg);

continue;

}

}

sqlite3_close(db);

return 0;

}

 

Приклад 2

#include <stdio.h>5

 

#include <stdlib.h>

#include <windows.h>

#include <mysql.h>

 

int main(int argc, char** argv)

{

MYSQL *conn;

MYSQL_RES *result;

MYSQL_ROW row;

int Nfields;

int i;

int j;

 

char *mysql_host;

char *mysql_usr;

char *mysql_passw;

char *mysql_db;

 

char command[256];

char var[100];

char passw[256];

 

printf("MySQL client version: %s\n",

mysql_get_client_info());

 

mysql_host="localhost";

mysql_usr="root";

mysql_passw="";

mysql_db="testdb";

 

printf("Password: ");

gets(passw);

mysql_passw=passw;

 

for (;;)

{

printf("SQL> ");

gets(command);

if (strcmp(command, "quit")==0)

{

return 0;

}

conn=mysql_init(NULL);

if (conn == NULL)

{

printf("Error %u: %s\n", mysql_errno(conn),

mysql_error(conn));

continue;

}

 

if (mysql_real_connect(conn, mysql_host, mysql_usr,

mysql_passw, mysql_db, 0, NULL, 0) == NULL)

printf("Error %u: %s\n", mysql_errno(conn),

mysql_error(conn));

continue;

}

 

if (mysql_query(conn, command))

{

printf("Error %u: %s\n", mysql_errno(conn),

mysql_error(conn));

continue;

}

else

{

printf("SQL query OK!\n");

}

 

for (j = 0; j < 6; j++)

{

var[j] = command[j];

}

 

if (strcmp(var, "select")==0)

{

result = mysql_store_result(conn);

 

Nfields = mysql_num_fields(result);

printf("\n\n Results: \n");

while (row = mysql_fetch_row(result))

{

for (i = 0; i < Nfields; i++)

{

printf("%s ", row[i]);

}

printf("\n");

}

mysql_free_result(result);

}

mysql_close(conn);

}

return 0;

}

Висновок: важливою частиною роботи з базами даних є здійснення їхнього

адміністрування – створення, впорядкування і структуризації. Ці прості інтерфейси дозволяють спростити роботу з базами даних, а також показують основні принципи взаємодії мови SQL із мовами програмування.

 

Розширений SQL

PostgreSQL є розширюваної системою, тому що її робота управляєти каталогом. Якщо ви добре знайомі зі стандартними РСУБД, ви знаєте, що вони зберігають інформацію про бази даних, таблицях, стовпцях і т.д. в так званих системних каталогах. (Деякі системи називають їх словником даних). Ці каталоги виглядають для користувача як звичайні таблиці, але DBMS зберігає в них свою внутрішню інформацію. Одне з ключових відмінностей між PostgreSQL і стандартними РСУБД полягає в тому, що PostgreSQL зберігає в своїх каталогах набагато більше інформації: не тільки інформацію про таблиці і шпальтах, але також інформацію про типи даних, функціях, методах доступу і т.д. Таблиці каталогу можуть бути змінені користувачем і в силу цих операцій PostgreSQL може бути розширений користувачами. Для порівняння, звичайні СУБД можуть розширюватися тільки через зміну процедур, які жорстко вкомпільовані в код, тобто через зміну вихідного коду або шляхом завантаження модулів, спеціально написаних виробником СУБД.

 

Крім того, сервер PostgreSQL за допомогою динамічного завантаження може включати в себе написаний користувачем код. Таким чином, користувач може вказати файл з об'єктами кодом (наприклад, що розділяється бібліотеку) який реалізує новий тип або функцію і PostgreSQL завантажить його як тільки він буде потрібен. Ще більш просто додати до сервера код, написаний на мові SQL. Це зробить можливим змінювати операції " на льоту", що робить PostgreSQL унікальним інструментом для швидкого створення прототипів нових додатків і структур зберігання.

 

Тема 4.3 NoSQL бази даних

 

No SQL

NoSQL (англ. not only SQL, не тільки SQL), в інформатиці - термін, що позначає ряд підходів, проектів, спрямованих на реалізацію моделей баз даних, що мають суттєві відмінності від використовуваних в традиційних реляційних СУБД з доступом до даних засобами мови SQL. Опис схеми даних у разі використання NoSQL -рішень може здійснюватися через використання різних структур даних: хеш- таблиць, дерев та інших.

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

 

NoSQL і SQL

Прихильниками концепції NoSQL підкреслюється, що вона не є повним запереченням мови SQL і реляційної моделі, проект виходить з того, що SQL - це важливий і дуже корисний інструмент, але при цьому він не може вважатися універсальним. Однією з проблем, яку вказують для класичних реляційних БД, є проблеми при роботі з даними дуже великого об'єму і у проектах з високим навантаженням. Основна мета підходу - розширити можливості БД там, де SQL недостатньо гнучкий, і не витісняти його там, де він справляється зі своїми завданнями.

UnQL

У липні 2011 компанія Couchbase, розробник CouchDB, Memcached і Membase, анонсувала створення нового SQL - подібного мови запитів - UnQL (Unstructured Data Query Language). Роботи зі створення нової мови виконали творець SQLite Річард Гіппо (англ. Richard Hipp), і засновник проекту CouchDB Деміен Кац (англ. Damien Katz). Розробка передана спільноті на правах суспільного надбання.

 

Хороша горизонтальна масштабованість - автоматичний розподіл між декількома серверами.

Такі системи ми називаємо розподіленими базами даних (розподіл йде між комп'ютерами по локальній мережі). У них входять: Cassandra, HBase, Riak, Scalaris, Voldemort.

 

В якості одного з методологічних обгрунтувань підходу NoSQL використовується евристичний принцип, відомий як теорема Ca, який стверджує, що в розподіленої системі неможливо одночасно забезпечити узгодженість даних, доступність (англ. availability - коректність відгуку по будь-якому запиту) і стійкість до розщеплення розподіленої системи на ізольовані частини Таким чином, при необхідності досягнення високої доступності і стійкості до поділу планується не фокусуватися на засобах забезпечення узгодженості даних, забезпечуваних традиційними SQL - орієнтованими СУБД з транзакційними механізмами на принципах ACI.

 

ТЕМАТИКА І ПЛАНИ САМОСТІЙНОЇ РОБОТИ

 

№ п/п Назва теми, питань Кількість годин
     
1. Вступ Порівняльна характеристика файлових систем та баз даних.  
2. Тема 1.1 Системи баз даних. Основні поняття й архітектура Історичний розвиток баз даних.  
3. Тема 1.2 Моделі та типи даних 1. Багатомірна модель даних. 2. Об’єктно-орієнтована модель даних.  
4. Тема 1.3 Реляційна модель даних 1. Реляційне числення.  
5. Тема 1.4 Внутрішня організація реляційних СУБД 1. Синхронізаційні захвати 2. Серіалізація транзакцій  
6. Тема 2.1 Основи проектування баз даних 1. Концептуальне моделювання предметної області. 2. Логічне і фізичне проектування.  
7. Тема 2.2 Засоби автоматизованого проектування баз даних 1. Класифікація CASE – систем. 2. Перша нормальна форма ER-діаграми  
8. Тема 2.3 Цілісність та захист даних 1. Програмно-апаратні методи захисту інформації. 2. Вбудовані засоби захисту баз даних.  
9. Тема 3.1 Мова SQL 1. Тригери. Функції. Процедури. 2. Додаткові можливості.  
10. Тема 3.2 Використання СКБД MongoDB 1. Індекси в MongoDB 2. Реплікації  
11. Тема 3.3 Використання СКБД PostgreSQL 1.Клієнтські інтерфейси 2. Розширений SQL 3. Надійність і журнал випереджаючого запису (WAL)  
12. Тема 4.1 Розвиток сучасних баз даних 1. Підтримка мультимедійних об'єктів 2. Управління потоками робіт і транзакціями. 3. Інтелектуальний аналіз даних.  
13. Тема 4.2 Системи управління базами даних наступного покоління 1. Напрямок Starburst. 2. Напрямок Exodus / Genesis.  
14. Тема 4.3 NoSQL бази даних 1. UnQL. 2. Хороша горизонтальна масштабованість.  

 

Самостійна №1

 

"Бази даних та інформаційні системи" входить до циклу дисциплін професійної науково-предметної підготовки, що формують кваліфікованих фахівців високого рівня. Засвоєння студентами цієї дисципліни поряд з освітньо пізнавальними має й науково-прикладне значення як на початковому етапі навчання, так і в процесі формуванні фахівця загалом. Сучасний рівень інформаційних технологій вимагає від студентів, майбутніх фахівців, ґрунтовних знань з обліку й ефективної обробки даних засобами систем управління базами даних (СУБД).

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

Метою вивчення курсу є:

1) формування ґрунтовної теоретичної бази знань студентів про об'єкти системи управління базами даних;

2) властивості цих об'єктів;

3) проектування інформаційних систем, баз даних і систем їх керування;

4) формування практичних навичок із розробки логічної структури бази даних, створення таблиць баз даних та подальшої роботи з ними.

До теоретичної бази знань належить: етапи розвитку технології баз даних, ієрархічні та мережні моделі інформаційних систем, принципи концептуального проектування баз даних, реляційна модель даних, реляційна алгебра та реляційне числення, управління реляційною базою даних, мова SQL, хеш-організація. До практичних навичок належать: навички розробки логічної структури бази даних у процесі технічного проектування; навички розробки таблиць баз даних, введення, модифікації, вилучення, відображення даних, використовуючи форми введення та модифікації даних і табличні режими, використання мови SQL під час роботи з базою даних.

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

 

Самостійна №2

 

Історія розвитку Бази Даних

Бази даних — це одна з найбільш важливих сучасних комп'ютерних технологій. Сьогодні вони багато в чому асоціюються з банківськими транзакціями, хоча так було не завжди. Історія баз даних починається з одного із самих значних інженерних подвигів минулого сторіччя: польоту на Місяць.

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

Зіштовхнувшись із завданням координації замовлень на мільйони деталей, компанія Rockwell у співробітництві з IBM в 1968 р. розробила автоматизовану систему замовлень. Названа IMS (Information Management System — система керування інформацією), вона заклала основу концепції СКБД. Ключовим нововведенням IMS був поділ даних і функцій ділової логіки. Прикладні програмісти одержали можливість працювати з інформацією на логічному рівні, а база даних брала на себе завдання фізичного зберігання. Подібний поділ праці привів до різкого стрибка продуктивності.

Ще одним винаходом стала мова DL/I (Data Language / I). Це була спеціалізована мова складання нерегламентованих запитів до бази даних. Його поява зробила непотрібним дороге програмування на таких мовах, як COBOL і FORTRAN, популярних у той час.

В СКБД IMS, застосовуваної дотепер, реалізована ієрархічна модель даних, у якій існує один - єдиний шлях від кореня ієрархії до кожного запису. Така модель стала основою для систем керування даними, вона ж дала поштовх до наступних винаходів через свою обмеженість. Повна історія IMS була опублікована в 1998 р.

В 1971 р. відбулася конференція по мовах обробки даних (Conference on Data Systems Languages, CODASYL) у завдання якої входила розробка стандартів баз даних. Раніше ця конференція вже стандартизувала мову COBOL. Новий стандарт був розширений на ієрархічну модель даних, застосовувану в IMS. Результатом стала поява мережної моделі даних.

В мережної моделі будь-який запис може брати участь у декількох відносинах предок/нащадок. Це дозволяло обходити цілий ряд обмежень ієрархічної моделі. Розробкою мережної моделі займався Чарльз Бейчман (Charles Bachman) у той час керівник проекту IDS (Integrated Data System — інтегрована система обробки даних) у компанії General Electric. Він же винайшов "діаграми Бейчмана", що описують мережні бази даних. За свою працю в 1973 р. Бейчман одержав нагороду Тьюринга.

Тим часом науковий співробітник компанії IBM доктор Эдгар Кодд (Edgar Codd) працював над епохальним документом для Асоціації виробників обчислювальної техніки (Association for Computing Machinery, ACM). У червні 1970 р. цей документ був опублікований в ACM Journal за назвою "Реляційна модель для більших банків спільно використовуваних даних" ("A Relational Model of Data for Large Shared Data Banks"). Цей документ у корені змінив теорію баз даних і приніс докторові Кодду нагороду Тьюринга в 1981 році.

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

У результаті з'явилися дві СКБД: System R компанії IBM і Ingres Каліфорнійського університету в Беркли. В обидві був реалізований реляційний модуль і мова запитів. Останній в СКБД System R спочатку називався SEQUEL (Structured English Query Language - структурована англійська мова запитів). Пізніше з'явилася назва SQL (Structured Query Language). В 1986 р. організація ANSI опублікувала офіційний стандарт мови SQL.

 

Самостійна №3

 

Багатомірна модель даних.

Багатовимірна база даних – база даних, що підтримує багатовимірну модель даних на концептуальному рівні та призначена для інтерактивного аналітичного опрацювання аґреґованих історичних і проґнозованих даних.



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 240; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.235.104 (0.321 с.)