SDJ 11 2006 PL 34 43


Bazy
danych
Ewolucja i efektywność
technologii dostępu do baz danych
Artur Mościcki
by połączyć się i oprogramować bazę da-
Aplikacja
nych przechowywaną na określonym serwe-
Arze trzeba wykorzystać technologię dostępu Zarz dca sterowników
do baz danych. Celem niniejszego artykułu jest ana-
Sterownik Steronik Sterownik
liza efektywności technologii dostępu do baz danych
Oracle, DB2, SQL Server, Informix, InterBase, My-
yródło danych yródło danych yródło danych
SQL oraz Access z poziomu aplikacji napisanej w ję-
zyku Delphi. W stworzonej na potrzeby artykuły apli-
kacji przetestowana zostanie efektywność technolo-
gii dostępnych w środowisku Delphi: ADO, ODBC,
Rysunek 1. Architektura ODBC
BDE, dbExpress, IBX, IBO, FIB, ODAC, SDAC, My-
DAC, EasySoft i Gemini. Jednak, by lepiej zrozumieć Standard ten został opracowany przez SQL Access
wyniki efektywności przedstawione w dalszej części Group we wrześniu 1992 roku jako alternatywa dla
artykułu należy najpierw zapoznać się z charaktery- DAO i jest używany do dziś. Przedstawiciele kilku
stycznymi cechami poszczególnych technologii. Ce- firm produkujących zarówno sprzęt jak i oprogra-
chy te zostaną zaprezentowane z uwzględnieniem mowanie przez kilka lat pracowali w SQL Access
chronologii narodzin poszczególnych technologii do- Group (SAG) nad zdefiniowaniem uniwersalnego
stępu do baz danych. sposobu dostępu do danych w celu uproszczenia
oprogramowania typu klient-serwer. Firma Micro-
Ewolucja technologii soft wykorzystała wyniki pracy grupy SAG i opra-
dostępu do baz danych cowała tak zwany call-level interface, pózniej na-
Po tym, jak na początku lat dziewięćdziesiątych zwany Open Database Connectivity (ODBC).
systemy baz danych, takie jak dBase Paradox, Clip- ODBC definiuje niskopoziomowy zbiór funkcji
per i FoxPro stały się popularne zaistniała koniecz- umożliwiających aplikacji klienta i serwera wymia-
ność stworzenia mechanizmów dostępu do da- nę danych i przekazywanie instrukcji bez koniecz-
nych przechowywanych w bazach z poziomu róż- ności posiadania dokładnych informacji o imple-
nych języków. Ten czynnik stał się przyczyną stwo- mentacji zarówno klienta jak i serwera. Dotyczy to
rzenia technologii dostępu do baz danych. Tak po- dowolnych instrukcji wykonywanych w aplikacjach
wstały DAO (Data Access Object), OLE.DB (Ob- klient-serwer niezależnie od tego, czy klient i ser-
ject Linking and Embedding DataBase), czy wresz- wer działają na tym samym, czy na różnych kom-
cie ODBC (Open DataBase Connectivity). Jednym puterach, a nawet na różnych platformach zarówno
z pierwszych mechanizmów dostępu do danych by- programowych, jak i sprzętowych.
ła technologia DAO. DAO to technologia, która ja- Na architekturę interfejsu ODBC składają się
ko pierwsza posługiwała się obiektami dostępu do cztery elementy (Rysunek 1, przy czym dwa  ste-
danych. Składała się z uporządkowanego zbioru rownik i zarządca sterowników  pojawiły się w tech-
obiektów pozwalających na łatwą obsługę małych nologiach dostępu po raz pierwszy):
baz danych typu dBase, MS Access itp. w systemie
operacyjnym Microsoft Windows. " aplikacja  wykonująca swoiste czynności prze-
Po DAO stworzono m.in. ODBC  otwarte łą- twarzania posługując się zapytaniami SQL w ce-
cze baz danych). ODBC to interfejs pozwalający lu uzyskania i składowania niezbędnych dla pro-
programom łączyć się z systemami zarządzają- cesu danych;
cymi bazami danych. Jest to API (Application Pro- " zarządca sterowników (Driver Manager)  w po-
gramming Inteface) niezależne od języka progra- staci biblioteki DLL (Dynamic Link Library), któ-
mowania, systemu operacyjnego i bazy danych. rego zadaniem jest udostępnienie aplikacji odpo-
wiedniego sterownika bazy danych;
" sterownik  zazwyczaj w postaci biblioteki DLL,
Artur Mościcki jest absolwentem informatyki. Od dłuż-
element wykonujący funkcje interfejsu ODBC
szego czasu zajmuje się współpracą różnych środowisk
wywołane przez zarządcę sterowników. Prze-
z bazami danych i programowaniem baz danych. Jest
kazuje on również do zródła danych żądania
również współautorem książki  Oracle 10g i Delphi. Pro-
SQL, a do aplikacji uzyskane wyniki. Jeśli jest
gramowanie baz danych .
Kontakt z autorem: arturmoscicki@op.pl to wymagane sterownik może modyfikować wy-
konywane zapytanie SQL w celu dostosowania
34
www.sdjournal.org
Software Developer s Journal 11/2006
Ewolucja i efektywność technologii dostępu do baz danych
Pocz tki technologii
Technologie obiektowe
Technologie DAO Technologie
dedykowane ODBC uniwersalne
OLE.DB
BDE
IBX
ADO
ODAC
dbExpress
IBO
SDAC
Gemini JDBC ADO.NET
FIB
Zeos
MyDAC
EasySoft BDP.NET
FIB+
Technologie
bezpośredniego Technologie oparte Technologie Technologie Technologie wpsierane
dostępu o ODBC Hybrydowe wymagaj ce JVM przez .NET
Rysunek 2. Ewolucja technologii dostępu do baz danych
go do specyfiki docelowego zródła danych (np. dopaso- ło łączyć się z bazami danych. OLE.DB jest ciągle rozwija-
wanie dialektu SQL konkretnego systemu zarządzania ne, dzięki czemu dziś jest jedną z kluczowych technologii.
bazami danych); Po sukcesie OLE.DB i ODBC zaczęły powstawać inne
" zródło danych  najczęściej system zarządzania bazami technologie dostępu do baz danych. Jednak największy roz-
danych. kwit technologii dostępu rozpoczął się wraz z pojawieniem się
na rynku środowisk Borland Delphi i Borland C++ Builder. Dla
W czasie tworzenia ODBC programiści Microsoft wymyśli- tych środowisk stworzono wiele specjalistycznych technologii
li model obiektów COM (Component Object Model), które dostępu do baz danych: IBX (InterBase Express), IBO (InterBa-
mogą być wykorzystywane w każdym środowisku programi- se Objects), FIB (Free InterBase), ODAC (Oracle Data Access
stycznym Win32. Wynikiem powstania obiektów COM była Components), SDAC (SQL Server Data Access Components),
kontrolka z rozszerzeniem DLL i technologia OLE.DB. OLE MyDAC (MySQL Data Access Components), Gemini, EasySoft,
DB to mechanizm firmy Microsoft służący do uzyskiwania BDP.NET (Borland Data Provider for .NET), BDE (Borland Da-
dostępu w odniesieniu do dowolnego zródła danych, a nie ta Engine). Firmy Microsoft i Sun również stworzyły technologie
tylko baz danych SQL. Aplikacje mogą wykorzystywać OLE dostępu dla swoich narzędzi programistycznych. Tak narodzi-
DB do bezpośredniego dostępu do danych lub też poprzez ły się ADO i JDBC (Java DataBase Connectivity). Technologia
OLE DB mogą wywoływać ODBC, aby uzyskać dostęp do ADO została zaadoptowana przez inne firmy, dzięki temu dziś
baz poprzez ODBC. OLE.DB jest bardzo trudne do imple- możemy korzystać z ADO np. w Borland Delphi.
mentacji, dlatego też w pózniejszym okresie stworzono Na Rysunku 2 zaprezentowano ewolucję technologii dostępu
technologie wyższego poziomu, które wykorzystują OLE.DB do baz danych z uwzględnieniem charakterystycznych cech po-
do łączenia się z bazami, ale ich implementacja jest zdecy- szczególnych technologii. Należy zauważyć, że wraz z rozwojem
dowanie prostsza. Przykładem takiej technologii jest ADO technologii dostępu do baz danych następuje ich podział i specja-
(ActiveX Data Objects). W OLE.DB podobnie jak w DAO za- lizacja. Istnieją i prawdopodobnie będą powstawać nowe uniwer-
stosowano klasy, obiekty i metody, dzięki którym można by- salne technologie oparte na obiektach, pozwalające na dostęp
R E K L A M A
Bazy
danych
APLIKACJA
Parametry sprzętowe
" procesor: AMD Duron 800 MHz;
BDE
" pamięć RAM: 384 MB (DIMM);
" dysk: Samsung 80 GB, 4 MB cache.
BAZA DANYCH
Parametry systemowe
Rysunek 3. Relacje pomiędzy aplikacją a mechanizmem BDE
" system operacyjny: Windows XP Professional + SP2
do różnych baz danych. Jednak na drodze ewolucji wykształciły
się technologie, które muszą być uruchamiane na maszynie wir-
tualnej albo w środowisku uruchomieniowym (.NET Framework). Również w BDE po raz pierwszy pojawił się własny bu-
Dzięki temu ich implementacja i przenaszalność na inne kompu- for rekordów w postaci zbioru danych (DataSet). Definicja
tery jest dużo łatwiejsza. Wraz z pojawieniem się na rynku śro- zbioru danych została sformułowana jako struktura kolumn
dowiska Borland Delphi zaczęły powstawać technologie dedyko- (grupujących dane tego samego typu) i wierszy będących
wane jednemu serwerowi baz danych. Wśród nich są technolo- warstwą pośredniczącą pomiędzy komponentami obsługi
gie bezpośredniego dostępu do baz danych, technologie opar- danych (w Delphi jest to np. komponent klasy TTable) a kom-
te na mechanizmach ODBC oraz technologie hybrydowe, które ponentami wizualnymi, za pomocą których zaprezentowana
oprócz specyficznych mechanizmów dostępu do baz danych po- zostanie zawartość tabel (np. DBGrid).
trafią również wykorzystywać zródła ODBC. BDE nie jest niestety rozwiązaniem idealnym. Zaprojekto-
Po pewnym czasie zauważono, że ODBC nie jest technolo- wany został w czasach, gdy królowały proste systemy bazo-
gią wystarczająco efektywną i stworzono nowy mechanizm do- danowe oparte na płaskich plikach, takie jak Paradox czy dBa-
stępu  BDE (Borland DataBase Engine). BDE powstała przy se. Obecnie najczęściej stosowanym rozwiązaniem są relacyj-
współpracy kilku firm, m.in. Borland, Microsoft, IBM, HP i Oracle. ne bazy danych, obsługiwane za pomocą języka SQL, współ-
Dawniej była to podstawowa technologia dostępu do baz danych, pracujące z oprogramowaniem w architekturze klient  ser-
obecnie jest wypierana przez inne, takie jak ADO czy dbExpress. wer. Instalowanie BDE na wynajmowanych serwerach interne-
Zaletą BDE jest większa w porównaniu z ODBC szybkość dzia- towych jest bardzo często niemożliwe ze względu na obawy fir-
łania oraz prostota obsługi, wadą zaś  niska prznaszalność. my zarządzającej serwisem (ISP) związane z uruchamianiem
Wynika to z faktu, że BDE nie obsługuje systemu zarządzania usług systemowych na ich serwerach. Pomimo uaktualnie-
baz danych bezpośrednio, lecz robi to poprzez pośrednika, jakim nia BDE, np. wprowadzono obsługę takich mechanizmów jako
jest program SQL Links. Obecnie firma Borland rezygnuje z roz- model obiektowo-relacyjny, wiele z cech tego silnika jest nadal
wijania tej technologii, niemniej cały czas można ją wykorzystać przywiązanych do jego paradoksowych korzeni. Dobrym przy-
do łączenia się aplikacji z bazami danych. kładem jest sposób mapowania pól numerycznych na typy da-
BDE to zbiór bibliotek DLL i narzędzi pośredniczących nych. W BDE czynność ta stwarza problemy zgodności przy
przy łączeniu się z bazą danych. Dzięki temu nie trzeba ma- współpracy kodu Delphi z różnymi serwerami SQL.
nipulować na funkcjach konkretnej bazy danych  wystarczą Obecnie technologia BDE nadaje się do realizacji małych
opcję dostępne w BDE. Rysunek 3 przedstawia zależności projektów o charakterze lokalnym, gdzie nieistotne jest bez-
pomiędzy aplikacją a BDE. pieczeństwo i spójność danych.
W BDE po raz pierwszy pojawiło się pojęcie silnika ba- Sukcesy ODBC i BDE skłoniły firmę Microsoft do opraco-
zodanowego (engine). Na jakiej zasadzie działa taki mecha- wania nowego mechanizmu dostępu do danych, który będzie
nizm? Każdy system zarządzania bazami danych posiada łatwiejszy w implementacji niż OLE.DB. Tak powstała techno-
własny interfejs API komunikujący się z bazą danych. Rzadko logia dostępu do baz danych o nazwie ADO. ADO podobnie
albo nigdy nie zdarza się tak, aby dwa systemy miały taki sam jak OLE.DB bazuje na obiektach COM. Idea, która przyczyniła
interfejs. Natomiast dzięki BDE nie musimy znać szczegółów się do powstania ADO, zakładała dostęp do bazy danych bez
implementacji takich baz  połączenie z Oracle czy InterBase znajomości jej wewnętrznej struktury. Taką samą ideą kiero-
przebiega tak samo. Specjalne sterowniki w postaci progra- wali się twórcy BDE. Jednak różnica pomiędzy BDE i ADO
mów SQL Links dokonują translacji poleceń BDE na polecenia jest znacząca. BDE to zwykłe komponenty wykorzystujące
specyficzne dla danego systemu zarządzania bazami danych. dodatkowe biblioteki. ADO natomiast jest warstwą pośrednią i
Dzięki takiemu rozwiązaniu aplikacja może się łączyć z dowol- technologią samą w sobie.
ną bazą danych nie znając szczegółów jej implementacji. Ponieważ ADO zakłada taką samą obsługę wszystkich
baz danych (a jak wiadomo różne systemy bazodanowe cha-
rakteryzuje różna funkcjonalność), to obsługa wszystkich
.NET Framework
wspólnych możliwości oznacza przeważnie ustalenie najniż-
ADO.NET
szego wspólnego mianownika dla wszystkich baz.
Jak wspomniano, ADO stanowi pewnego rodzaju warstwę
Data
Dane DataSet
Provider
pośrednią  technologię tę stworzono do ułatwienia korzysta-
nia z usług OLE.DB. Oprócz dostępu do baz danych, za po-
mocą ADO można uzyskać dostęp do plików Excela, plików
Windows Forms ASP.NET Usługi WEB
tekstowych, plików Lotusa, HTML i wielu innych zródeł da-
Rysunek 4. Architektura ADO.NET nych, co jest pomysłem bardzo nowatorskim.
36
www.sdjournal.org
Software Developer s Journal 11/2006
Ewolucja i efektywność technologii dostępu do baz danych
Autorzy Autorzy ksiazki Ksiazki Kategorie
1 1 1
id autora id autora ksiazki isbn id kategorii
imie id autora tytul nazwa
nazwisko isbn podtytul
liczba stron
id kategorii
recenzja
miejsce
ilosc ksiazek
Rysunek 5. Schemat relacji pomiędzy tabelami bazy danych
Wraz z pojawieniem się platformy .NET Microsoft wpro- dokonują operacji na serwerze, wysyłają odpowiednie zapyta-
wadził pewne zmiany w ADO, które dostępne jest teraz ja- nia SQL i uzyskują rezultat działania.
ko ADO.NET.  Nowe ADO można podzielić na mechanizmy Dostarczyciel danych (Data Provider) to odpowiednik ste-
dostępu do danych oraz system przechowywania danych. rownika, który ma za zadanie połączyć się z bazą danych lub
Wszystkie interfejsy charakterystyczne dla platformy .NET odczytać odpowiedni plik, ukrywając przy tym szczegóły im-
umieszczone zostały w przestrzeni nazw System.Data. Klasy plementacyjne. ADO.NET zapewnia obsługę baz danych MS
związane z gromadzeniem danych to DataSet (zbiór danych), SQL Server, Oracle, oraz technologii OLE.DB. Jednak firma
DataTable, DataRow i DataColumn. W przeciwieństwie do mecha- Borland udostępnia dodatkowe mechanizmy zwane Borland
nizmów przechowywania danych, który znajduje się w kla- Data Provider (BDP), które z kolei umożliwiają proste połą-
sach, dostęp do danych odbywa się za pośrednictwem inter- czenia z dodatkowymi zródłami danych np. z bazami InterBa-
fejsów. W .NET istnieje aż pięć mechanizmów dostępu do da- se lub DB2.
nych, które znajdują się w przestrzeniach: System.Data.SQLC- Zbiór danych (DataSet) w ADO.NET jest pamięciowym
lient, System.Data.OleDb, System.Data.ODBC, System.Data.SQLSe- odwzorowaniem tabel, danych i relacji. ADO.NET pracuje z
rverCE, System.Data.OracleClient. danymi w trybie rozłączonego dostępu do danych. Oznacza
Rysunek 4 prezentuje uproszoną architekturę ADO.NET, to, że wszelkie operacje na danych nie są fizycznie odzwier-
której głównymi komponentami są zbiór danych (DataSet) ciedlane w tabeli  jedynie użytkownicy mają takie wrażenie.
oraz dostarczyciel danych (Data Provider). yródło danych mo- Aby rzeczywiście uaktualnić dane, należy zaprogramować
że znajdować się w fizycznej bazie danych lub pliku XML. Da- dodatkowe czynności.
ta Provider wykonuje połączenia i wysyła polecenia, a Data- W ADO dane pomiędzy zródłem danych a aplikacją
Set reprezentuje dane w pamięci. transportowane były w formie zbioru rekordów (RecordSet)
yródłem danych jest najczęściej baza danych lokalna, lub bez względu na to, czy pochodziły z jednej, czy z kilku tabel.
umieszczona na serwerze, a rzadziej plik XML, Excel, Lotus W ADO.NET zbiór rekordów zastąpiono zbiorem danych.
itp. ADO.NET dostarcza odpowiednich komponentów, które Dane znajdujące się w zbiorze danych zawarte są z kolei
Tabela 1. Komponenty różnych technologii, służące do zbudowania aplikacji współpracujęcej z bazami danych
Technologia Komponent do na- Komponent wykonują- Komponent przekazują- Komponentdo wizuali-
wiązania połączenia cy zapytania SQL cy dane do wizualizacji zacji danych
ODBC DataBase (komponent Query (komponent z DataSource (komponent z DBGrid
z technologii BDE) technologii BDE) technologii BDE)
BDE DataBase Query DataSource DBGrid
ADO ADOConnection ADOQuery DataSource DBGrid
dbExpress Connection SQLQuery - ListView
IBX IBXDataBase IBXQuery (wymaga DataSource DBGrid
umieszczenia kompo-
nentu IBTransaction)
IBO IB_Connection IB_Query (wymaga IB_DataSource DBGrid
umieszczenia kompo-
nentu IB_Transaction)
FIB pFIBConnection IB_Query (wymaga DataSource DBGrid
umieszczenia kompo-
nentu pFIBTransaction)
ODAC OraSession OraQuery OraDataSource DBGrid
SDAC MSConnection MSQuery DataSource DBGrid
MyDAC MyConnector MyQuery DataSource DBGrid
Gemini DataBase (komponent Query (komponent z DataSource DBGrid
z technologii BDE) technologii BDE)
EasySoft DataBase (komponent Query (komponent z DataSource DBGrid
z technologii BDE) technologii BDE)
Software Developer s Journal 11/2006 www.sdjournal.org
37
8
8
8
Bazy
danych
Jak stworzyć aplikację mierzącą efektywność
w tabelach (DataTable). Jeśli aplikacja żąda od ADO.NET
zwrócenia danych z dwóch tabel, to dane zwracane są w technologii dostępu do baz danych?
formie dwóch tabel, które z kolei znajdują się w zbiorze da-
Tworzenie aplikacji w Delphi, która zmierzy efektywność technologii
nych. Natomiast relacje pomiędzy tabelami znajdującymi się
dostępu jest dość proste i co najważniejsze bardzo podobne mimo
w zbiorze danych reprezentowane są przez instancję klasy
wykorzystania różnych technologii. Dlatego zaprezentuję sposób
DataRelation.
tworzenia takiej aplikacji z wykorzystaniem ADO. Na formularzu na-
Poza omówionymi różnicami między ADO i ADO.NET
leży umieścić komponenty ADOConnection, ADOQuery, DataSource,
istnieje jeszcze jedna cecha różniąca te dwie technologie 
DBGrid, 2 komponenty Button i pole edycyjne RichEdit. Następnie
platforma .NET Framework, która jest wymagana do urucha-
należy skonfigurować połączenie z bazą danych  w tym celu na-
miania aplikacji ADO.NET. .NET Framework to środowisko
leży dwukrotnie kliknąć komponent ADOConnection i postępować
uruchomieniowe wymagane do uruchomienia w systemie zgodnie z instrukcjami wyświetlanymi w nowo otwartym oknie po-
łączenia. Na koniec należy zmienić właściwość Connected kompo-
Microsoft Windows programów utworzonych w technologii
nentu ADOConnection ma True. W komponencie ADOQuery należy
.NET (np. w językach C#, Borland Delphi 2005, VB.NET).
ustawić właściwość Connection na komponent ADOConnection, w
Tak więc .NET Framework jest czymś w rodzaju maszy-
komponencie DataSource właściwość DataSet na komponent ADO-
ny wirtualnej Java. Jednak różnica pomiędzy maszyną wir-
Query, a w komponencie DBGrid właściwość DataSource na kom-
tualną a środowiskiem uruchomieniowym jest zasadnicza
ponent DataSource. Ostatnim krokiem jest umieszczenie procedur
 maszyna wirtualna służy do uruchamiania aplikacji Java
zaprezentowanych w listingach 2 i 3 w kodzie programu i wywoła-
na wielu platformach systemowych, natomiast .NET Frame-
nie ich w zdarzeniach kliknięcia przycisków onClick, oczywiście z
work służy do uruchamiania aplikacji napisanych w różnych
odpowiednimi parametrami.
językach, ale na platformie systemowej MS Windows. .NET
Framework zawiera wspólne typy danych, zmienne, mecha-
nizmy dostępu, które mogą być wykorzystywane w różnych Delphi BDP.NET jest rozwiązaniem słusznym i koniecznym,
językach przystosowanych do .NET jeśli zaistnieje konieczność połączenia się z InterBase lub
Wspomniano już o mechanizmach BDP ułatwiających DB2 za pomocą ADO.NET.
połączenie ze zródłami danych. Wraz z pojawieniem się Sukces technologii ADO przyczynił się do opracowania
ADO.NET stworzono nowych dostawców danych dla .NET przez firmę Borland nowszej i dużo lepszej niż BDE techno-
i nazwano je Borland Data Provider for .NET (BDP.NET). logii dostępu do baz danych. Tak powstala technologia dbE-
BDP.NET to zestaw komponentów zgodnych z CLX (Com- xpress, która dostępna jest zarówno w Delphi jak i w Kyliksie.
ponent Library X-Platform for Cross Platform), rozszerzają- Jest to szybka i elastyczna technologia, dużo bardziej efek-
cych funkcjonalność ADO.NET i ułatwiających korzystanie z tywna niż BDE czy ODBC. Technologia ta, posługuje się efek-
baz danych (np. z InterBase) w .NET. tywnymi sterownikami i dzięki temu zapewnia jeden z najszyb-
BDP.NET należy do kodu zarządzanego pod .NET, ale szych dostępów do informacji przechowywanych w bazach da-
są dziełem firmy Borland. Owocuje to koniecznością dołą- nych. Specjalnie stworzone komponenty tej grupy mają charak-
czenia pewnych podzespołów do systemu, na którym bę- ter uniwersalny, dostępne są także dla platformy Linux. Jednak
dzie uruchamiana aplikacja. W przypadku wykorzystania uniwersalność ta przesądza również o stosunkowo ubogim re-
ADO.NET nie ma takiej potrzeby  biblioteka System.Da- pertuarze możliwości w zakresie manipulowania danymi.
ta.dll znajduje się w .NET Framework. Jednak w przypadku Podstawą architektury dbExpress są sterowniki dla róż-
nych systemów zarządzania bazami danych. Każdy z tych
sterowników implementuje zestaw interfejsów umożliwiają-
Listing 1. Programowa metoda mierzenia czasu
cych dostęp do danych specyficznych dla serwera. Współpra-
wykonania różnych czynności
cę aplikacji z tymi sterownikami organizują komponenty grupy
1 var DataCLX, funkcjonujące podobnie do komponentów BDE, tyle
2 Freq, TimeStart, TimeEnd : Int64; że pozbawione są niektórych zbędnych balastów.
3 czas : double; Jedną z najważniejszych cech architektury dbExpress (nie
4 begin występującą w innej technologii), zapewniających jej wysoką
5 ... efektywność, jest jednokierunkowy charakter jej zbiorów danych.
6 if QueryPerformanceFrequency(Freq) then Wyniki zapytań SQL przechowywane są w kursorach jednokie-
7 begin runkowych. Tego typu kursory pozwalają przejść z dowolnego re-
8 QueryPerformanceCounter(TimeStart); kordu do następnego, ale za to nie pozwalają wrócić do poprzed-
9 // czynność, której czas wykonania jest mierzony niego. Cecha ta powoduje, że nie można używać komponentu
10 QueryPerformanceCounter(TimeEnd); DBGrid do wizualizacji danych. Jednak takie podejście sprawia, że
11 czas:=(TimeEnd-TimeStart)/Freq; wszystkie operacje związane z przetwarzaniem danych wykony-
12 RichEdit.Lines.Add('Wykonanie SELECT zajęło: wane są dużo szybciej. Tak więc jednokierunkowy charakter zbio-
13 +FloatToStr(czas)+' sekundy'); rów danych przesądza o braku buforowania rekordów, które jest
14 end; pomocne jedynie przy nawigacji dwukierunkowej i modyfikacji da-
15 ... nych. Kolejnym ograniczeniem jest niemożność używania me-
16 end; tod Last() i Prior() klasy TDataSet, spośród metod nawigacyjnych
można używać jedynie First() i Next(). Niemożliwa jest również
modyfikacja danych (z powodu braku buforów edycyjnych). Moż-
38
www.sdjournal.org
Software Developer s Journal 11/2006
Ewolucja i efektywność technologii dostępu do baz danych
liwe jest jednak edytowanie rekordów za pomocą innych kom- dostęp do międzyplatformowych systemów baz danych, jak
ponentów (TClientDataSet, TSQLClientDataSet). Jednokierunko- Oracle, MySQL czy InterBase.
we zbiory danych nie realizują filtrowania  jako mechanizmu od- Używając BDE, ADO, czy dbExpress używamy silnika nie-
noszącego się do wielu rekordów, wymagałoby ono buforowania zależnego od serwera. Możemy przełączać serwer używa-
wielorekordowego. Jednokierunkowe zbiory danych nie obsługują ny przez naszą aplikację, chociaż nie jest to proste. Jednak,
pól przeglądowych. Tak więc ograniczeń związanych z tą techno- gdy chcemy, by aplikacja niezmiennie używała jednego ser-
logią jest dużo, ale dzięki temu efektywność dostępu do danych wera baz danych, powinniśmy zadbać, aby silnik bazy danych
jest o wiele większa niż w porównaniu np. z ODBC. obsługiwał konkretne API serwera baz danych, którego mamy
W przeciwieństwie do innych technologii, dbExpress nie zamiar użyć. Spowoduje to, że nasze programy będą nieprze-
zużywa zasobów serwera na potrzeby zapytań związanych noszalne na inne serwery baz danych, ale ominiemy warstwę
z metadanymi lub innych dodatkowych poleceń podczas re- pośrednią zyskując w ten sposób na funkcjonalności i przede
alizacji żądań użytkownika. dbExpress nie potrzebuje tak- wszystkim szybkości działania. Zazwyczaj samemu nie two-
że tak dużych, jak BDE, zasobów klienckich, gdyż jednokie- rzy się takiego API, lecz szuka się komponentów, które obu-
runkowe zbiory danych nie mają potrzeby cache owania da- dowują API i pasują do Delphi oraz do architektury jej biblio-
nych. W dbExpress definicje metadanych przetwarzane są teki klas. Doskonałym przykładem takich komponentów jest
przez interfejsy implementowane w bibliotekach DLL. dbE- InterBase Express (IBX). Aplikacje stworzone przy użyciu tej
xpress nie generuje także dodatkowych zapytań związa- technologii będą działały lepiej, szybciej i pozwolą efektyw-
nych np. z nawigowaniem po zbiorze danych, czy też odczy- niej wykorzystać cechy specyficznego serwera  InterBase
tem pól przechowujących dane typu BLOB. Do serwera tra- lub Firebird  bo tylko do tych serwerów baz danych możemy
fiają jedynie zapytania wygenerowane przez aplikację użyt- się połączyć używając IBX. Tak więc IBX nie jest technologią,
kownika. Skutkuje to nie tylko większą efektywnością wyko- która miała zastąpić, bądz rywalizować z innymi technologia-
nywania aplikacji użytkownika, lecz także czyni prostszym mi. Została stworzona po to, by współpracować z konkretną
sam proces jej tworzenia. bazą danych  InterBase.
Kolejną istotną zaletą technologii dbExpress jest jej przy- Używając InterBase Express (IBX) pomijamy BDE i komu-
datność zarówno dla Delphi, jak i dla Kylixa. Technologia ta nikujemy się bezpośrednio z oprogramowaniem klienckim Inter-
wykorzystuje komponenty CLX, a więc po skompilowaniu Base lub Firebird. Komponenty IBX dostępne na dwóch paletach
przez kompilator Kylixa korzystające z niej aplikacje mogą być Delphi w całości zostały stworzone właśnie w Delphi i są specja-
uruchamiane pod Linuksem. Możliwy staje się w ten sposób lizowane dla serwera InterBase i Firebird. Ma to wiele zalet.
R E K L A M A
Bazy
danych
" TIBInstall, TIBUninstall  klasy pozwalające na instalację
Listing 2. Procedura służąca do wykonywania oraz
i odinstalowywanie serwera InterBase.
mierzenia czasu zapytania typu SELECT
procedure zapytanieSelect(zapytanie:string; Ponieważ komponenty i klasy IBX są napisane w całości w
ADOQuery:TADOQuery; RichEdit:TRichEdit); Delphi, więc wkompilowują się w pliki exe aplikacji. Nie trze-
var ba dystrybuować z aplikacją wielu plików DLL, tak jak jest to
Freq, TimeStart, TimeEnd : Int64; w przypadku BDE. Ponieważ aplikacja składa się tylko z pli-
czas : double; ku wykonywalnego nie trzeba też budować dla niej wyrafino-
begin wanych programów instalacyjnych. Nie trzeba również dbać o
try to, by ktoś nie zepsuł konfiguracji (tak jak jest to w przypadku
ADOQuery.Close; //zamknięcie komponentu BDE), wszystko jest pod kontrolą IBX.
ADOQuery.SQL.Clear; //wyczyszczenie zawartości SQL Po sukcesie, jaki odniosła baza danych InterBase i tech-
ADOQuery.SQL.Add(zapytanie); //dodanie nowego zapytania nologia IBX, bardzo wiele firm zaczęło się zastanawiać nad
if QueryPerformanceFrequency(Freq) then stworzeniem własnej technologii (bezpośredniego dostępu)
begin pozwalającej na dostęp do serwera InterBase. Technologia
QueryPerformanceCounter(TimeStart); taka miałaby być alternatywą dla IBX. W takich okoliczno-
ADOQuery.Open; //wykonanie zapytania SELECT ściach na początku XXI wieku narodziły się dwie technolo-
QueryPerformanceCounter(TimeEnd); gie FIB i IBO pozwalające na dostęp tylko do bazy danych
czas:=(TimeEnd-TimeStart)/Freq; InterBase.
RichEdit.Lines.Add('Wykonanie zapytania SELECT zajęło:' Technologie IBX, FIB i IBO są do siebie bardzo podob-
+FloatToStr(czas)+' sekundy'); ne. Różnią się nazwami komponentów, właściwości i klas,
end; jakie trzeba używać, aby połączyć się z bazą danych oraz
except efektywnością. Poza tym różnic między tymi technologiami
end; nie ma zbyt wiele. W technologiach FIB i IBO nie znajdzie-
end; my klas, które nie mają swoich odpowiedników w technolo-
gii IBX. Z tego też względu technologie FIB i IBO nie są re-
wolucyjne, są po prostu kolejnymi mechanizmami, które słu-
Dzięki usunięciu spomiędzy aplikacji i serwera InterBase żą do pracy z InterBase.
warstwy pośredniej, zmniejszono do minimum narzut na wy- Drugą grupą technologii dedykowanych określonemu ser-
konanie zapytań, a czas komunikacji z serwerem stał się re- werowi baz danych są mechanizmy, które wywodzą się z
welacyjnie krótki. Jak już wspomniano IBX przyjmuje skrajnie ODBC. Doskonałym przykładem takich technologii są Gemi-
odmienne od innych technologii podejście  jest to ściśle spe-
cjalizowana technologia. Dzięki temu potrafi wykorzystać rów-
Listing 3. Procedura służąca do wykonywania oraz
nież te funkcje InterBase (Firebird), które są rzadko spotykane
mierzenia czasu zapytań typu INSERT, UPDATE,
w innych serwerach.
DELETE
Ponadto w IBX pojawiło się bardzo dużo nieznanych do tej procedure zapytanie_Insert_Delete_Update(zapytanie:string;
pory w innych technologiach klas. Najważniejsze z nich, któ- ADOQuery:TADOQuery;
re nie mają swoich odpowiedników w dotychczas omówionych typ_zapytania:string;
technologiach to m.in.: RichEdit:TRichEdit);
var
" TIBExtract  klasa potrzebna, gdy istnieje konieczność Freq, TimeStart, TimeEnd : Int64;
wygenerowania kodu SQL, który posłuży do utworzenia czas : double;
obiektów w bazie danych. Za pomocą obiektów tej klasy begin
można uzyskać dostęp do kodu tworzącego obiekty syste- try
mowe w bazie danych; ADOQuery.Close; //zamknięcie komponentu
" TIBSQLVar  klasa wykorzystywana w celu umożliwienia do- ADOQuery.SQL.Clear; //wyczyszczenie zawartości SQL
stępu do pół w wyniku zapytania wykonywanego przez ADOQuery.SQL.Add(zapytanie); //dodanie nowego zapytania
użytkownika; if QueryPerformanceFrequency(Freq) then
" TIBInputRawFile  klasa umożliwia odczyt plików w takim begin
formacie, w jakim zapisywane są zewnętrzne pliki baz da- QueryPerformanceCounter(TimeStart);
nych InterBase; ADOQuery.ExecSQL; //wykonanie zapytania
" TIBConfigService  klasa umożliwiająca ustawienie para- QueryPerformanceCounter(TimeEnd);
metrów bazy danych; czas:=(TimeEnd-TimeStart)/Freq;
" TIBBackupService  klasa pozwalająca tworzyć kopie zapa- RichEdit.Lines.Add('Wykonanie zapytania '
sowe bazy danych; +typ_zapytania+ 'zajęło: '+FloatToStr(czas)+sek.');
" TIBRestoreService  klasa pozwalająca odtworzyć bazę end;
danych na podstawie kopii zapasowych; except
" TIBValidationService  klasa pozwalająca sprawdzić po- end;
prawność baz danych i służąca do rozwiązywania proble- end;
mów z transakcjami;
40
www.sdjournal.org
Software Developer s Journal 11/2006
Ewolucja i efektywność technologii dostępu do baz danych
ni i EasySoft. Jednak ta gałąz ewolucji mechanizmów dostępu Wraz z powstaniem nowego, przenośnego, niezależnego od
do baz danych ma coraz mniejsze znaczenie. platformy i architektury sprzętowej języka programowania, ja-
Po sukcesie IBX firma Core Lab Software Develop- kim jest Java, pojawiła się idea skonstruowania nowego inter-
ment postanowiła stworzyć technologie dostępu do baz fejsu bazodanowego, który spełniałby podobne wymagania
danych dedykowane innym niż InterBase serwerom baz- jak sam język. Naturalną konsekwencją takiego rozumowania
danych. Tak narodziły się technologie ODAC, SDAC i My- było oderwanie się od już istniejących mechanizmów API, w
DAC pozwalające na dostęp do Oracle, SQL Server i My- szczególności ODBC i opracowanie nowej technologii, wyko-
SQL. Technologie te są o tyle rewolucyjne, że są technolo- nanej w pełni w Javie. Jakkolwiek nie oznacza to, że progra-
giami hybrydowymi. Oznacza to, że mają własne mechani- miści używający dotąd ODBC musieli przestawić się na zu-
zmy dostępu do baz danych, ale potrafią również korzystać pełnie inny tok myślenia przy tworzeniu aplikacji bazodano-
ze zródeł ODBC zdefiniowanych w systemie operacyjnym. wych. Przeciwnie, JDBC funkcjonalnie przypomina techno-
W ODAC, SDAC i MyDAC można znalezć kilka klas nie wy- logię ODBC. Zwiększono jedynie możliwości interfejsu oraz
stępujących w żadnej z dotychczas omówionych technolo- przystosowano go do odmiennej specyfiki języka Java.
gii. Wśród nowych klas, które pojawiły się w technologii Obecnie JDBC jest wykorzystywane nie tylko bezpośrednio,
ODAC najważniejsze to: jako zunifikowana technologia dostępu do dowolnej bazy danych,
ale także jako podstawa dla aplikacji/interfejsów wyższego rzę-
" TOraSmart (SmartQuery)  klasa będąca alternatywą dla kla- du, które umożliwiają dostęp do bazy danych z wyższego pozio-
sy TOraQuery; mu. JDBC określa pewien poziom zgodności z istniejącymi stan-
" TOraSQL  klasa służąca do wykonywania instrukcji PL/ dardami SQL. Jednak główne założenie mówi, iż każdy sterownik
SQL, procedur składowanych itp.; JDBC musi odpowiadać, co najmniej wersji ANSI SQL-92 stan-
" TOraNestedTable  klasa służąca do obsługi tabel zagnież- dardu SQL. Ponadto twórcy i pomysłodawcy interfejsu stworzy-
dżonych; li inne założenia, które spełniają kolejne wersje standardu JDBC.
" TOraScript  klasa służąca np. do wykonywania sekwencji; Według tych założeń zapytania SQL przesyłane są do odpowied-
" TOraPackage  klasa służąca do wykonywania pakietów PL/ niego SZBD bez względu na możliwość ich realizacji. W przy-
SQL; padku, gdy dany SZBD nie potrafi obsłużyć zlecenia przekaza-
" TOraAlert  klasa pozwalająca na przekazywanie informa- nego przez JDBC, aplikacja generuje określony wyjątek. Ponad-
cji pomiędzy sesjami; to JDBC udostępnia informacje o SZBD i jego cechach szczegól-
" TOraLoader  klasa pozwalająca na szybkie załadowanie nych (ustawieniach, możliwościach itd.). Informacje te przekazy-
danych do bazy danych; wane są użytkownikowi w postaci tzw. metadanych
" TOraErrorHandler  klasa służąca do tłumaczenia komuni- Sterownik JDBC (JDBC driver) jest zbiorem skompilowa-
katów błędów; nych klas (w postaci tzw. bajtkodu Javy), które implementu-
" TBDESession  klasa pozwalająca integrować komponenty ją wszystkie interfejsy zawarte w pakiecie java.sql oraz po-
ODAC z aplikacjami stworzonymi w technologii BDE; nownie implementują pozostające tam klasy. W większości
" TConnectDialog  klasa służąca do przechowywania na- przypadków klasy te napisane są wyłącznie w Javie. Imple-
zwy użytkownika, hasła i nazwy serwera baz danych; mentacja bezpośrednio zależy od systemu zarządzania ba-
" TVirtualTable  klasa służąca do składowania zbioru da- zą danych, z którą będzie się łączyć aplikacja wykorzystują-
nych w pamięci. ca sterownik. Stąd każdy sterownik JDBC służy do komuni-
R E K L A M A
Bazy
danych
kacji z konkretną bazą danych i nie nadaje się do wykorzy- ich wersje instalacyjne (przynajmniej w wersjach czasowych)
stywania w przypadku baz innych producentów. można pobrać z internetu ze stron producentów.
Przedstawione rozwiązanie, choć podobne do innych tech- W Tabeli 1 zaprezentowano komponenty służące do na-
nologii używanych w przypadku C++ lub Delphi, w przypadku wiązania połączenia z bazą danych, wykonania zapytania
Javy nabiera szerszego znaczenia. Ze względu na to, że Java SQL i wizualizacji danych, natomiast w ramce zaprezentowa-
jest językiem w większości przypadków przenośnym, producen- no sposób połączenia komponentów W celu zbadania efek-
ci sterowników muszą przygotowywać tylko jeden pakiet dla każ- tywności technologii opracowano w środowisku Borland Del-
dej wersji standardu JDBC (za wyjątkiem mostów JDBC-ODBC i phi programową metodę mierzenia czasu wykonania zapytań
Native-API partly-Java). Tym samym, w odróżnieniu np. od wspo- SQL. Metoda ta posłużyła do zmierzenia efektywności nastę-
mnianych interfejsów dla języka C++, z jednego binarium korzy- pujących technologii: ADO, ODBC, BDE, dbExpress, IBX, IBO,
stamy zarówno w systemie Linux jak i w Windows. FIB, ODAC, SDAC, MyDAC, EasySoft i Gemini. Należy jednak
Sterowniki JDBC przygotowywane przez poszczegól- zauważyć, że badania przeprowadzone były w systemie MS
nych producentów są w większości przypadków powszech- Windows, który nie jest systemem czasu rzeczywistego, dla-
nie dostępne bez żadnych opłat i w pewnym sensie sta- tego czas wykonania zapytania na różnych komputerach mo-
nowią uzupełnienie pakietu JDBC. Można je pobrać bądz że być różny i zależny od wielu czynników: zajętości proceso-
ze stron dostawców SZBD, bądz też z repozytorium Su- ra, szybkości taktowania procesora, ilości pamięci operacyj-
na. Jednak nie wszystkie sterowniki są w pełni darmowe. nej, obciążenia systemu i wielu innych. Wpływ na czas wy-
Część spośród nich jest rozprowadzana komercyjnie.No- konania zapytań ma również ilość procesów uruchomionych
we wymagania, systemy baz danych i języki programowa- w systemie, dlatego podczas testowania programu mierzące-
nia powodują tworzenie technologii dostępu do baz danych. go efektywność technologii dostępu wszystkie zbędne proce-
Dlatego należy się spodziewać, że w najbliższych czasach sy zostały wyłączone. Zaprezentowana metoda pozwala jed-
stworzona zostanie nowa rewolucyjna technologia. Oczywi- nak stwierdzić, jaka jest efektywność technologii, ponieważ
ście małe firmy nadal będą tworzyć nowe mniej znane i de- czasy wykonania zapytań na różnych platformach systemo-
dykowane zazwyczaj jednemu serwerowi baz danych tech- wych i sprzętowych są proporcjonalne. Tak więc w zaprezen-
nologie dostępu do danych. towanej metodzie nie liczy się ilość milisekund wykonania za-
pytania, ale fakt która technologia wykonała dane zapytanie
Efektywność technologii dostępu szybciej. Podana w Listingu 1 metoda mierzenia czasu po-
Na Rysunku 5. została zaprezentowana baza danych składa- zwala stwierdzić, które z testowanych technologii dostępu do
jąca się z czterech tabel: Ksiazki, Kategorie, Autorzy, Autorzy_ baz danych są efektywne, a które nie. Dzięki kodowi zapre-
ksiazki. zentowanemu w Listingu 1 można zmierzyć efektywność wy-
Główną tabelą w bazie danych jest tabela Ksiazki prze- konania zapytań typu SELECT. INSERT, UPDATE, DELETE itp.
chowująca informacje o numerze ISBN, tytule, podtytu- Metoda ta jest najdokładniejsza spośród kilku dostęp-
le, liczbie stron książki, numerze kategorii, do której nale- nych w Delphi sposobów mierzenia czasu, ponieważ bazu-
ży książka, recenzji, miejscu przechowywania książki i ilości je na taktach procesora. Najpierw określana jest częstotli-
egzemplarzy przechowywanych w danym miejscu. Tabela wość procesora (linia 6), następnie odczytywana jest war-
ta posłuży do przeprowadzone badań efektywności techno- tość taktów procesora przed (linia 8) i po (linia 10) wykona-
logii. Należy wspomnieć, że atrybuty tej tabeli są typu tek- niu czynności. W kolejnym kroku (linia 11) liczony jest czas
stowego i numerycznego. wykonania czynności według wzoru różnica taktów dzielo-
Chcąc stworzyć aplikację, która zmierzy czas wykona- na na częstotliwość procesora. Ostatnim krokiem jest wy-
nia zapytań trzeba wykorzystać komponenty znajdujące się świetlenie czasu wykonania zapytania w kontrolce RichE-
na kilku zakładkach w Delphi. Część omawianych w tym arty- dit. Przedstawiona metoda posłużyła do zmierzenia czasu
kule technologii nie jest standardowo dostępna w Delphi, ale wykonania siedmiu zapytań SQL (typu INSERT, DELETE, UPDA-
Tabela 2. Przykłady zapytań wykonywanych na tabeli Ksiazki, których efektywność była mierzona
Oznaczenie zapytania Treść zapytania Opis
SELECT  SELECT * FROM Ksiazki
Pobierane są wszystkie dane
z tabeli Ksiazki.
INSERT 'INSERT INTO Ksiazki VALUES ('''+Editisbn.Text+''', '''+Edit-
Wstawiany jest nowy rekord,
tytul.Text+''', '''+Editpodtytul.Text+''', '''+Editliczba-
w którym dane pobierane są
stron.Text+''', '''+DBLookupComboBoxidkategorii.Field.As-
z kontrolek formularza (z pól
String+''', '''+Memorecenzja.Text+''', '''+Editmiejsceprzecho-
wywania.Text+''', '''+Editiloscegzemplarzy.Text+''')'
edycyjnych i list rozwijanych).
DELETE 'DELETE FROM Ksiazki WHERE isbn='''+isbn+''''
Usuwany jest rekord zaznaczo-
ny przez użytkownika w siatce
DBGrid.
UPDATE 'UPDATE Ksiazki SET isbn='''+Editisbn.Text+''', tytul='''+E-
Ustawiane są wszystkie pola re-
dittytul.Text+''', podtytul='''+Editpodtytul.Text+''', licz-
kordu, który został zaznaczony
ba _ stron='+Editliczbastron.Text+', id _ kategorii='+DBLookup-
przez użytkownika według war-
ComboBoxidkategorii.Field.AsString+', recenzja='''+Memorecen-
zja.Text+''', miejsce='''+Editmiejsceprzechowywania.Text+''',
tości wpisanych przez użytkow-
ilosc _ ksiazek='+Editiloscegzemplarzy.Text+' WHERE isb-
nika w pola tekstowe i listy roz-
n='''+isbn+''''
wijane formularza.
42
www.sdjournal.org
Software Developer s Journal 11/2006
Ewolucja i efektywność technologii dostępu do baz danych
Tabela 3. Efektywność w obrębie technologii dostępu i systemu zarządzania bazami danych
Średni czas wykonania zapytania w sekundach
(miejsce w klasyfikacji)
System baz danych Technologia
SELECT INSERT UPDATE DELETE
ADO 0,0148 (20) 0,0103 (20) 0,0096 (18) 0,0102 (24)
dbExpress 0,0051 (5) 0,0093 (19) 0,0076 (15) 0,0079 (21)
ODAC 0,0063 (11) 0,0072 (16) 0,0072 (14) 0,0072 (18)
Oracle
BDE 0,0096 (17) 0,0069 (15) 0,0082 (16) 0,0079 (21)
ODBC 0,0094 (16) 0,0241 (25) 0,0249 (25) 0,0130 (25)
EasySoft 0,0249 (23) 0,0317 (26) 0,0285 (26) 0,0196 (26)
IBX 0,0051 (5) 0,0015 (2) 0,0012 (1) 0,0008 (1)
ADO 0,0342 (25) 0,0029 (8) 0,0039 (9) 0,0024 (10)
dbExpress 0,0020 (2) 0,0017 (4) 0,0019 (3) 0,0015 (3)
InterBase BDE 0,0076 (14) 0,0023 (6) 0,0022 (5) 0,0019 (6)
FIB 0,0058 (8) 0,0011 (1) 0,0013 (2) 0,0008 (1)
IBO 0,0125 (18) 0,0035 (10) 0,0040 (10) 0,0020 (7)
Gemini 0,0081 (15) 0,0028 (7) 0,0024 (6) 0,0020 (7)
ADO 0,0163 (21) 0,0092 (18) 0,0132 (22) 0,0086 (23)
SDAC 0,0059 (10) 0,0033 (9) 0,0029 (8) 0,0023 (9)
SQL Server 2000
dbExpress 0,0022 (3) 0,0052 (13) 0,0083 (17) 0,0060 (17)
ODBC 0,0058 (8) 0,0051 (12) 0,0048 (12) 0,0050 (15)
ADO 0,0273 (24) 0,0087 (17) 0,0118 (21) 0,0074 (19)
DB2 dbExpress 0,0016 (1) 0,0064 (14) 0,0098 (19) 0,0051 (16)
ODBC 0,0072 (12) 0,0105 (21) 0,0114 (20) 0,0075 (20)
MyDAC 0,0044 (4) 0,0016 (3) 0,0019 (3) 0,0018 (4)
MySQL
ODBC 0,0072 (12) 0,0019 (5) 0,0024 (6) 0,0018 (4)
ADO 0,0208 (22) 0,0039 (11) 0,0060 (13) 0,0047 (14)
Access
ODBC 0,0054 (7) 0,0141 (23) 0,0045 (11) 0,0035 (11)
ADO 0,0374 (26) 0,0144 (24) 0,0167 (24) 0,0041 (13)
Informix
ODBC 0,0136 (19) 0,0115 (22) 0,0138 (23) 0,0035 (11)
TE i SELECT) na każdej bazie danych. Dwie skrajne wartości wykorzystać komponent Query. Zaprezentowania procedu-
odrzucono, natomiast pięć pozostałych wyników posłużyło ra nie pozwoli nam jednak wykonać zapytań SQL typu INSERT,
do wyliczenia średniego czasu, jaki jest potrzebny na wy- UPDATE, DELETE. Żeby wykonać te zapytania musimy napisać
konanie zapytania danego typu. drugą procedurę, taką jak w Listingu 3. Dodatkowym parame-
W Tabeli 2 zaprezentowano przykłady zapytań, jakie by- trem, który pojawił się w tej procedurze jest typ _ zapytania.
ły na bazach danych i których efektywność była mierzona. Przyjmuje on trzy wartości (Delete, Update, Insert) i służy do
W pierwszej kolumnie tabeli zamieszczono oznaczenie za- identyfikacji typu zapytania, którego czas został zmierzony.
pytania, którym posłużono się w dalszej części artykułu.
Tak więc w dalszej części artykułu zamiast całej treści za- Analiza wyników
pytania np. SELECT * FROM Ksiazki występuje oznaczenie SE- Pięć najbardziej efektywnych technologii służących do wykony-
LECT, które oznacza to zapytanie. wania różnego typu zapytań SQL wyróżniono w Tabeli 3. Ta-
Zapoznaliśmy się już z metodą mierzenia czasu wykona- bela 3 pokazuje, że najlepszym rozwiązaniem dla osób, któ-
nia zapytania. Nadszedł więc czas zaprezentować kod pro- rym zależy na efektywności aplikacji, jest wybranie serwera In-
cedur służących do wykonania zapytań. Zapytania SQL ty- terBase i technologii IBX, FIB, dbExpress lub serwera MySQL i
pu SELECT wykonywane są przez procedurę zaprezentowa- technologii MyDAC. Tabela potwierdza również opinię, że naj-
ną w Listingu 2: bardziej efektywne są technologie dedykowane określonemu
Jako parametry do procedury przesyłane są: treść zapyta- serwerowi. Potwierdza się również fakt, że najbardziej efek-
nia SQL, komponent zbioru danych, który ma wykonać to za- tywnymi serwerami baz danych są InterBase i MySQL. Należy
pytanie, oraz komponent RichEdit, który ma zaprezentować pamiętać, że InterBase to serwer baz danych napisany w Del-
czas wykonania zapytania. Oczywiście zaprezentowana pro- phi. FIB i IBX to technologie również napisane w Delphi a dbE-
cedura wykorzystuje technologię ADO do wykonania zapytań. xpress zostało stworzone przez firmę Borland. Stąd nasuwa się
Żeby napisać procedurę wykonującą zapytanie typu SELECT kolejny wniosek: największą efektywność uzyskuje się korzy-
np. w technologii BDE należy zamiast komponentu ADOQuery stając z produktów i technologii jednej firmy. n
Software Developer s Journal 11/2006 www.sdjournal.org
43


Wyszukiwarka

Podobne podstrony:
SDJ 2006 PL 4 39
ELEPHANT DREAM 2006 Pl
pl 43
AutoCAD 2006 PL Pierwsze kroki
play prawo jazdy 2006 pl
DROGI i MOSTY no3 2006 pages 43 72
cartall mapa polski 2006 pl
WSM 04 43 pl(1)
Kwaśniewski J , 2006 11 16 dr kwasniewski pl, Odchudzanie
LBB9600 15 03 2006 PA PL F
Martwa natura (Sanxia Haoren, 2006) Zhang Ke Jia [napisy PL]
LBC3483 15 03 2006 PA PL F
LBC3011 x1 15 03 2006 PA PL F
LBC3482 15 03 2006 PA PL F
LBC3086A 15 03 2006 PA PL F
LB1 UW06x x 15 03 2006 PA PL F

więcej podobnych podstron