Was ist der Unterschied zwischen Integrität und Konsistenz?

7

Unabhängig davon, ob ich über CAP oder ACID gelesen habe, wird auf Konsistenz verwiesen, um die DB-Integritätsbeschränkungen sicherzustellen. Ich verstehe also nicht, warum zwei Begriffe verwendet werden, um dasselbe zu bezeichnen, oder ob es einen Unterschied zwischen Integrität und Konsistenz gibt.

Ich habe das gelesen

Wie auch immer, Atomic, Consistent, Isolated, Durable sind Eigenschaften der Transaktionen. Es ist wahr, dass Atomizität + Isolation ausreicht, um Ihre eigene Konsistenz zu erreichen. Wir können aber auch unsere eigene Atomizität, unsere eigene Isolation und unsere eigene Beharrlichkeit (Haltbarkeit) rollen. Wenn wir unsere eigenen rollen, müssen wir für Merkmale mit unserem eigenen Blut, Schweiß und Klammern bezahlen. Wir sagen nicht, dass die Eigenschaften uns von einem Transaktionssystem gegeben wurden.

Dies deutet darauf hin, dass die Benutzeranwendung neben den Einschränkungen der Datenbankintegrität auch Konsistenz bieten kann. Dies ist keine Eigenschaft, die von der Datenbank bereitgestellt wird, wie dies bei AID-Eigenschaften der Fall ist. Warum sollten Sie C den Titel geben, wie Sie es bei den anderen vom System bereitgestellten AID-Eigenschaften tun?

Kleiner Alien
quelle

Antworten:

6

Ich denke, der Unterschied besteht darin, dass sich die beiden Begriffe auf verschiedene Dinge beziehen:

  • Konsistenz bezieht sich auf Transaktionen (es ist das C in ACID).

  • Integrität bezieht sich auf Datenbanken.

Eine Transaktion gilt als konsistent, wenn sie die Integrität der Datenbank beibehält (dh wenn sie die Datenbank von einem gültigen Zustand in einen anderen gültigen Zustand umwandelt).

ypercubeᵀᴹ
quelle
Warten Sie, in Serializability habe ich das gelesen Serializability is used to keep the data in the data item in a consistent state. Wenn Sie Recht haben, sollten sie sagen consistency is used to maintain the integrity/correctness, nicht wahr? Sie scheinen die Konsistenz-Eigenschaft anstelle der Transaktion auf die Datenbank anzuwenden. Wir sollten also auch über die DB-Konsistenz sprechen können. Es muss dann mit Integrität identisch sein, oder?
Little Alien
5

CAP und ACID diskutieren verschiedene Dinge, obwohl beide das C für Konsistenz verwenden.

Lesen Sie den Beitrag von John Huggs: https://www.voltdb.com/blog/disambiguating-acid-and-cap

ACID definiert, was erforderlich ist, um eine "echte Transaktion" durchzuführen, die die ACID-Ziele erfüllt. Tatsächlich scheint das C für Konsistenz eher für das Akronym zu stehen als für die Definition realer Konsistenzregeln. Die Transaktion definiert die Konsistenzgrenze.

CAP ist für verteilte Systeme vorgesehen und verspricht, dass jedes Replikat mit demselben logischen Wert, das auf Knoten in einem verteilten System verteilt ist, jederzeit denselben exakten Wert hat.

Aufgrund der Latenzprobleme bei verteilten Systemen definiert CAP jedoch nicht unbedingt, welcher letzte logische Wert beibehalten wird.

Konsistenz in CAP bedeutet daher, dass jeder Lesevorgang entweder (1) den letzten Schreibvorgang oder (2) einen Fehler empfängt .

Siehe auch die akzeptierte Antwort von RolandoMySQLDBA (Januar 2013) unter: Konsistenz im ACID- und CAP-Theorem, sind sie gleich?

Die Zusammenfassung dieser kurzen Antwort unterscheidet sich wie folgt:

  • ACID adressiert die Datenkonsistenz eines einzelnen Knotens
  • CAP befasst sich mit der clusterweiten Datenkonsistenz

Adressierung der beiden Begriffe:

Integrität - Konformität bei der Anwendung von etwas aus Gründen der Logik, Genauigkeit oder Fairness.

Konsistenz - Enthält keine logischen Widersprüche.

RLF
quelle