AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Interne Arbeitsweise von Datenbanken für Dummies
Thema durchsuchen
Ansicht
Themen-Optionen

Interne Arbeitsweise von Datenbanken für Dummies

Ein Thema von stahli · begonnen am 16. Dez 2019 · letzter Beitrag vom 17. Dez 2019
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.351 Beiträge
 
Delphi 11 Alexandria
 
#1

Interne Arbeitsweise von Datenbanken für Dummies

  Alt 16. Dez 2019, 12:03
Datenbank: - • Version: - • Zugriff über: -
Kennt jemand eine gute Erklärung, wie Datenbanken grundsätzlich arbeiten?

Also insbesondere:
- Wie werden Transaktionen realisiert?
- Wie werden Indizes berechnet und gespeichert?
- Wie werden Datenverluste/Inkonsistenzen bei Stromausfällen minimiert?
- Diesbezügliche interne Unterschiede SQL/noSQL?

Am liebsten wäre mir ein deutsches Video.

Ich fände es einfach mal spannend, etwas darüber zu erfahren.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.190 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Interne Arbeitsweise von Datenbanken für Dummies

  Alt 16. Dez 2019, 12:08
Ich glaube Bücher sind da noch Videos überlegen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.867 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Interne Arbeitsweise von Datenbanken für Dummies

  Alt 16. Dez 2019, 12:32
Das sind alles Implementierungdetail, um die man sich im Normalfall nicht kümmern muss. Das ist ja der Vorteil eines DBMS. Es bietet einem eine Schnittstelle und kümmert sich um den Rest.

Zitat:
- Wie werden Transaktionen realisiert?
Kommt darauf an, welches DBMS.
Transaktionslog, Datensatzversionierung, ...

Zitat:
- Wie werden Indizes berechnet und gespeichert?
Kommt darauf an, welches DBMS.
Baum, Hashtable, ...

Zitat:
- Wie werden Datenverluste/Inkonsistenzen bei Stromausfällen minimiert?
Kommt darauf an, welches DBMS.
Memory, Cache, ...
Zitat:
- Diesbezügliche interne Unterschiede SQL/noSQL?
Kommt darauf an, welches DBMS.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.351 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Interne Arbeitsweise von Datenbanken für Dummies

  Alt 16. Dez 2019, 13:02
Mir geht es mehr darum, mal so eine grundsätzliche Idee zu haben.

Mal ein Beispiel: Gegeben ist eine Anwendung mit ein paar Mio Datenobjekten, Personen, Konten, Überweisungen.

Die Objekte sind alle im Speicher in 3 Listen, natürlich mit gegenseitigen Referenzierungen.


Jetzt ist die Frage, wie man Transaktionen umsetzen kann und die Daten sicher speichert - ganz grundsätzlich.


Indizes zu berechnen ist wohl weniger das Problem.
Dazu wird eine neue Liste erzeugt, die die Ids der Objekte in einer anderen Reihenfolge speichert.

Für Transaktionen würde ich neue Listen erzeugen, die eine aufsteigende Transaktionsnummer verwalten und Objekte mit geänderten Daten oder einem Löschkennzeichen erhalten.
Unter Beim abrufen von Daten wird in den Originallisten gelesen und in der eigenen offenen Transaktionsliste. Fremde offene Transaktionslisten oder nachträglich committete fremde Transaktionslisten werden ignoriert.

Irgendwann müssen abgeschlossene Transaktionslisten in die Originalliste eingearbeitet werden.

Eine Speicherung auf die Festplatte ist natürlich auch notwendig, was nur stückweise erfolgen kann (also Tabelle löschen und komplett neu schreiben geht natürlich nicht).

Was ist aber, wenn in so einem Moment der Strom ausfällt.


Solche grundsätzlichen Dinge fände ich mal interessant.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Interne Arbeitsweise von Datenbanken für Dummies

  Alt 16. Dez 2019, 13:30
@stromausfall
Damit ist man beim Kern einer Transaktion. Die ist erst abgeschlossen und wird als solche markiert, wenn das letzte Bit geschrieben ist.
Ansonsten passiert das, was vielleicht auch nicht trivial ist: Die Datenbank ist nach dem Neustart auf dem letzten gültigen Stand vor dem Stromausfall (außer der war mit einer Spannungsspitze verbunden und hat den alten Schreiblesekopf irgendwo ins metall gehauen)

Die wichtigen Prinzipien eine DB nennen sich ACID.
NoSQL's gibt es viele und wahrscheinlich sind die wenigsten ACID-Konform. Mongo kann seid einiger Zeit (paar Monaten?) Transaktionen (Da hab ich als erster Hurra gerufen- > wusste vorher gar nicht, dass die das meistens nicht können. Jetzt weiß ich: Wenn überhaupt, kann ich mir mal MongoDB anschauen)

Summa Sumarum ist es sicher oft unterschiedlich implementiert, wie MKinzler schon sagte und es ist m.E. sehr komplex, soetwas selbst umzusetzen. Multiuser, Transaktionen, Atomizität, .. usw. ist schon ein Akt. Und dabei redet man natürlich nicht nur von etwas RAM, sondern von GB großen Files bis in den TB Bereich.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.351 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Interne Arbeitsweise von Datenbanken für Dummies

  Alt 16. Dez 2019, 13:46
Ja, vermutlich ist das doch alles zu komplex, um das mal so grundsätzlich abhandeln zu können.

Bezüglich MongoDB habe ich mir auch schon einiges angesehen.
Inzwischen denke ich aber, dass man bei sehr strukturierten Arbeitsdaten mit vielen Relationen (siehe mein Beispiel oben) aufeinander doch mit relationalen Datenbanken besser dran ist (lässt ja auch der Name vermuten ).

Das werde ich dann zu gegebener Zeit aber sicher mal austesten müssen...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
614 Beiträge
 
Delphi XE6 Enterprise
 
#7

AW: Interne Arbeitsweise von Datenbanken für Dummies

  Alt 17. Dez 2019, 09:47
Zum Thema Transaktionen: wenns ein bisschen ins Detail gehen darf, hätte ich hier eine Doku zu Transaktionen in Firebird:

https://ib-aid.com/en/transactions-i...ts-resolution/
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz