Съвременни системи за база от данни



страница1/5
Дата03.01.2022
Размер136.05 Kb.
#112318
ТипРешение
  1   2   3   4   5
Съвременни системи за база от данни

Съвременни системи за база от данни

Доста често може да се изкушавате сами да написвате целия код за сортиране, проследяване и съхранение на информацията на вашите програми. Обикновено завършвате с желание да имате лесен начин за удовлетворяване на растящите нужди от записи, сортирания и т.н. Решението е в това да прехвърлите по-голямата част от обработката на данните в база данни.

Изборът на база данни е само 1/3 от необходимото проучване, за имплементиране на приложение с бази данни в Web. Все още съществува необходимостта от избор на другите два компонента - Web сървър и Сървъра за приложения (Web Application Server).Те ще бъдат разгледани в следващите глави на настоящата дипломна работа. Обект на тази са базите от данни.

И понеже започваме от самото начало, трябва да стартираме с дефинирането на база данни. Една добра работна дефиниция е: "База данни е един вид колекция от организирани факти" (Ashenfelter, 1999)

Тази дефиниция покрива много голяма площ от реалния свят - от кутията за обувки със счетоводни документи, през счетоводна книга до сложните компютъризирани системи за разплащане. Всеки от предходните носители за съхранение представлява база данни. Проблемът е, че първите два типа бази данни не предоставят никакви вградени средства за автоматично сортиране, отпечатване или управление на данните. За да стане възможно това е необходима система за управление на бази данни.

Системата за управление на бази данни представлява набор от инструменти за управление на данни в определен формат. Бихте могли да създадете свой-собствен набор от инструменти или да закупите съществуващ такъв. Има едно нещо, което всички системи за управление на бази данни включват — машината за бази данни. Машината за бази данни (database engine) е приложението, като например Microsoft Access или Oracle, което обработва данните в базата данни. Тя е сърцето на вашата система за управление на бази данни. Обикновено тази система е или обектно-ориентирана, или релационна. Обектно-ориентирана система, която добива популярност все още не е налична за повечето настолни PC.

Базите данни осигуряват невидимата, но основна, същинска функционалност на съхраняването на данни и тяхната манипулация. По-голямата част са релационни, много използват SQL като основен език, и при повечето достъпът се осъществява чрез ODBC. Какво всъщност се има предвид под тези странни думи и съкращения?

Релационна база данни

Релационната база данни е съставена от таблици. Всяка таблица съдържа редове с информация за всеки съхранен в нея обект. Редът съдържа данни за един отделен обект и е съставен от колони с информация, която описва един този обект. Всеки файл на базата данни може да съдържа множество таблици и всяка таблица може да съдържа множество колони.

Една или множество таблици могат да бъдат достъпени и чрез изглед (view). Изгледът е логическо подмножество на таблица или комбинация от таблици. Той дефинира различен начин за достъпване, или разглеждане, на данните от таблицата, но самият той не съдържа данни. Позволява да създавате по-нататъшни логически връзки между таблиците, без да създавате второ копие на данните.

SQL

След като релационните бази от данни станаха популярни, възникна нуждата от стандартен език за операции с данни. Отговорът бе SQL (Structured Query Language, Език за структурирани заявки). Постепенно SQL прерасна в многофункционален език за работа с бази данни с управляващи конструкции за: създаване, промяна и изтриване на данни; дефиниране на данни (таблици, колони); защита на достъпа до елементи от бази данни чрез работа с групи и индивидуални потребители; операции за управление на данните като създаване на архивни копия, блоково копиране и актуализация; и, най-важното, обработка на транзакции.

Общата форма на SQL се нарича ANSI-SQL, но всеки производител на СУБД има собствена реализация на SQL. B SQL сървъра на Microsoft, който е една от клиентско/сървърните релационни СУБД, е реализиран диалект на SQL с име Transact/SQL, докато SQL на Oracle се нарича PL/SQL. Но фактически всички комерсиални (релационни) продукти за бази данни разбират SQL, въпреки че повечето също имат и собствени специални диалекти. Това означава, че за по-голямата част заявките за базата данни, разработени за използване с точно определена база данни, са преносими от един продукт или инструмент до друг. SQL кодът, написан от програмист използващ настолни (desktop) бази данни, като Microsoft Access, могат да бъдат използвани на система, с инсталирана корпоративна (enterprise) база данни, като Oracle, без съществени промени. Освен това SQL се използва не по-малко от езици като Java, C++ и други поради възможностите, които предоставя в областта на работата с данни и управлението на бази данни.

