
356 Глава 6. Непротиворечивость и репликация
или легкостью их разрешения в том случае, если они все-таки случатся. Большая
часть операций подразумевают чтение данных. Подобные хранилища данных со-
ответствуют очень слабой модели непротиворечивости, которая носит название
потенциальной непротиворечивости. После введения специальных моделей не-
противоречивости, ориентированных на клиента, оказывается, что множество
нарушений непротиворечивости можно относительно просто скрыть.
6.3.1.
Потенциальная непротиворечивость
Степень, в которой процессы действительно работают параллельно, и степень,
в которой действительно должна быть гарантирована непротиворечивость, могут
быть разными. Существует множество случаев, когда параллельность нужна лишь
в урезанном виде. Так, например, во многих системах управления базами данных
большинство процессов не производит изменения данных, ограничиваясь лишь
операциями чтения. Изменением данных занимается лишь один, в крайнем слу-
чае несколько процессов. Вопрос состоит в том, как быстро эти изменения могут
стать доступными процессам, занимающимся только чтением данных.
В качестве другого примера рассмотрим глобальную систему именования, та-
кую как DNS. Пространство имен DNS разделено на домены, каждый домен имеет
источник именования, который действует, как владелец этого домена. Только
этот источник может обновить свою часть пространства имен. Соответственно,
конфликт двух операций, которые хотели бы одновременно обновить одни и те
же данные (то есть конфликт двойной записи), невозможен. Единственная си-
туация, которую может потребоваться решать,
—
это конфликт чтения-записи.
В
том случае, когда он происходит, часто распространение изменений может про-
изводиться постепенно, в том смысле, что процессы чтения могут обнаружить
произошедшие изменения только через некоторое время после того, как они на
самом деле произойдут.
Еще один пример
—
World Wide Web. Фактически web-страницы всегда из-
меняются одним человеком
—
web-мастером или настоящим владельцем страницы.
В результате разрешать конфликты двойной записи обычно не требуется. С дру-
гой стороны, для повышения эффективности браузеры и прокси-серверы часто
конфигурируются так, чтобы сохранять загруженные страницы в локальном кэ-
ше и возвращать при следующем запросе именно их. Важный момент обоих ти-
пов систем web-кэширования состоит в том, что они могут возвращать устарев-
шие web-страницы. Другими словами, кэшированные страницы, возвращаемые в
ответ на запрос клиента, могут не соответствовать более новым версиям страниц,
хранящимся на web-сервере. Но даже при этом многие пользователи lyioryT счесть
такое несоответствие приемлемым.
Эти примеры могут рассматриваться как случаи распределенных и репли-
цируемых баз данных (крупных), нечувствительных к относительно высокой
степени нарушения непротиворечивости. Обычно в них длительное время не
происходит изменения данных, и все реплики постепенно становятся непротиво-
речивыми. Такая форма непротиворечивости называется
потенциальной
непро-
тиворечивостью
{eventual
consistency).