|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 10752 (0x2a00)
Types: TextFile
Names: »nlaext1«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »nlaext1«
>a1 INDLEDNING
@Denne opgave er resultatet af projektarbejdet på
datanom_ud_dannelsens databasemodul.
Formålet med opgaven er at vise anvendelsen af
data_base modeller og principper når det drejer sig om
ret små systemer, der kører på meget små hard_ware
konfigurationer.
NB. Da der til opgaven er brugt materiale fra vor
arbejdsplads, må opgaven kun anvendes i forbindelse med
undervisning, altså ikke i erhvervsmæssig hensigt.
>np
>a1 Den begrebsmæssige model.
Den begrebsmæssige model beskrives
og vedligeholdes af database
administratoren
( DBA ) i database management systemets ( DBMS ) data directory ( DAD ).
DBA kendes, når DBMS startes, af
DBMS og DAD som en priviligeret bruger, der har alle rettigheder
overfor databasens operationelle data og DAD.
Den del af
DAD's indhold, som DBA er ansvarlig for, defineres i SEQUEL2 data sprog .
>sp0
De øvrige brugere af DBMS beskriver ligeledes deres datamodeller ved hjælp af
SEQUEL2. Disse externe modeller defineres ud fra DBA's database beskrivelse,
som, ud over en beskrivelse af de operationelle data
i relationer, attributter og domæner ( begrebsmæssig model ),
også beskriver den enkelte bruger og dennes rettigheder overfor
databasens enkelte attributter. DBA's beskrivelse
omfatter desuden en definition af den begrebsmæssige/interne mapping.
DBA's definition af databasen er altså
den vigtigste del af DAD og kan deles i to afdelinger:
>nf
- bruger/attribut forhold
- den egentlige datamodel
>fi
>a2 Bruger/attribut relationer.
Databasens brugere og deres rettigheder
kan skitseres ved hjælp af følgende
relationer:
>ul
RELATION
ATTRIBUT( ATTR#, DOMÆNE, REL#, ATTR_NAVN, ACCESS-METODE )
>sp0
>ul
KEY
( ATTR# )
I denne relation beskriver DBA databasens attributter,
deres domæner,
hvilken relation de indgår i og
under hvilket navn samt hvorledes den pågældende
dataenhed findes ( begrebsmæssig/intern mapping ).
Relationen opdateres
af DBMS når externe brugere definerer egne views.
>sp2
>ne 6
>ul
RELATION
RELATION( REL#, NAVN, EJER-ID, TABELHOVED, FORMAT# )
>sp0
>ul
KEY
( REL# )
Samtlige databasens relationer er beskrevet i denne relation.
>sp2
>ul
RELATION
RETTIGHEDER( BRUGER-ID, ATTR#, REL#, ACCESS-RET )
>ul
KEY
( BRUGER-ID, ATTR# )
Denne relation definerer arten af den individuelle brugers adgang
( eller mangel på samme )
til en bestemt attribut.
>sp2
>ul
RELATION
BRUGER( BRUGER-ID, PRIO, DB-PRIO, NAVN, TLF# )
>sp0
>ul
KEY
( BRUGER-ID )
>sp0
>ul
UNIQUE
( TLF# )
Her beskrives den enkelte
database bruger og hans rettigheder i forhold
til øvrige brugere hvad cpu ressourcer og database adgang angår.
Med database adgang menes i virkeligheden den strategi, DBMS skal følge i
et tilfælde hvor to brugere skaber en deadlock ved samtidig at være i
besiddelse af den ressource, den anden bruger gør krav på
og gøre krav på den ressource, den anden bruger
er i besiddelse af.
>sp0
DB-PRIO giver DBA adgang til at fratage en lavere prioriteret
bruger sine ressourcer, således at den højt prioriterede bruger kan fortsætte
med en for systemet vigtigere funktion ( det kan eksempelvis være en vagtoperatør, hvis adgang
til databasen ikke må hindres eller forsinkes )
>sp2
>ul
RELATION
FUNKTION-AFH( ATTR#, AFH-ATTR#, FUNKTION )
>ul
KEY
( ATTR#, AFH-ATTR# )
I denne relation beskriver DBA
funktionelle afhængigheder mellem databasens attributter samt en funktion,
der muliggør en ændring af den attribut, der er funktionelt afhængig
af en anden. Der kan hermed sikres konsistens i databasen.
>sp0
Dette fritager den almindelige bruger for at bekymre sig om attributernes
indbyrdes afhængigheder.
>ne24
>sp24
>fg Funktionelle afhængigheder: bruger/attribut.
>a2 Beskrivelse af den egentlige database
>sp2
Her følger de relationer der er nødvendige for at administrere en alarmcentral
samt udføre vagtens funktioner.
>sp2
>ul
RELATION
AU( AU#, AT#, ADR-KODE, BLOK-L, SERV-DATO, FEJL-T, TXT )
>sp0
>ul
KEY
( AU# )
>sp2
>ul
RELATION
AT( AT#, AB#, STATUS, LINJE, FEJL_T, AKTIVITET,
TYPE, TXT )
>sp0
>ul
KEY
( AT# )
>sp2
>ul
RELATION
VC( VC#, VC-ARRANGEMENT )
>sp0
>ul
KEY
( VC# )
>sp2
>ul
RELATION
AUTOSERV( AT#, STID, OP-KODE, DATA, BLOK-L )
>sp0
>ul
KEY
( AT#, STID )
>sp2
>ul
RELATION
UDEST-MEDDELELSE( AT#, UTID, OP-KODE, DATA, BLOK_L )
>sp0
>ul
KEY
( AT#, UTID )
>sp2
>ul
RELATION
HÆNDELSE( AT#, HTID, VAGT-ID, AKTION, TEXT )
>sp0
>ul
KEY
( AT#, HTID )
>sp2
>ul
RELATION
ABONNENT( AB#, BRANCHE, NAVN, GADE, POST#, TLF#, TAKS, BET#, TEKST )
>sp0
>ul
KEY
( AB#, AT# )
>sp0
>ul
UNIQUE
( TLF# )
>sp2
>ul
RELATION
BY( POST#, BYNAVN )
>sp0
>ul
KEY
( POST# )
>sp2
>ul
RELATION
BETALER( BET#, BRANCHE, NAVN, GADE, POST#, TLF#, TIL_DATO )
>sp0
>ul
KEY
( BET# )
>sp0
>ul
UNIQUE
( TLF# )
>sp2
>ul
RELATION
RYKKER( BET#, RYK#, BELØB, PERIODE )
>sp0
>ul
KEY
( BET# )
>sp2
>ul
RELATION
LOG( AT#, LTID, TXT# )
>sp0
>ul
KEY
( AT#, LTID )
>ne20
>sp20
>fg Funktionelle afhængigheder
>a1 EXTERNE MODELLER.
@En extern model er en databasebeskrivelse der er
rettet mod en mestemt brug af databasen.
Modellen beskriver således kun relevante
dele af databasen. Herved opnås flere ting:
en enklere beskrivelse af databasen, visse felter
kan skjules, ændringer i databasen berører
ikke alle brugere.
Når de externe modeller implementeres, er de
beskrevet i et database sprog f.ex. calculus.
her vil vi for læselighedens skyld nøjes
med at vise de attributter der er med i
releationerne.
>a2 Ekspedition.
@Ekspeditionen tager sig af nogle administrative
rutiner: til- og afmeldning, flytning, m.v.
Abonnent relation
ATNR ADR BETNR BEMÆRK STATUS
Betaler relation
BETNR ADR
Service relation
STID ATNR MODE STYR INTERVAL
>a2 BOGHOLDERI
@Bogholderiet tager sig af regningsudskrivning
og kontrol.
@Dets relationer ser således ud:
Abonnent relation
ATNR BETNR ANTAL YDELSER
Betaler relation
BETNR B-ADR AKKBELØB REGNING GÆLD RYKNR
Hændelses relation
ATID ATNR TYPE
Regnings relation
REGNR BETNR BELØB RDATO
>a2 Vagtoperatørens model
Hændelses relationen indeholder en tuppel
for hver hændelse. Hændelser er alarmer
fra abonenter, kvitteringer for styringer,
ATNR ALARMTID ALARMTYPE VÆRDI AKTION
Abonnentrelation
indeholder en tuppel for hver abonent. BEMÆRK er
en tekst på helt frit format med ekstraoplysninger.
ATNR ADR BEMÆRK STATUS
Service relation indeholder oplysninger om styringer,
der skal foretages på bestemte tidspunkter (@lige
som telefonvækning@).
STID ATNR STYREINFO
>nf
>np
; Vagt pseudo kode
PROCESS vagt( VAR main, dbms, tty, timer, net: SEMAPHORE;
rt_prio, db_prio: INTEGER );
BEGIN
initialize;
create_channel;
log_on( user_id );
define_views;
REPEAT
WAIT( message, main );
CASE message_origin OF
timer:
BEGIN
SELECT at_no, op_code, data
FROM serv_view
WHERE time >= timer_clock
;
SIGNAL( service_message, net )
END;
tty:
BEGIN
decode( mml_command, sequel );
SIGNAL( sequel, dbms )
END;
net:
BEGIN
decode( net_message, sequel );
SIGNAL( sequel, dbms )
END;
dbms:
display;
OTHERWISE
END
UNTIL log_off
END. <* process vagt *>
>fi
>a1 DEN INTERNE MODEL
@Den interne model beskriver hvorledes databasen er lagret
på anlæggets eksterne lagermedie (disk).
Hertil kan benyttes flere forskellige filstrukturer:
randomiseret direkte acces ( med hashing), index sekventielle
filer, inverterede filer, m.v.
@Da vi her har både realtime- og batchproduktion,
har vi valgt at lade hver relation være lagret som
en index sekventiel fil. De første poster på filen
er oplysninger til adm. af filen bl.a. tuppel beskrivelse,
domæner, accesrettigheder; resten af filen er en sædvanlig
index-sekventiel fil.
>br
Vi kan således bygge på det katalog og filsystem som er
leveret med maskinen.
>a1 FORSLAG TIL OPTIMALISERINGER
@Systemet består af en tidskritisk applikation
(@vagtoperatøren@) og mange batchlignende opgaver.
For at hjælpe vagten, der hyppigt vil se på
de sidst ankomne alarmer indtil de bliver
kvitteret (@vagten skriver i AKTION i hændelsen,
hvilken aktion han her taget@), kunne man
have de ukvitterede alarmer stående i en relation
for sig. Den vil normalt ikke indeholde ret mange
tupler, oftest kun en skærmfuld.
Abonnentrelationen er en temmelig stabil relation
med hensyn til indsættelse og sletning, det er
derfor fornuftigt at gøre sig ekstra umage med
dimensioneringen således at overflow-blokke
undgås. Vi vil således altid kunne nå den rette
blok på nogle enkelte diskaccesser.
>br
@I de ikke-tidskritiske relationer bør der gøres
en del for at spare plads, da systemet skal udføres
på ret små maskiner. Et eksempel på hvordan der kan
spares plads er følgende:
@Det kan let ses at mange gadenavne vil gå igen
rundt omkring i databasen. Derfor oprettes en
gaderelation med GADEKODE og GADENAVN, og i alle
adressefelter skiftes gadenavn ud med den mindre
gadekode (@ca 600 koder@).
Der bruges i øvrigt mange koder i den interne
repræsentation. Disse koder omsættes selvfølgelig
til klartekst for operatøren.
>a1 KONKLUSION
@Selv om vi i opgaven har udeladt nogle af de
aspekter, der bør med i en analyse af anvendelse af
databaser f.ex. sikkerhed og performance, kan vi
alligevel godt frage nogle konklusioner.
>br
@Til de funktioner der er velspecificerede
og ret uforanderlige ville et 'skræddersyet'
system med direkte adgang til konventionelle filer
være lige så godt, måske endda have en bedre
performance end et database-system.
>br
@Men til de funktioner der ikke ligger så fast, eller
som opstår hen ad vejen, har databasesystemet nogle
klare fortrin. Brugeren har nemlig et meget fleksibelt
værktøj, der kan anvendes til nye opgaver, uden det sædvanlige
besvær med at få lavet nye programmer.
For leverandøren er der den fordel at samme system kan sælges
til mange forskellige brugere,
da systemet er langt mere generelt end et 'skræddersyet'
system.
▶EOF◀