PL/SQL

Един от най-често използваните диалекти на SQL е PL/SQL. Той се използва в управлението и работата на/с бази данни от Oracle корпорацията и е процедурен език, с разширения към SQL. Основната му цел е да комбинира език за бази данни с процедурен програмен език. Основната част в PL/SQL се нарича блок, който от своя страна се дели на три части: декларативна, изпълнима и за построяване на изключения.

Понеже PL/SQL позволява смесването на SQL декларации с процедурни конструкции, е възможно PL/SQL блоковете и подпрограмите да се групират със SQL частите, преди изпращането им до Oracle сървъра за изпълнението им. Без PL/SQL, Oracle трябва да създава процес за всяка SQL декларация поотеделно, в мрежова среда, като това може да повлияе на потока на трафика и да забави неимоверно времето за отговор. PL/SQL блоковете позволяват единствена компилация и съхраняване във форма за изпълнение за подобряване времето на отговор PL/SQL програма, която е запазена в базата данни във форма за компилация, и чието извикване става чрез името й, се нарича запазена процедура (stored procedure). PL/SQL запазена процедура, която се стартира безусловно, в резултат от изпълнението на INSERT, UPDATE или DELETE част, се нарича тригер (trigger)

Transact-SQL

Transact-SQL е процедурен език, използван и при Microsoft SQL Server и при Sybase SQL Server системите. Това е програмен език, снабден с всички способности, който драматично разширява силата на SQL. Този език осигурява на програмистите широк спектър от възможности, включително:



  • Богато множество от типове на данните, включително специализирани типове за идентификатори, картинки, полета за по-дълъг текст.

  • Локални и глобални променливи

  • Напълно програмирани сървърни обекти като изгледи (views), тригери (triggers), запазени процедури (stored procedures) и бач файлове (batch command files)

  • Условни процеси

  • Поддръжка на изключения и грешки

  • Контрол на транзакциите

Системните запазени процедури (stored procedures), които намаляват сложността на много операции, се справят с добавяне на потребители или автоматично генериране на HTML Web страници.

Докато SQL осигурява общ синтаксис за разработване на заявки, все още съществува необходимостта от протокол, който може да приема този стандартен синтаксис, да го превежда на естествен за процедурни извиквания език и в действителност да извършва заявката. Open Database Connectivity (ODBC) стандартно осигурява абстрактен слой между приложния интерфейс и базата данни, който ефективно скрива разликите и странностите на всяка специфична база данни. ODBC и SQL имат поддръжката на всяка основна софтуерна компания в света, включително Microsoft, Sun и IBM.

ODBC

ODBC, съкращение от Open DataBase Connectivity (конективност между отворени бази данни) (може да мислите за това като за универсален конектор) е един от най-популярните интерфейси за бази данни на РС-съвместимите компютри и бавно завоюва позиции и на другите платформи. Ако искаме да дефинираме с едно изречение какво представлява ODBC, то ще е (Roberts, Helar, Earnest, 2000): “ODBC предоставя функции за операции над бази данни от език за програмиране включително добавяне, модифициране и изтриване на данни, намиране на различни параметри на базите данни, таблиците, виртуалните таблици и индексите.”

Всяко приложение, поддържащо ODBC, се състои от пет логически слоя:



  • приложение,

  • интерфейс към ODBC,

  • диспечер на драйверите,

  • драйвер и източник на данни.

