Бази даних на пк

Бази даних на ПК розвивалися у напрямку від настільних (desktop), або локальних додатків, коли реально з БД могло працювати один додаток, до систем колективного доступу до БД.
Локальне додаток встановлювалося на одиничному ПК; там же розташовувалася і база даних (БД), з якої працює дана програма. Однак необхідність колективної роботи з однією і тією ж БД спричинило за собою перенесення БД на сервер. Додаток, що працює з БД, розташовувалося також на сервері.

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

Місцезнаходження БД визначає так звану архітектуру бази даних. Є чотири різновиди архітектур баз даних:

-локальні бази даних;

Використання тієї чи іншої архітектури накладає сильний відбиток на загальну ідеологію роботи програми та на програмний код програми.
При роботі з локальними базами даних самі бази даних розташовані на тому ж комп'ютері, що і додатки, які здійснюють доступ до них. Робота з базою даних відбувається в режимі одного. Додаток відповідально за підтримку цілісності бази та за виконання запитів до бази даних.
При роботі в архітектурі "файл-сервер" база даних і додаток розташовані на файловому сервері мережі. Можлива розрахована на багато користувачів робота з однією і тією ж базі даних, коли кожен користувач зі свого комп'ютера запускає додаток, розташоване на мережевому сервері. Тоді на комп'ютері користувача запускається копія додатку. По кожному запиту до бази даних з програми дані з таблиць бази даних переганяються на комп'ютер користувача, незалежно від того, скільки реально потрібно даних для виконання запиту. Після цього виконується запит.

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

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

Чи не оптимально витрачаються ресурси клієнтського комп'ютера і мережі; наприклад, якщо в результаті запиту ми повинні отримати 2 записи з таблиці обсягом 10000 записів, все 10000 записів будуть скопійовані з файл-сервера на клієнтський комп'ютер; в результаті зростає мережевий трафік і збільшуються вимоги до апаратних потужностей для користувача комп'ютера.
У базі даних на файл-сервері набагато простіше вносити зміни в окремі таблиці, минаючи програми, безпосередньо з інструментальних засобів (наприклад, з утиліти database desktop фірми borland для файлів paradox або dbase); подібна можливість полегшується тією обставиною, що, фактично, у локальних СУБД база даних - поняття більш логічне, ніж фізичне, оскільки під базою даних розуміється набір окремих таблиць, що співіснують в єдиному каталозі на диску. Все це дозволяє говорити про низький рівень безпеки - як з точки зору розкрадання та завдання шкоди, так і з точки зору внесення помилкових змін.

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

Так як клієнтського додатку надсилається результат виконання запиту, по мережі "подорожують" тільки ті дані, які необхідні клієнту. В результаті знижується навантаження на мережу. Оскільки виконання запиту відбувається там же, де зберігаються дані (на сервері), немає необхідності в пересиланні великих пакетів даних. Крім того, sql-сервер, якщо це можливо, оптимізує отриманий запит таким чином, щоб він був виконаний в мінімальний час з найменшими накладними витратами. Все це підвищує швидкодію системи і знижує час очікування результату запиту.

При виконанні запитів сервером суттєво підвищується ступінь безпеки даних, оскільки правила цілісності даних визначаються в базі даних на сервері і є єдиними для всіх додатків, що використовують цю БД. Таким чином, виключається можливість визначення суперечливих правил підтримки цілісності. Потужний апарат транзакцій, підтримуваний sql-серверами, дозволяє виключити одночасна зміна одних і тих же даних різними користувачами і надає можливість відкатів до первинних значень при внесенні до БД змін, що закінчилися аварійно.

Функціями програми-клієнта є:

-Посилка до сервера запитів;

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

-Реалізація інтерфейсу користувача.

sql-сервер повинен бути завантажений на момент прийняття запиту клієнта. Функціями сервера БД є:

-Прийом запитів від програм-клієнтів, інтерпретація запитів, виконання запитів в БД, відправка результату виконання запиту додатку-клієнту;

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

-Зберігання бізнес-правил, часто використовуваних запитів у вже інтерпретованому вигляді;

