Поделиться через


Когерентность данных

Согласованные данные — это одинаковые данные по сети. Другими словами, если данные согласованы, данные на сервере и всех клиентах синхронизируются. Одним из типов программной системы, обеспечивающей когерентность данных, является система управления редакциями (RCS). Такая система обычно довольно проста, и только одному пользователю разрешено изменять указанный файл одновременно. Другие могут прочитать файл, но не могут изменить его.

Пользователь, который может изменить файл, извлек его. Затем пользователь проверяет измененный файл, чтобы другие пользователи могли видеть изменения. Только после того, как пользователь возвратит файл, другой пользователь может проверка его.

Для эффективной работы RCS требуется активное вмешательство пользователей. Файловая система, работающая по сети, должна обрабатывать проблему автоматически.

Обеспечить локальное кэширование согласованных данных довольно просто, если у вас есть один поток на одном клиенте, который обращается к файлу по сети за раз. Однако в большинстве случаев многие разные потоки на одном или нескольких компьютерах могут считывать один и тот же файл. Эта ситуация по-прежнему довольно проста. Так как данные в файле являются статическими, каждый клиентский компьютер может иметь собственную локальную копию без каких-то последствий для совместного использования данных.

Более распространенной ситуацией является один поток, изменяющий файл, и многие другие потоки считывают его. В момент выполнения операции записи все локальные кэши этого файла являются устаревшими. Сервер должен уведомить каждого клиента о том, что он должен отказаться от кэша. Все последующие операции чтения файла должны выполняться по сети.

В другой распространенной ситуации несколько потоков на одном или нескольких сетевых клиентах могут попытаться выполнить запись в один и тот же файл. Эта ситуация похожа на ситуацию, в которой несколько пользователей RCS хотят внести изменения в один файл. Каждый пользователь должен проверка файл, внести изменения, а затем проверка файл обратно. Аналогичным образом, в локальной схеме кэширования сервер должен передать право записи в файл в один клиентский поток за раз.