Слоят "приложение" осъществява потребителския интерфейс и изчислителната част на програмата и е написан на език като Java, Visual Basic или C++. Приложението използва функциите за работа с ODBC от интерфейса за ODBC. Диспечерът на драйверите е част от ODBC на Microsoft. Той управлява наличните драйвери зарежда необходимия драйвер, насочва извикванията към него, предоставя информация за драйвера на приложението. Тъй като една програма може да взаимодейства с база данни, диспечерът на драйверите се грижи всяка СУБД да получава съответстващите й извиквания и данните от базите да бъдат безпроблемно предавани на приложенията Драйверът е компонент, който съответства на конкретната база данни, например драйвер за Access, за SQL Server или Oracle. В интерфейса към ODBC има набор от функции като SQL заявки, управление на свързването, запитвания за информация относно бази данни и др. Изпълнението им се осъществява именно от драйвера. За някои бази данни той трябва да симулира изпълнението на функции, които не се поддържат пряко от съответната СУБД. Всъщност работата на драйвера се състои в изпращането на заявки към базата. получаването на данни и препращането им към приложението. За бази данни в локални мрежи или Internet драйверът също така управлява мрежовия обмен. В контекста на ODBC източникът на данни може да бъде СУБД или просто набор от файлове върху твърд диск.

Нива на съвместимост с ODBC

Основната част от ODBC система е драйверът, за който стана дума по-горе, и който всъщност осъществява обмена с базата от данни. ODBC не изисква драйверът да поддържа всички функции на интерфейса. Вместо това са дефинирани нива на съвместимост с ODBC по отношение на програмния интерфейс и синтаксиса на SQL заявките. Единственото изискване е, когато драйверът отговаря на някакво ниво на съвместимост, да поддържа всички функции от това ниво независимо от това дали те са включени в СУБД. Таблицата от Приложение А обобщава нивата на съвместимост за програмния интерфейс и SQL.

Драйверът трябва да емулира ODBC функциите, които не се поддържат от използваната СУБД по такъв начин, че за интерфейса към ODBC реализацията на СУБД да няма значение. Приложенията използват функции от програмния интерфейс като SQLGetFunctions и SQLGetInfo за получаване на информация за поддържаните от драйвера функции.

Как се свързва програма към база от данни?

Tова може да разберете в подробност от (Perl, CGI & JavaScript - SYBEX), затова тук ще се спрем само на част от написаното в тази книга: “Модулът Win32::ODBC стана стандарт за свързване на Win32 приложения към различни програми за бази данни. Той, както и другите ODBC приложения се свързват към вашата база данни (примерно Access) чрез DSN име (Data Source Name - име на източник на данни). Това е стандартен начин за комуникиране с всички бази данни, който се изисква от ODBC, за да може да се работи с много и различни машини за бази данни.”

DSN съдържа общ набор от информация, която всички бази данни трябва да предоставят, затова е необходимо създаването на DSN име, преди свързването на дадена програма към база данни. Ето каква информация се извлича от DSN името:


  • Местоположенията на базата данни;

  • Типът на драйвера на базата данни;

  • Информация за потребителско име и парола;

Има два основни типа DSN имена:

  • Потребителско (User) DSN името е достъпно само за акаунта, който го е създал. Ако създавате DSN за собствено ползване, трябва да създадете User DSN.

  • Системно (System) DSN име - достъпно е за който и да е акаунт. Ако създавате DSN, което ще бъде използвано от множество потребители, трябва да създадете System DSN.

Можете да създавате DSN имена през Control Panel на Windows или като използвате в програмите си модула Win32::ODBC.

Използване на модула Win32::ODBC

За да създадете DSN име чрез програма, първо е необходимо да знаете какви драйвери има на компютъра ви. Програмата на Perl по-долу използва модула Win32::ODBC, за да събере списък от всички ODBC драйвери и да ги отпечата на монитора

use Win32::ODBC;


#получава наличните драйвери
%drivers = Win32::ODBC::Drivers( );
#при отпечатването на атрибутите на драйверите те са разделени със запетая
local $” = “, “;
foreach $driver (sort keys %drivers){
@attributes = split (/;/,$drivers{ $driver} );
print “Driver = $driver\n“;
print “@attributes\n\n”;
}

В Приложение Б е разгледана програма на Perl, която показва как се създава DSN за Access база данни, в която искаме да пазим информация за email адрес и името на лицето за контакт.

По начина, описан по-горе, използвайки методите Win32::ODBC, може да се осъществи връзка към база данни, да се създадат таблици, да се извличат или вмъкват данни.

JDBC