-Забезпечення одночасної безпечної від відмовостійкої розрахованої на багато користувачів роботи з одними і тими ж даними.

В архітектурі "клієнт-сервер" використовуються так звані "віддалені" (або "промислові") СУБД. Промисловими вони називаються через те, що саме СУБД цього класу можуть забезпечити роботу інформаційних систем масштабу середнього і великого підприємства, організації, банку. Локальні СУБД призначені для одного користувача роботи або для забезпечення роботи інформаційних систем, розрахованих на невеликі групи користувачів.
До розряду промислових СУБД належать oracle, informix, sybase, ms sql server, db2, interbase і ряд інших.

механізми доступу


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

Існує кілька способів доступу до даних із засобів розробки і клієнтських додатків.
Переважна більшість СУБД містить в своєму складі бібліотеки, що надають спеціальний прикладний програмний інтерфейс (application programming interface, api) для доступу до даних цієї СУБД. Зазвичай такий інтерфейс являє собою набір функцій, що викликаються з клієнтського застосування. У разі настільних СУБД ці функції забезпечують читання / запис файлів бази даних (БД), а в разі серверних СУБД ініціюють передачу запитів серверу баз даних та отримання від сервера результатів виконання запитів або кодів помилок, що інтерпретуються клієнтським додатком. Бібліотеки, що містять api для доступу до даних серверної СУБД, зазвичай входять до складу її клієнтського програмного забезпечення, що встановлюється на комп'ютерах, де функціонують клієнтські програми.

Останнім часом windows-версії клієнтського програмного забезпечення найбільш популярних серверних СУБД, зокрема microsoft sql server, oracle, informix, містять також СОМ-сервери, що надають об'єкти для доступу до даних і метаданих.
Використання клієнтського api (або клієнтських СОМ-об'єктів) є найбільш очевидним способом маніпуляції даними в додатку. Однак в цьому випадку створене додаток зможе використовувати дані тільки СУБД цього виробника, і заміна її на іншу спричинить за собою переписування значної частини коду клієнтського додатку - клієнтські api і об'єктні моделі не підкоряються жодним стандартам і різні для різних СУБД.

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

Відзначимо, що гідністю універсальних механізмів є можливість застосування одного і того ж абстрактного api, а в багатьох випадках - СОМ-серверів, компонентів, класів для доступу до різних типів СУБД. Тому програми, які використовують універсальні механізми доступу до даних, легко модифікувати, якщо необхідна зміна СУБД.
Найбільш популярними серед універсальних механізмів доступу до даних можна назвати наступні:

open database connectivity (odbc).

ole db.
activex data objects (ado).
borland database engine (bde).


Універсальні механізми odbc, ole db і ado фірми microsoft являють собою по суті промислові стандарти. Що стосується механізму доступу до даних bde фірми borland, то він так і не став промисловим стандартом, проте до недавнього часу застосовувався досить широко, оскільки до виходу delphi 5 був практично єдиним універмальним механізмом доступу до даних, підтримуваним засобами розробки borland на рівні компонентів і класів

Що таке sql?


sql часто називають мовою есперанто для СУБД. Дійсно, в світі немає іншої мови для роботи з базами даних (БД), який би настільки широко використовувався в програмах. Перший стандарт sql з'явився в 1986 р і до теперішнього часу завоював загальне визнання. Його можна використовувати навіть при роботі з не реляційними СУБД. На відміну від інших програмних засобів, таких, як мови Сі і Кобол, що є прерогативою програмістів-професіоналів, sql застосовується фахівцями з самих різних областей. Програмісти, адміністратори СУБД, бізнес-аналітики - всі вони з успіхом обробляють дані за допомогою sql. Знання цієї мови корисно всім, кому доводиться мати справу з БД.

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

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

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

sql дозволяє не тільки отримувати дані, але і визначати структуру даних, додавати і видаляти дані, обмежувати або надавати доступ до даних, підтримувати посилальну цілісність. sql сам по собі не є ні СУБД, ні окремим продуктом. Це - мова, застосовуваний для взаємодії з СУБД і є в певному сенсі її невід'ємною частиною.