LOCK op database

Berichten, opmerkingen, recensies, ...
Gebruikersavatar
Administrator
Site Admin
Berichten: 110
Lid geworden op: 11 apr 2024, 11:16

LOCK op database

Bericht door Administrator »

Wat is een lock op een database, en waarom moet ik dat weten?

Verschillende forumleden geven aan dat hun database (het bestand waarin alle banktransacties staan) centraal opgeslagen is.
Op een NAS (Networked Attached Storage) thuis, zodat de daar opgeslagen bestanden door meerdere personen gelijktijdig benaderd kunnen worden. Of in de cloud, zoals Dropbox, iCloud, pCloud, Google Drive, OneDrive, ...

Handig, maar het kan een (groot) probleem veroorzaken waarvan niet iedereen zich bewust is.

Degenen die nu denken: maar ik gebruik geen NAS, of cloudopslag, en beschik over één computer, hoeven niet verder te lezen.

Een stukje geschiedenis
Afbeelding

In 1981 bracht IBM de eerste Personal Computer uit. De naam zegt het al: een persoonlijke computer voor één gebruiker.
Vaak wordt hiervoor de naam stand-alone computer gebruikt. Handig, al je bestanden bij elkaar en alleen jij opent ze om eventuele wijzigingen aan te brengen. Om kort te gaan, hier kan niets mis gaan.

Dit veranderde toen computers aan elkaar gekoppeld werden, zogeheten netwerken. Het besturingssysteem werd hierop aangepast, en bij het openen van een bestand wordt gecontroleerd of een andere gebruiker dit bestand al niet geopend heeft. Zo ja, dan krijgt deze de vraag of het bestand voor alleen-lezen geopend moet worden, of gewacht tot de andere gebruiker het bestand vrijgeeft:
Afbeelding

Het programma, in dit geval Microsoft Excel, beschermt je voor overschrijven door een extra bestandje te plaatsen, waardoor andere programma's weten: AFBLIJVEN.

BankTrans
Hoe zit het dan bij BankTrans?
Om eerlijk te zijn, bij BankTrans is dit niet geregeld. Als BankTrans gestart wordt, wordt een kopie van de database in het geheugen van de computer geladen en de database vrijgegeven.

Kan dit kwaad?
Niet als de database op je computer staat en jij de enige gebruiker bent. Zoals hierboven vermeldt, stand-alone.
Dit is ook de manier waarvoor BankTrans ontwikkeld is. Kun je zelfs lezen op de Home pagina van BankTrans:
BankTrans bewaart de gegevens op uw eigen systeem.
Ook niet als één gebruiker BankTrans start om aanpassingen te verrichten en vervolgens afsluit. Een andere gebruiker kan daarna probleemloos BankTrans gebruiken.

The proof of the pudding is in the eating
Voor BankTrans gebruikers die twijfelen over wat hier verteld wordt, het bewijs.
Maak je geen zorgen, we gebruiken het BankTrans demobestand, die kan wel wat hebben.

Wat we nodig hebben zijn 2 personen met ieder hun eigen computer. Laten we ze heel neutraal Persoon 1 (V) en Persoon 2 (W) noemen.
De V en W verklaren zich later vanzelf.

Persoon 1 begint, start zijn computer en vervolgens BankTrans:
Afbeelding
Let op, het is 5 voor 8.

Hij is ontevreden over zijn salaris en past deze aan, van 1234,56 euro naar 2345,67 euro:
Afbeelding
Vóór 8 uur heeft hij zichzelf een salarisverhoging gegeven. Maar sluit BankTrans nog niet af.

Persoon 2 vindt dat ook hij maar eens aan het werk moet. Het is nu iets over 8 uur:
Afbeelding

Hij ontdekt dat de laatste aankoop bij de HEMA niet 22,50 euro kostte, maar 44,50 euro. En past dit aan:
Afbeelding
Gaat lekker zo. Iemand iets opgevallen? Nee?

Kijk nog eens naar het scherm van iets over 8 uur. Het salaris is 1234,56 euro, terwijl dit vóór 8 uur gewijzigd werd!

Persoon 1 is klaar en sluit BankTrans af:
Afbeelding

Toch twijfelt hij en gaat nogmaals kijken of zijn salarisverhoging wel doorgevoerd is:
Afbeelding
Ja, alles is correct. En sluit weer af.

Persoon 2 is ook klaar met aanpassingen en sluit af:
Afbeelding

Ook hij twijfelt of het allemaal wel correct verlopen is en controleert nogmaals:
Afbeelding
Ja, de HEMA aankoop is correct doorgevoerd.

Persoon 1 doet een double check en constateert dat zijn salarisverhoging teniet is gedaan, en de HEMA pan veel duurder dan verwacht:
Afbeelding

Voor wie het niet doorhad: V staat voor Verliezer, W voor Winnaar.

Naanab
Geldt hetzelfde voor Naanab?
Nee, Naanab plaatst een lock-bestand, waardoor maar één persoon de database kan muteren.

Voor starten Naanab:
Afbeelding

Naanab gestart:
Afbeelding

Persoon 2 wil Naanab starten:
Afbeelding
Afbeelding Afbeelding SHA1 hashcode: d3a08c587fbe5b555159cc6d98af2173f2654f68 20240503 648w #58
Plaats reactie