Согласованность данных

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Согласованность данных (иногда консистентность данных, англ. data consistency) — согласованность данных друг с другом, целостность данных, а также внутренняя непротиворечивость.

Согласованность в ER-модели

[править | править код]

В терминах ER-модели, условия согласованности могут включать в себя указание того, какие значения могут принимать атрибуты узлов, какие связи могут устанавливаться между узлами, каково минимальное и максимальное число связей определённого типа, в котором может участвовать один узел.

Согласованность в базах данных

[править | править код]

Целостность базы данных означает соответствие имеющейся в базе данных информации её внутренней логике, структуре и всем явно заданным правилам.

Чтобы сложные структуры данных выполняли свою функцию, на их содержимое приходится накладывать особые условия — условия согласованности. Другими словами: если записать случайные байты в числовой массив фиксированной длины, мы получим случайную кучу чисел, но ничего не «сломаем». Если записать случайные байты, например, в строку в UTF-8, мы можем получить цепочку, с точки зрения UTF-8 бессмысленную — целостность нарушена. Многие задачи, решаемые алгоритмистами и программистами, связаны с поиском эффективной структуры данных и реализацией механизмов поддержки её согласованности.

Например, условия согласованности двоичного дерева поиска таковы:

  • Ни одна ссылка (кроме nil в «листьях» дерева) не ведёт в никуда.
  • Отсутствие циклов (древовидность): если ходить по ссылкам и против ссылок, существует один-единственный путь между двумя узлами.
  • Возрастание ключей в узлах дерева слева направо, а именно ключ в корневом узле должен быть меньше ключей узлов правого поддерева и больше ключей узлов левого поддерева.
  • Если в каждом узле дерева поиска хранится также указатель parent на родительский узел, то возникает дополнительное условие согласованности: в каждом узле X указатель на родительский узел должен указывать на такой узел, в котором ровно один из указателей на детей (left или right) указывает на узел X.

Одно из определений инкапсуляции в ООП — никакой вызов метода, никакое присваивание полей не сможет увести объект из согласованного состояния в несогласованное.

Литература

[править | править код]
  • Techniques for Data Consistency in Large Scale Distributed Systems - A Probabilistic Perspective. — Wayne State University, 2008. — 125 с. — ISBN 9780549892878. Архивировано 15 сентября 2016 года. Архивная копия от 15 сентября 2016 на Wayback Machine