MongoDB

MongoDB ist die führende Open-Source, Document Datenbank die für einfache Entwicklung und Skalierung aber auch für Big Data Szenarien entwickelt wurde.

Hintergrundwissen Transaktionen: Die globale logische Uhr

Marc-David Militz
Expert
  • Artikel von Dj Walker-Morgan

    • englischer Originalartikel
      https://www.mongodb.com/blog/post/transactions-background-part-4-the-global-logical-clock
      Übersetzung mit freundlicher Genehmigung von MongoDB

      • Zusammenfassung

        • Zeitsynchronisation innerhalb der MongoDB wurde verbessert, indem eine globale logische Uhr eingeführt wurde. Implementiert ist das als hybride logische Uhr und geschützt durch eine Verschlüsselung, überspannt die globale logische Zeit nun den kompletten Sharded Cluster. Ein konsistenter Blick auf die Zeit ist essenziell für Multi-Dokument-ACID-Transaktionen, außerdem ermöglicht es globale Snapshots.

          • Hintergrund

            • Die Uhr von MongoDB wird im oplog des Primaries, von jedem Shard überwacht. Jede Operation, die Änderungen in den Daten zur Folge hat, wird im oplog aufgezeichnet. Genauso wie jede Änderung im oplog erfasst wird, wird auch die logische Uhr des Primaries berührt und auch die Uhrzeit der Operation erfasst. Dadurch entsteht eine Reihenfolge, die von jedem Node, innerhalb des Shards, verwendet werden kann, um sich mit dem Primary zu synchronisieren.

              • Hybride logische Uhren

                • Während Shards ihre eigene Uhr haben können, ist das für einen kompletten Cluster etwas anderes. Die Uhren haben keine einheitliche Referenz und Zählen ihre eigene Zeit hoch. Deshalb wurde ab MongoDB 3.6 eine hybride logische Uhr eingeführt.

                  Diese hybride Uhr kombiniert die Systemzeit und einen Zähler für Operationen, die zu einem physikalischen Zeitpunkt stattfinden, und erstellen daraus einen hybriden Zeitstempel. Dieser neue Zeitstempel wird nun im Cluster über alle bestehenden Verbindungen verbreitet. Sobald ein Server eine Nachricht mit so einem Zeitstempel erhält, und der Zeitstempel nach dem aktuellen Zeitstempel des Servers liegt, dann wird der letzte ermittelte Zeitstempel mit dem neuen Wert geupdated. Dieser letzte ermittelte Zeitstempel wird augenblicklich hochgezählt, sobald eine Änderung erfolgt.

                  • Schutz vor Manipulationen

                    • Die Möglichkeit, dass ein Angreifer eine falsche Zeitangaben und/oder Zähler injected um zu erreichen dass das System "keine Zeit mehr" hat um neue Änderungen hochzuzählen und damit ein Shard nicht mehr in der Lage ist dies Änderungen zu synchronisieren, besteht immer. Diesem Problem begegnet man, indem man einen Hash aus dem Zeitstempel und einem privaten Schlüssel des Primaries erzeugt. Mit diesem Hash wird der Ursprung des Zeitstempels, innerhalb der Vertrauenszone eines Clusters, verifiziert. Sollte ein Angreifer in den Besitz des privaten Schlüssels gelangen, dann ist das System derart kompromittiert das der Zeitstempel das geringste Problem sein wird.

                      • Globale logische Uhren und Transaktionen

                        • Mit einer hybriden logischen Uhr wird es einfacher die Nodes, innerhalb eines Replica Sets und über mehrere Shards in einem Cluster, zu koordinieren und zu synchronisieren. Mit der Erweiterung des Umfangs von Transaktionen über mehrere Shards, in MongoDB 4.2, ist diese verlässliche synchronisierte Uhr ein Fundament für das Funktionieren. Sicherzustellen, dass die Uhr nicht manipuliert werden kann, macht dieses Fundament noch verlässlicher.

                          Mehr Hintergrundwissen zum Thema MongoDB Cluster bietet das Qualiero Sharded Cluster Administrator Classroom Training https://www.qualiero.com/lerninhalte/classroom-trainings/mongodb-fuer-sharded-cluster-administrator-kurs.html

Latest member activities

Recommend this community post