2009.10_Technologie Progress OpenEdge_[Klub Techniczny].pdf

(815 KB) Pobierz
441702494 UNPDF
Klub techniczny Progress Software
Technologie
Progress OpenEdge
Część 2. System Relacyjnych Baz Danych OpenEdge
System relacyjnych baz danych OpenEdge charakteryzuje się
wyjątkowo niskimi kosztami utrzymania i wysoką skalowalnością. Dzięki
wydajnemu interfejsowi OpenEdge ABL oraz standardowemu SQL z
API do obsługi ODBC i JDBC zapewnia dużą elastyczność w procesie
tworzenia aplikacji.
Dowiesz się:
• O architekturze bazy OpenEdge i jej proce-
sach;
• Jakie są narzędzia administratora;
• O zaawansowanych cechach bazy OpenEdge.
Powinieneś wiedzieć:
Ogólne zagadnienia związane z koncepcją re-
lacyjnych baz danych.
kacji i jest zoptymalizowany do 50
jednoczesnych przyłączeń użytkow-
ników. Oferuje wiele tych samych
cech co Enterprise, lecz nie posiada
zaawansowanych funkcjonalności jak
procesy asynchroniczne, obsługa kla-
strów itd.
• Personal Progress RDBMS jest produk-
tem dla celów testowych i programi-
stycznych. Obsługuje maksymalnie 5 lo-
kalnych przyłączeń. Nie obsługuje przy-
łączeń zdalnych.
Poziom
trudności
Zawiera funkcjonalności niezbędne
do działania najbardziej wymagających
systemów aplikacji OLTP ( on-line trans-
action processing ) np: samostrojące pro-
cesy asynchroniczne czy optymalizację
na maszynach wieloprocesorowych.
• Workgroup Progress RDBMS jest
przeznaczony dla mniejszych apli-
D rugi artykuł z cyklu poświęcone-
Ze względu na najbardziej zaawansowaną
technologię dalsze informacje będą dotyczy-
ły licencji Enterprise.
go technologiom OpenEdge zo-
stał przeznaczony w całości Sys-
temowi Zarządzania Relacyjnymi Bazami
Danych (RDBMS) OpenEdge. System ten
był niejednokrotnie bardzo wysoko ocenia-
ny przez The Aberdeen Group i inne firmy
zajmujące się badaniami marketingowymi,
ze względu na jej ekonomiczną eksploata-
cję i wyjątkowo łatwą administrację. Ope-
nEdge regularnie zajmuje czołową pozycję
w rankingu systemów z najniższymi kosz-
tami eksploatacji szczególnie wśród syste-
mów wykorzystujących bazę danych typu
enterprise.
Wyróżniane są 3 licencje serwera bazy
OpenEdge:
�������
��������
��������
��������
��������
��������
�������
��������
�������
���������
• Enterprise OpenEdge RDBMS jest prze-
znaczony do bardzo dużych i średnich
rozwiązań pod względem ilości danych,
jednoczesnych przyłączeń użytkowni-
ków oraz ilości zawieranych transakcji.
��������������
Rysunek 1. Architektura bazy OpenEdge
20
10/2009
441702494.049.png 441702494.060.png 441702494.071.png 441702494.074.png 441702494.001.png 441702494.002.png 441702494.003.png 441702494.004.png 441702494.005.png 441702494.006.png 441702494.007.png 441702494.008.png 441702494.009.png 441702494.010.png 441702494.011.png 441702494.012.png 441702494.013.png 441702494.014.png 441702494.015.png 441702494.016.png
Technologie Progress OpenEdge
Architektura bazy
Baza OpenEdge ma nowoczesną architektu-
rę, umożliwiającą dopasowanie jej do cha-
rakteru danych i aplikacji w celu osiągnięcia
optymalnej wydajności i skalowalności (Ry-
sunek 1). Bazę danych można traktować w
aspekcie logicznym i fizycznym. Baza logicz-
na zawiera obiekty bazy: tablice, widoki SQL,
indeksy i sekwencje, natomiast baza fizyczna
składa się z Obszarów Składowania Danych
( Storage Areas ).
Obszar reprezentuje największą jednost-
kę przechowywania danych w bazie. Każ-
dy obszar składa się z jednego lub wie-
lu plików (ekstentów). Jeden obszar mo-
że zawierać wiele obiektów bazy, ale każ-
dy obiekt musi znajdować się w jednym
obszarze. Podział bazy na obszary wielo-
krotnie zwiększa maksymalną ilość skła-
dowanych w niej danych, znacznie uprasz-
cza administrowanie i poprawia organiza-
cję bazy. Ponadto administrator ma wpływ
na to, by dane (z konkretnej tabeli czy in-
deksu) znajdowały się na wybranym dysku
(dyskach). Dzięki temu można np. bardzo
intensywnie przetwarzane dane umieścić
na najszybszym sprzęcie, co znacząco po-
prawia wydajność.
Najmniejszą jednostką składowania da-
nych jest blok bazy. Rozmiar bloku może
mieć wartość: 1, 2, 4, 8 KB.
Dla danego obszaru można zdefiniować
maksymalną ilość rekordów w bloku bazy.
Dopuszczalne wartości to: 1, 2, 4, 8, 16, 32,
64, 128, 256. Istnieją algorytmy pozwalają-
ce określić optymalną ilość rekordów w blo-
ku dla obszaru, co pozwala na wydajne skła-
dowanie danych oraz optymalne działanie
bazy.
W bazie OpenEdge w celu poprawy wy-
dajności wynikającej ze zmniejszenia stop-
nia fragmentacji i rozrzucenia rekordów
wprowadzono tzw. klastry. Klaster to ciąg
sąsiadujących ze sobą bloków bazy, przecho-
wujących dane tego samego obiektu, np.: ta-
blicy, indeksu, dużego obiektu binarne-
go (BLOB) czy dużego obiektu znakowego
(CLOB). Klastry mogą składać się z 1, 8, 64
lub 512 bloków. Zalety klastrów są szczegól-
nie widoczne gdy w jednym obszarze znaj-
duje się więcej niż jeden obiekt bazy, a także
przy składowaniu bardzo dużych obiektów
(BLOB i CLOB). W Tabeli 2, na końcu ar-
tykułu zawarte są wartości maksymalne dla
baz OpenEdge.
Listing 1. Dodanie ekstentów AI zdeiniowanych w tekstowym pliku deinicja-ai.st
prostrct addonline nazwa - bazy deinicja - ai . st
Listing 2. Wykonanie kopii bazy do pliku nazwa-bazy.bkup oraz włączenie zapisu AI oraz
procesu archiwizatora
probkup online nazwa - bazy enableai nazwa - bazy . bkup enableaiarchiver
aiarcdir arch - katalog
���������
�������������������
���
�������
������������������
���
�������
���
������� ����������������� ������� ���� �����
��
�������
Rysunek 2. Procesy asynchroniczne
Transakcyjność
Transakcyjność jest najistotniejszą cechą no-
woczesnego systemu zarządzania bazą da-
nych. Jej główna zasada polega na tym, że
transakcje nie mogą być zatwierdzane czę-
ściowo. Albo są zatwierdzone w całości, al-
bo wcale. Podstawowym elementem zapew-
nienia transakcyjności w bazie jest log trans-
akcji tzw. Before-Image ( BI ). Pliki BI przecho-
wują noty zawierające szczegółowe infor-
���������
������������
�����������
������
����
�����������
�����������
�����������
Rysunek 3. Schemat działania procesu APW. M – bufory zmodyikowane, C – bufory wolne
Rysunek 4. Menu główne programu ProMon
www.sdjournal.org
21
441702494.017.png 441702494.018.png 441702494.019.png 441702494.020.png 441702494.021.png 441702494.022.png 441702494.023.png 441702494.024.png 441702494.025.png 441702494.026.png 441702494.027.png 441702494.028.png 441702494.029.png 441702494.030.png 441702494.031.png 441702494.032.png 441702494.033.png 441702494.034.png 441702494.035.png 441702494.036.png
 