Стандартният достъп до релационни бази от данни е важен и за програмите на Java, тъй като те по природа не са монолитни, съдържащи всичките си данни приложения. Те са модулни и се нуждаят от външни бази от данни, от които четат, обработват и записват обратно данни, които после да бъдат използвани от други аплети. Монолитните приложения могат да си позволят собствени схеми за съхраняване на данните, но пресичащите границите между операционни системи и платформи аплети трябва да използват отворени стандартни схеми за достъп. JDBC (Java Database Connectivity, Връзка на Java с бази данни) на Java Enterprise е първият междуплатформен и поддържащ много СУБД програмен интерфейс за използване на бази от данни от програми на Java. От гледна точка на разработчика JDBC е първият стандартизиран метод за интегриране на Java с базите от данни.

Други приложни програмни интерфейси на Enterprise са RMI, средствата за сериализация, Java IDL (Interface Definition Language, Език за дефиниране на интерфейси) за комуникация с CORBA и др. В проектирането на JDBC са използвани основни абстракции и методи от ODBC. Идеята за базиране на JDBC върху ODBC идва от това, че ODBC е популярен сред независимите разпространители на софтуер, както и сред потребителите и реализирането и използването на JDBC ще бъде по-лесно за хора, работили с ODBC. Освен това Sun и Intersolv разработват програми за връзка JDBC-ODBC, за да се използват многобройните съществуващи ODBC драйвери. С JDBC и тези програми ще можете да се работи с фактически всяка бази данни от средата на програми и аплети на Java.

Какво представлява JDBC?

JDBC е набор класове и методи за взаимодействие на програми на Java с източници на данни. Той е базиран на X/Open SQL Call Level Interface (CLI), както и ODBC, за да се приеме лесно от разработчици и потребители. ОDBC е интерфейс на С към СУБД, поради което не е толкова лесно да бъде прехвърлен на Java, затова JDBC следва концепциите, заложени в ODBC, но едновременно с това е програмен интерфейс, напълно съвместим и еднотипен с останалите програмни интерфейси за Java и на места предлага по-прости за използване решения от ODBC. Най-общо архитектурата на едно приложение, използващо JDBC може да бъде видяно на фигурата, по-долу:



Как работи JDBC?

В JDBC е дефиниран набор класове и методи за взаимодействие със СУБД. В програмата на Java се отваря връзка към базата данни, създава се обект-заявка, SQL заявката се препраща към СУБД чрез този обект, и се получава резултата, както и допълнителна информация. Обикновено класовете от JDBC и приложението на Java се намират на клиентския компютър. Те също така могат да бъдат заредени от мрежата. За да се намали загубата на време, по-добре е класовете на JDBC да са инсталирани при клиентската част. СУБД и източникът на данни обикновено се намират на отдалечен сървър. Приложението и JDBC осъществяват взаимодействие на клиентската машина, а драйверът се грижи за обмена с базата от данни по мрежата.

Класовете от JDBC са в пакета Java.sql и се използват от всички програми на Java за четене и запис в източници на данни. Програма, използваща JDBC, се нуждае от драйвер за съответната СУБД. Допустимо е приложение да работи с няколко разнородни източника на данни. Затова в JDBC е вграден диспечер на драйверите, чието предназначение е да управлява драйверите и да предоставя списък на наличните драйвери на приложенията.

Връзка JDBC-ODBC

Като част от JDBC е включен драйвер за достъп до източници на данни, поддържащи ODBC. Драйверът е разработен съвместно от JavaSoft и Intersolv и се нарича JDBC-ODBC bridge. Реализиран е като файл JdbcOdbc.class и като машинно зависима библиотека за достъп до ODBC драйвера. За Windows машинно зависимата библиотека е файл JDBCODBC.DLL. Тъй като JDBC и ODBC са доста близки, драйверът за връзка между тях не е много сложен. Той всъщност преобразува извикванията на методи от JDBC в извиквания на функции от ODBC и по този начин може да взаимодейства с всеки ODBC драйвер. Като резултат JDBC може да осигурява достъп до почти всички бази данни поради широкото разпространение на ODBC.





Сподели с приятели:
  1   2   3   4   5




©obuch.info 2024
отнасят до администрацията

    Начална страница