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
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
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
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
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
Plik z chomika:
Kapy97
Inne pliki z tego folderu:
2010.08_Technologie Progress OpenEdge. Część 9_[Klub Techniczny].pdf
(793 KB)
2010.07_Technologie Progress OpenEdge_[Klub Techniczny].pdf
(1041 KB)
2010.06_Technologie Progress OpenEdge_[Klub Techniczny].pdf
(672 KB)
2010.05_Pydev Python w Eclipse_[Klub Techniczny].pdf
(1195 KB)
2009.12_Technologie Progress OpenEdge_[Klub Techniczny].pdf
(880 KB)
Inne foldery tego chomika:
Algorytmy
Antyhaking
Aplikacje Biznesowe
Aspekty
Bazy Danych
Zgłoś jeśli
naruszono regulamin