Klub techniczny Progress Software
macje o zmianach w bazie: adres rekordu,
nazwę modyfikowanego pola, starą i nową
wartość jak również noty o rozpoczęciu i za-
kończeniu transakcji. Noty z pliku BI są nie-
zbędne do wykonywania operacji Crash Re-
covery .
Crash Recovery jest procesem, w którym
OpenEdge RDBMS odzyskuje dane utraco-
ne w wyniku awarii systemu. Dzięki notom,
zawartym w pliku BI, transakcje, które zakoń-
czyły się sukcesem, są ponownie dopisywane
( redo ), a te, które zakończyły się niepowodze-
niem, wycofywane ( undo ).
Dla zapewnienia integralności OpenEd-
ge RDBMS wykonuje Crash Recovery au-
tomatycznie podczas startu bazy danych.
Kiedy noty zapisywane są do pliku BI, w
efekcie zapisywane są do klastra BI (czyli
segmentu pliku BI – proszę nie mylić go
z klastrem w plikach zawierających obiek-
ty bazy). Kiedy klaster jest pełny, OpenEd-
ge RDBMS zapisuje wszystkie zmodyfiko-
wane bufory bazy (na podstawie informa-
cji znajdujących się w notach w klastrze BI)
do plików bazy na dysku. Operacja ta znana
jest jako checkpoint .
Drugim mechanizmem, wykorzystują-
cym noty transakcji, jest przetwarzanie Roll-
Forward . Mechanizm ten służy zabezpiecze-
niu danych przed fizycznym uszkodzeniem
dysku, na którym znajdują się pliki bazy. Za-
pis not (identycznych jak dla zapisu BI) od-
bywa się do plików After-Image (AI), zloka-
lizowanych na innym dysku lub na całkiem
innej maszynie niż ta, na której zlokalizo-
wana jest baza danych. Warunkiem włącze-
nia zapisu do plików AI jest wykonanie ko-
pii bazy. Zapis After-Image jest opcjonalny i
wymaga od administratora zarządzania pli-
kami AI. Nowością w bazach OpenEdge jest
możliwość wystartowania procesu, który
automatycznie archiwizuje zapełnione pliki
AI, nadając im unikalną nazwę, opróżnia je i
przełącza zapis do pustych plików.
Coraz częstszym wymogiem systemów
działających w trybie 24x7 jest konieczność
wykonywania czynności administracyjnych
bez zatrzymywania bazy (czyli w stanie on-
line ). W bazach OpenEdge wprowadzonych
jest wiele funkcji spełniających powyższe
wymagania. Np. w przypadku gdy w pracu-
jącej bazie zachodzi konieczność włączenia
zapisu After-Image , można w stanie online :
dodać do bazy pliki AI, wykonać kopię bazy
(backup) i wystartować zapis AI, a także au-
tomatyczny archiwizator. Wystarczą do tego
dwie proste komendy (Listing 1 i 2).
Listing 3. Program Area_Util.p
/* Program : Area_Util.p */
/* Deinicje zmiennych */
DEFINE VARIABLE v - prcnt_full AS DECIMAL FORMAT ">>9.99" LABEL "% Full" NO -
UNDO .
DEFINE VARIABLE v - empty_blocks AS INTEGER FORMAT "->>,>>>,>>9" LABEL "Empty" NO -
UNDO .
DEFINE VARIABLE v - hiwater AS INTEGER FORMAT ">>,>>>,>>9" LABEL "Hiwater" NO -
UNDO .
DEFINE VARIABLE v - mb_used AS DECIMAL FORMAT ">>>,>>9.99" LABEL "MB Used" NO -
UNDO .
DEFINE VARIABLE v - mb_avail AS DECIMAL FORMAT ">>>,>>9.99" LABEL "MB Avail" NO -
UNDO .
DEFINE VARIABLE v - mb_tused AS DECIMAL FORMAT ">>>,>>9.99" LABEL "Total MB used"
INITIAL 0 . 0 NO -
UNDO .
DEFINE VARIABLE v - mb_tavail AS DECIMAL FORMAT ">>>,>>9.99" LABEL "Total MB avail"
INITIAL 0 . 0 NO -
UNDO .
ASSIGN CURRENT - WINDOW : WIDTH = 140 .
FOR EACH _Area WITH FRAME fArea SIDE - LABELS WIDTH 100 STREAM - IO :
FIND _Areastatus WHERE _Areastatus - Areanum = _Area . _Area - number NO - LOCK .
/* Określenie bloku high water mark */
ASSIGN v - hiwater = IF _AreaStatus - Hiwater = ? THEN 0
ELSE _AreaStatus - Hiwater
/* Obliczenie ilości pustych bloków */
v - empty_blocks = _AreaStatus - Totblocks - v - hiwater - _AreaStatus - Extents
/* Obliczenie procentu użytej przestrzeni */
v - prcnt_full = ( 1 . 0 - ( v - empty_blocks / _AreaStatus - Totblocks )) * 100 . 0
/* Obliczenie ilości dostępnej przestrzeni */
v - mb_avail = ( v - empty_blocks / 1048576 ) * _Area - BlockSize
v - mb_tavail = v - mb_tavail + v - mb_avail
/* Obliczenie ilości użytej przestrzeni */
v - mb_used = ( v - hiwater / 1048576 ) * _Area - BlockSize
v - mb_tused = v - mb_tused + v - mb_used .
DISPLAY
_Area - name LABEL 'Area' FORMAT "x(40)" COLON 20 SKIP
_AreaStatus - Lastextent LABEL "HWM extent" FORMAT "x(40)" COLON 20 SKIP
_Area - blocksize LABEL 'DBBlockSize' COLON 20
_AreaStatus - Extents LABEL '#Extents' FORMAT ">>9" COLON 45 SKIP
v - hiwater COLON 20
v - empty_blocks COLON 45
_AreaStatus - Totblocks - _AreaStatus - Extents
LABEL 'T.Blocks' FORMAT ">>,>>>,>>9" COLON 70
v - prcnt_full COLON 20
v - mb_used COLON 45
v - mb_avail COLON 70 SKIP ( 1 ).
END . /* FOR EACH _Area */
Procesy Asynchroniczne
Procesy asynchroniczne realizują głównie
operacje zapisu z pamięci operacyjnej na
dysk. Ich zadaniem jest poprawienie wy-
dajności oraz integralności danych w przy-
padku awarii systemu. Wyróżnia się na-
stępujące procesy asynchroniczne (Rysu-
nek 2):
DISPLAY SKIP
v - mb_tused
v - mb_tavail
WITH SIDE - LABELS WIDTH 100 STREAM - IO .
Before-Image Writer (BIW) – zapisuje za-
pełnione bufory BI do plików BI;
22
10/2009
441702494.037.png 441702494.038.png 441702494.039.png 441702494.040.png 441702494.041.png 441702494.042.png 441702494.043.png 441702494.044.png 441702494.045.png
 
Technologie Progress OpenEdge
After-Image Writer (AIW) – zapisuje za-
pełnione bufory AI do plików AI;
Asynchronous page Writer (APW) – za-
pisuje zmodyikowane bufory z danymi
do plików bazy;
Watchdog (PROWDOG) – czyści zasoby
po nieprawidłowo zakończonych proce-
sach klientów.
Najbardziej złożone i jednocześnie najistot-
niejsze z punktu widzenia wydajności ope-
racje wykonuje proces APW. Przyjrzyjmy się
mu bliżej. Najważniejszą z trzech obsługiwa-
nych przez niego funkcji jest czyszczenie ko-
lejki APW poprzez zapis znajdujących się w
niej buforów do plików z danymi bazy (Ry-
sunek 3).
Każde dane pobrane z dysku (do odczy-
tu lub modyfikacji) muszą być najpierw
wczytane do wolnych buforów w pamię-
ci operacyjnej. Wolne bufory wyszuki-
wane są w łańcuchu LRU ( Least Recently
Used ), przy czym kierunek szukania wol-
nych buforów jest od najstarszych (dawno
używanych) do najmłodszych . Proces APW
po zapisaniu danych z buforów znajdują-
cych się w kolejce APW umieszcza opróż-
nione bufory w łańcuchu LRU po stronie
najstarszych . Dzięki temu skraca się czas
szukania pustych buforów, szczególnie w
chwilach dużego obciążenia systemu i za-
potrzebowania na dużą ilość wolnych bu-
forów. Innymi funkcjami APW jest czysz-
Rysunek 5. ProMon: zestawienie aktywności systemu bazy danych
Rysunek 6. Menu Data Administration. Opcja Admin>Security
Tabela 1. Wybrane komendy administratora
Polecenie
Opis
proserve baza -H localhost -S svc _ port -ssl
Start serwera bazy z otwarciem portu dla klientów zdalnych i wymuszeniem
szyfrowanego połączenia
proutil baza -C opcja
Grupa poleceń do strojenia i zarządzania bazą
proutil baza -C idxix
Diagnostyka indeksów i rekordów oraz ich naprawa (może być w trybie online )
proutil baza -C idxcompact nazwa-indexu n%
Zwiększenie przestrzeni wykorzystywanej przez indeks dla poprawy wydajno-
ści (może być w trybie online )
proutil baza -C idxcheck [parametry]
Diagnostyka indeksów
proutil baza -C idxbuild [parametry]
Odbudowa indeksu z wieloma parametrami dla szybkiej operacji i najefektyw-
niejszego działania
proutil baza -C dbanalys > plik.txt
Analiza obszarów bazy: ich rekordów i indeksów
proutil baza -C dump nazwa-tablicy katalog
[parametry]
Binarny zrzut danych z tablicy (analogiczna komenda wykonuje ładowanie da-
nych)
proutil baza -C tablemove nazwa-obszaru
[parametry]
Przeniesienie tablicy do innego obszaru (analogiczna komenda wykonuje prze-
niesienie indeksu)
prostrct opcja baza [parametry]
Grupa poleceń do zarządzania strukturą bazy
prostrct opcja baza .plik-st –blocksize rozmiar-w-
bytach
Utworzenie pustej struktury bazy z podaniem rozmiaru bloku
rfutil baza -C roll forward [parametry] -a plik.ai
Grupa poleceń do zarządzaniem mechanizmem roll-forward. Tutaj przykład do-
grania do bazy transakcji z pliku AI
probkup [ online ] baza [ incremental ] nazwa-
urządzenia [parametry]
Wykonanie kopii zapasowej
prorest baza nazwa-urządzenia [parametry]
Odtworzenie bazy z kopii
procluster baza enable [parametry]
Grupa poleceń do obsługi klastrów maszynowych ( Failover Clusters ). Tutaj przy-
kład włączenia obsługi tej funkcji w bazie
sqlexp -db baza -S
Wykonanie komend SQL na bazie OpenEdge
www.sdjournal.org
23
441702494.046.png 441702494.047.png 441702494.048.png 441702494.050.png 441702494.051.png 441702494.052.png 441702494.053.png 441702494.054.png 441702494.055.png 441702494.056.png 441702494.057.png
Klub techniczny Progress Software
cenia przez Serwis Wsparcia Techniczne-
go Progressa.
chamiane tylko dla pracującej bazy ( online )
poleceniem:
Narzędzia Administratora
W systemie OpenEdge istnieje wiele narzę-
dzi wykorzystywanych do administracji baz
danych. Poniżej zostały przedstawione nie-
które z nich.
promon nazwa-bazy
Data Administration
Do najważniejszych zadań narzędzia Da-
ta Administration należą zrzut i ładowa-
nie definicji i danych, wykorzystywane w
procesie migracji lub zwiększenia wydaj-
ności pracy bazy (poprawa współczynni-
ków fragmentacji i rozrzucenia rekordów)
oraz obsługa zabezpieczeń (Rysunek 6) po-
legająca głównie na definiowaniu użytkow-
ników i przydzielanie im uprawnień na po-
ziomie rekordu bądź poszczególnych pól
tabeli. Uprawnienia te są pierwotnie nada-
wane dla fazy programowania. Aby obo-
wiązywały również podczas działania apli-
kacji (runtime'u), należy zaznaczyć odpo-
wiednią opcję bazy, jak pokazano na Ry-
sunku 7.
Rysunek 7. Opcje bazy: włączenie uprawnień
dla fazy runtime
ProMon
Podstawowym narzędziem do monitoro-
wania systemu OpenEdge RDBMS jest
ProMon. Menu główne tego narzędzia zo-
stało przedstawione na Rysunku 4. Przy
pomocy ProMona można śledzić zasoby w
pamięci operacyjnej oraz aktywność opera-
cji dyskowych, jak np.: informacje dot. blo-
kad rekordów czy procesów przyłączonych
do bazy, statystykę dostępu do bloków ba-
zy przez poszczególne procesy, zestawienie
aktywności systemu bazy danych (Rysunek
5), aktywność podczas checkpointów , zesta-
wienie parametrów bazy i jej status oraz
wiele innych. Narzędzie ProMon jest uru-
czenie kolejki checkpointu (mówiliśmy o
nim wcześniej) oraz swobodne skanowa-
nie puli buforów w poszukiwanie zmody-
fikowanych buforów i zapis ich na dysku.
Ta ostatnia funkcja wykonywana jest przy
małym obciążeniu systemu. APW jest pro-
cesem samostrojącym i chociaż są parame-
try do modyfikacji jego działania, należy z
nich korzystać jedynie w przypadku zale-
Tablice VST
Tablice VST ( Virtual System Tables ) to
zbiór tymczasowych tablic, które rezydu-
ją w pamięci i zawierają dane statystycz-
ne związane z działającą bazą. Tablice są
używane do generowania raportów, jak
np.: wykorzystanie Obszarów Składowania
Danych , aktywność logów transakcji, ilość
i rodzaj operacji na rekordach, lista pro-
cesów przyłączonych do bazy, zestawienie
operacji dyskowych i wiele, wiele innych.
Tablice VST dają szerokie możliwości pi-
sania programów, generujących wybrane
Rysunek 8. Wynik działania programu Area_Util.p
Rysunek 9. Narzędzie do analizy operacji na tablicach i indeksach
Rysunek 10. Progress Explorer Tool: widok
komponentów OpenEdge
24
10/2009
441702494.058.png 441702494.059.png 441702494.061.png 441702494.062.png 441702494.063.png 441702494.064.png 441702494.065.png 441702494.066.png 441702494.067.png 441702494.068.png 441702494.069.png 441702494.070.png 441702494.072.png 441702494.073.png
 
Zgłoś jeśli naruszono regulamin