Целостность данных — это поддержание и обеспечение точности и согласованности данных на протяжении всего жизненного цикла . [1] Это критически важный аспект проектирования, внедрения и использования любой системы, которая хранит, обрабатывает или извлекает данные. Термин имеет широкую область применения и может иметь совершенно разные значения в зависимости от конкретного контекста даже в рамках одного и того же общего понятия вычислений . Иногда он используется как прокси-термин для качества данных , [2] в то время как проверка данных является предпосылкой для целостности данных. [3]
Целостность данных — это противоположность повреждению данных . [4] Общая цель любой техники целостности данных та же: гарантировать, что данные записаны именно так, как предполагалось (например, база данных, корректно отвергающая взаимоисключающие возможности). Более того, при последующем извлечении гарантируйте, что данные такие же, как и при первоначальной записи. Короче говоря, целостность данных направлена на предотвращение непреднамеренных изменений информации. Целостность данных не следует путать с безопасностью данных , дисциплиной защиты данных от несанкционированных сторон.
Любые непреднамеренные изменения данных в результате операции хранения, поиска или обработки, включая злонамеренные действия, неожиданный отказ оборудования и человеческую ошибку , являются нарушением целостности данных. Если изменения являются результатом несанкционированного доступа, это также может быть нарушением безопасности данных. В зависимости от вовлеченных данных это может проявиться как безобидное изменение цвета одного пикселя на изображении, отличающегося от изначально записанного, так и потеря фотографий из отпуска или критически важной для бизнеса базы данных, и даже катастрофическая потеря человеческой жизни в критически важной для жизни системе .
Физическая целостность имеет дело с проблемами, которые связаны с правильным хранением и извлечением самих данных. Проблемы с физической целостностью могут включать электромеханические неисправности, недостатки конструкции, усталость материала , коррозию , перебои в подаче электроэнергии , стихийные бедствия и другие особые опасности окружающей среды, такие как ионизирующее излучение , экстремальные температуры, давления и перегрузки . Обеспечение физической целостности включает такие методы, как избыточное оборудование, источник бесперебойного питания , определенные типы массивов RAID , радиационно-устойчивые чипы, память с исправлением ошибок , использование кластерной файловой системы , использование файловых систем, которые используют контрольные суммы на уровне блоков, такие как ZFS , массивы хранения, которые вычисляют вычисления четности, такие как исключающее или, или используют криптографическую хэш-функцию и даже наличие сторожевого таймера на критических подсистемах.
Физическая целостность часто широко использует алгоритмы обнаружения ошибок, известные как коды исправления ошибок . Ошибки целостности данных, вызванные человеком, часто обнаруживаются с помощью более простых проверок и алгоритмов, таких как алгоритм Дамма или алгоритм Луна . Они используются для поддержания целостности данных после ручной транскрипции из одной компьютерной системы в другую человеком-посредником (например, номера кредитных карт или банковских маршрутов). Ошибки транскрипции, вызванные компьютером, могут быть обнаружены с помощью хэш-функций .
В производственных системах эти методы используются совместно для обеспечения различных степеней целостности данных. Например, файловая система компьютера может быть настроена на отказоустойчивом массиве RAID, но может не предоставлять контрольные суммы на уровне блоков для обнаружения и предотвращения скрытого повреждения данных . В качестве другого примера, система управления базами данных может соответствовать свойствам ACID , но контроллер RAID или внутренний кэш записи жесткого диска могут не соответствовать.
Этот тип целостности касается правильности или рациональности фрагмента данных, учитывая определенный контекст. Сюда входят такие темы, как ссылочная целостность и целостность сущностей в реляционной базе данных или правильное игнорирование невозможных данных датчиков в роботизированных системах. Эти проблемы включают обеспечение того, чтобы данные «имели смысл» с учетом их среды. Проблемы включают ошибки программного обеспечения , недостатки проектирования и человеческие ошибки. Общие методы обеспечения логической целостности включают такие вещи, как проверки ограничений , ограничения внешнего ключа , утверждения программы и другие проверки работоспособности во время выполнения.
Физическая и логическая целостность часто имеют много общих проблем, таких как человеческие ошибки и недостатки проектирования, и обе должны соответствующим образом обрабатывать параллельные запросы на запись и извлечение данных, причем последнее является полностью самостоятельной темой.
Если сектор данных имеет только логическую ошибку, его можно использовать повторно, перезаписав его новыми данными. В случае физической ошибки затронутый сектор данных становится навсегда непригодным для использования.
Целостность данных содержит руководящие принципы для хранения данных , определяющие или гарантирующие продолжительность хранения данных в определенной базе данных (обычно реляционной базе данных ). Для достижения целостности данных эти правила последовательно и регулярно применяются ко всем данным, поступающим в систему, и любое ослабление контроля может привести к ошибкам в данных. Реализация проверок данных как можно ближе к источнику ввода (например, вводу данных человеком) приводит к тому, что в систему поступает меньше ошибочных данных. Строгое соблюдение правил целостности данных приводит к снижению частоты ошибок и экономии времени на устранение неполадок и отслеживание ошибочных данных и ошибок, которые они вызывают в алгоритмах.
Целостность данных также включает правила, определяющие отношения, которые часть данных может иметь с другими частями данных, например, запись о клиенте может ссылаться на приобретенные продукты , но не на несвязанные данные, такие как корпоративные активы . Целостность данных часто включает проверки и исправление недействительных данных на основе фиксированной схемы или предопределенного набора правил. Примером являются текстовые данные, введенные там, где требуется значение даты и времени. Также применимы правила для вывода данных, указывающие, как значение данных выводится на основе алгоритма, участников и условий. Он также определяет условия того, как значение данных может быть повторно выведено.
Целостность данных обычно обеспечивается в системе базы данных серией ограничений или правил целостности. Три типа ограничений целостности являются неотъемлемой частью реляционной модели данных : целостность сущностей, ссылочная целостность и целостность домена.
Если база данных поддерживает эти функции, то база данных несет ответственность за обеспечение целостности данных, а также за модель согласованности для хранения и извлечения данных. Если база данных не поддерживает эти функции, то ответственность за обеспечение целостности данных лежит на приложениях, в то время как база данных поддерживает модель согласованности для хранения и извлечения данных.
Наличие единой, хорошо контролируемой и четко определенной системы обеспечения целостности данных повышает:
Современные базы данных поддерживают эти функции (см. Сравнение систем управления реляционными базами данных ), и обеспечение целостности данных стало фактической обязанностью базы данных. Компании, и действительно многие системы баз данных, предлагают продукты и услуги для миграции устаревших систем в современные базы данных.
Примером механизма целостности данных является родительско-дочерняя связь связанных записей. Если родительская запись владеет одной или несколькими связанными дочерними записями, все процессы ссылочной целостности обрабатываются самой базой данных, что автоматически обеспечивает точность и целостность данных, так что ни одна дочерняя запись не может существовать без родительской (также называемой сиротой) и что ни одна родительская запись не теряет свои дочерние записи. Это также гарантирует, что ни одна родительская запись не может быть удалена, пока родительская запись владеет какими-либо дочерними записями. Все это обрабатывается на уровне базы данных и не требует кодирования проверок целостности в каждом приложении.
Результаты различных исследований показывают, что ни широко распространенные файловые системы (включая UFS , Ext , XFS , JFS и NTFS ), ни аппаратные RAID- решения не обеспечивают достаточной защиты от проблем с целостностью данных. [5] [6] [7] [8] [9]
Некоторые файловые системы (включая Btrfs и ZFS ) предоставляют внутренние контрольные суммы данных и метаданных , которые используются для обнаружения скрытого повреждения данных и улучшения целостности данных. Если повреждение обнаружено таким образом, и внутренние механизмы RAID, предоставляемые этими файловыми системами, также используются, такие файловые системы могут дополнительно реконструировать поврежденные данные прозрачным способом. [10] Такой подход позволяет улучшить защиту целостности данных, охватывающую все пути данных, что обычно известно как сквозная защита данных . [11]