Relationale-Datenbank-Muster sind Muster, die im Entwurf relationaler Datenbanken eingesetzt werden.
DELETE RESTRICT angestoßen. Dieses Verhalten ist bei den meisten Datenbankimplementierungen das Standardverhalten, wenn nur der Befehl DELETE alleine angegeben wird.DELETE CASCADE angestoßen.Denormalisierungsmuster ermöglichen die Denormalisierung einer Datenbank zum Zweck der Verbesserung des Laufzeitverhaltens.
siehe auch: Relationale-Datenbank-Muster, Entwurfsmuster
Bei den Verteilungsmustern wird im Wesentlichen zwischen keiner Verteilung, Replikation und Fragmentierung (englisch: Sharding) unterschieden:
Die Replikation kann hierbei mit Fragmentierung kombiniert werden. Zudem unterscheidet man bei der Replikation zwischen der Master/Slave-Replikation und der Peer-to-Peer-Replikation.
Das einfachste Verteilungsmuster ist keine Verteilung. Die Datenbank läuft vollständig auf einem einzelnen Server, der sämtliche Schreib- und Lesezugriffe behandelt. Der Vorteil dieses Musters ist es, dass der Server einfach zu warten ist. Updates, Datensicherungen, Reparaturen, Upgrades etc. lassen sich bei diesem Muster zentral behandeln.
Zudem müssen Softwareentwickler keine aufwändige Logik implementieren um Probleme mit der Konsistenz, Verfügbarkeit oder Partitionierung zu behandeln (siehe auch: CAP-Theorem).
Diese Variante bietet sich auch besonders bei Graphdatenbanken an, da Latenzen durch den Zugriff von Daten über das Netzwerk vermieden werden.
Bei der Fragmentierung (englisch: Sharding) werden unterschiedliche Datenbanken bzw. voneinander unabhängige Teile der Datenbank auf verschiedene Server, die Shards, verteilt.
Hierdurch ergibt sich eine bessere Lastverteilung. Zudem fallen bei einem Ausfall des Servers nicht alle Applikationen aus, sondern nur jene die auf die jeweiligen Daten zugreifen oder schreiben müssen.
Da die Lese-und-Schreibzugriffe für jeweils bestimmte Daten vom jeweiligen Shard alleine bearbeitet werden, ergibt sich keine Inkonsistenz der Daten.
Als Federation bezeichnet man einen Spezialfall der Fragmentierung, bei dem ein zentraler Server, federation root genannt, die Verteilung der einzelnen Shards automatisch bestimmt.
Bei der Master/Slave-Replikation übernimmt ein zentraler Server, der Master, alle Schreibzugriffe auf die Datenbank. Anschließend werden die Änderungen auf die anderen Server, den Slaves (Sklaven) übermittelt. Wenn der Master-Server ausfallen sollte, kann ein Slave die Rolle des Masters übernehmen.
Da es etwas dauert, bis die Änderungen von den Slave-Servern übernommen werden, kann es kurzzeitig zu Dateninkonsistenzen kommen.
Alle Server ermöglichen Lesezugriffe, wodurch es bei Lesezugriffen zu einer Lastverteilung kommt. Da Schreibzugriffe jedoch zentral bearbeitet werden, stellt der Master einen Flaschenhals dar.
Bei der Peer-to-Peer-Replikation, sind alle Server über ein Peer-to-Peer-Netzwerk verbunden. Jeder Server übernimmt sowohl Schreib- als auch Lesezugriffe. Schreibzugriffe werden hierbei mit allen Servern synchronisiert.
Da es jedoch einige Zeit dauert, bis die Schreibzugriffe synchronisiert werden, kann es bei diesem Modell zu Dateninkonsistenzen kommen. Dieser Effekt tritt hier besonders zutage, wenn die Netzwerkverbindung zwischen zwei Standorten ausfällt.
Der Vorteil dieser Konfiguration ist, dass eine besonders hohe Ausfallsicherheit gegeben ist. Der Wegfall einzelner Peers führt nicht zu einem Datenverlust. Zudem ist dieses Modell leicht horizontal skalierbar, da bei Engpässen einfach weitere (kostengünstige) Rechner hinzugefügt werden können.
Die Peer-to-Peer-Replikation ist in der Softwareentwicklung und der Wartung (Updates, Backups etc.) besonders aufwändig und bedarf daher einer guten Planung seitens des Betreibers.
Die Fragmentierung und Master-Slave-Replikation kann auch kombiniert werden. Hierbei werden für jeden Datentyp ein Master bestimmt und auf mehrere andere Server, welche hierbei dem Master als Slaves dienen, repliziert. Ein Server kann hierbei die Rolle des Masters für einen Datentyp und die Rolle des Slave für andere Datentypen gleichzeitig übernehmen.
Als letzte Möglichkeit bietet sich noch die Fragmentierung eines Peer-to-Peer-Netzwerkes an. Hierbei werden mehrere Server zusammengefasst um sich als Peer-to-Peer-Netzwerk um einen bestimmten Datentyp zu kümmern. Jeder Server kann hierbei Teil von mehreren Peer-to-Peer-Netzwerken sein und somit unterschiedliche Datentypen behandeln.
Ein umgekehrter Fremdschlüssel (englisch reverse foreign key) entsteht, wenn ein bestimmter Eintrag einer Tabelle einen bestimmten Eintrag in einer anderen Tabelle verhindern soll. Ein Umgekehrter Fremdschlüssel sieht auf den ersten Blick oft wie ein Primärschlüssel aus.