powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм файлового кэша
25 сообщений из 30, страница 1 из 2
Алгоритм файлового кэша
    #39807624
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сервер который по запросу передает клиентам файлы.
Клиент А кэширует на диске скачанный файл.
В этот момент клиент В изменяет на сервере этот файл.
Как клиент А может узнать, что версия файла в его локальном кэше устарела? Файлы могут быть большого размера, сотни мегабайт.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807632
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Время последнего изменения проверяй.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807636
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt,

у кешируемого объекта есть время жизни, как оно истечет закачается новый файл, до этого момент пользователь будет работать со старой версией файла.
я так понимаю 2 пользователь так же имеет доступ на запись этого файла?
тогда делайте checking\checkout
и пока пользователь 1 держит файл в checkout'е, 2 его не может изменить, какая бы версия у него не было.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807639
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВремя последнего изменения проверяй.

Ок, допустим пришел злой админ Вася и начал переводить время на работающем сервере. Вперед, назад.
Не поломает ли это алгоритм завязанный на время?
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807642
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt,

конечно поломает, особенно, если он переведет время назад, но я бы после этого поломал руки админу, так как время менять на сервере крайне противопоказано не только по этой причине.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807643
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesEolt,

у кешируемого объекта есть время жизни, как оно истечет закачается новый файл, до этого момент пользователь будет работать со старой версией файла.
я так понимаю 2 пользователь так же имеет доступ на запись этого файла?
тогда делайте checking\checkout
и пока пользователь 1 держит файл в checkout'е, 2 его не может изменить, какая бы версия у него не было.

У каждого пользователя есть права на закачку, скачивание, изменение и удаленией файлов.
Время жизни файла в кеше - до тех пор пока файл не изменился на сервере.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807644
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltDima TВремя последнего изменения проверяй.

Ок, допустим пришел злой админ Вася и начал переводить время на работающем сервере. Вперед, назад.
Не поломает ли это алгоритм завязанный на время?
Не поломает. Надо проверять на равно, а не на больше-меньше.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807645
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно просто привязаться к версии файла в системе.
к примеру, в АД, каждый объект имеет счетчик изменений, любое изменение приведет к его изменению, меняется это значение на номер который хранится в "корне" ад. Меняя любой объект, вы изменяете этот центральный сиквенс, после измененному элементу присваивается этот номер. Таким образом, можно получить все измененные объекты, с момента X, если в момент X запомнить этот сиквенс
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807648
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если речь о виндовой сети, то ОС может сообщать об изменении файлов FindFirstChangeNotification()
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807661
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, с временем понятно. А как управлять размером кэша? Если размер накопителя клиента меньше, чем размер хранилища файлов на сервере, то клиент исчерпает все место на своем диске
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807884
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltDima TВремя последнего изменения проверяй.

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

А вообще знаешь очень сложно обсуждать файловый кеш безотносительно сервера и протокола.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807886
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltОк, допустим пришел злой админ Вася и начал переводить время на работающем сервере. Вперед, назад.
Не поломает ли это алгоритм завязанный на время?Как "тот самый админ" ответственно заявляю, что отметка даты времени, записанная в файловой системе не меняется при изменении (локального) времени операционной системы сервера.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807896
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltЕсть сервер который по запросу передает клиентам файлы.
Клиент А кэширует на диске скачанный файл.
В этот момент клиент В изменяет на сервере этот файл.
Как клиент А может узнать, что версия файла в его локальном кэше устарела? Файлы могут быть большого размера, сотни мегабайт.
Хэш сохранять вместе с файлом
Его и проверять при обращении
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39807909
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltЕсть сервер который по запросу передает клиентам файлы.
Клиент А кэширует на диске скачанный файл.
В этот момент клиент В изменяет на сервере этот файл.
Как клиент А может узнать, что версия файла в его локальном кэше устарела? Файлы могут быть большого размера, сотни мегабайт.
Использовать HTTP для передачи файлов.
Там кеширование поддерживается из коробки (читайте про Etag, If-None-Match).
И есть готовый софт - например nginx на серверной стороне, curl на клиентской.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808008
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилХэш сохранять вместе с файлом
Его и проверять при обращении

А если файл 1 гигабайт? А если таких файлов сотня? Сколько будет по-времени считать его хэш?
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808009
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltИзопропилХэш сохранять вместе с файлом
Его и проверять при обращении

А если файл 1 гигабайт? А если таких файлов сотня? Сколько будет по-времени считать его хэш?
Столько-же сколько и без кеша. Современные технологии бро... Процессор уже SHA считает.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808017
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Чтобы банально прочитать с hdd диска файл в 1 гигабайт уйдет секунд 20 наверное. А если какой то клиент постоянно дописывает к такому файлу по несколько килобайт данных, то сервер будет непрерывно читать его чтобы пересчитать хэш поглотив все ресурсы системы.
Сразу видно что такой вариант не работает.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808019
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eoltmayton,

Чтобы банально прочитать с hdd диска файл в 1 гигабайт уйдет секунд 20 наверное. А если какой то клиент постоянно дописывает к такому файлу по несколько килобайт данных, то сервер будет непрерывно читать его чтобы пересчитать хэш поглотив все ресурсы системы.
Сразу видно что такой вариант не работает.
А теперь давай посмотрим на задачу критически. Тебе тут накидали всяких советов.
Они - правильные. Это как советы одевать тёплые штаны зимой.

Тебе надо обеспечить конкурентный доступ к файлу?
По какому протоколу? Последнее важно т.к. замечено выше что
условные хедеры ( https://developer.mozilla.org/ru/docs/Web/HTTP/Conditional_requests)
решают часть твоих задач для HTTP.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808034
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eoltmayton,

Чтобы банально прочитать с hdd диска файл в 1 гигабайт уйдет секунд 20 наверное. А если какой то клиент постоянно дописывает к такому файлу по несколько килобайт данных, то сервер будет непрерывно читать его чтобы пересчитать хэш поглотив все ресурсы системы.
Сразу видно что такой вариант не работает.
Это означает, что этот файл кэшировать бесполезно

Попытайся изначальную задачу сформулировать
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808045
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилEoltmayton,

Чтобы банально прочитать с hdd диска файл в 1 гигабайт уйдет секунд 20 наверное. А если какой то клиент постоянно дописывает к такому файлу по несколько килобайт данных, то сервер будет непрерывно читать его чтобы пересчитать хэш поглотив все ресурсы системы.
Сразу видно что такой вариант не работает.
Это означает, что этот файл кэшировать бесполезно

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

Вообще конкурентный доступ на запись к файлу по сети - это мега-плохо. Это вызывает вопросы
по дизайну приложения в целом.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808065
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВообще конкурентный доступ на запись к файлу по сети - это мега-плохо.Эк вы сейчас SMB/NFS опустили ... Прямо ниже плинтуса.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808085
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы гигабайты не гонять из-за мелких дописок, можно задействовать rsync
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808209
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovmaytonВообще конкурентный доступ на запись к файлу по сети - это мега-плохо.Эк вы сейчас SMB/NFS опустили ... Прямо ниже плинтуса.
Чел. Этот юзкейс даже для локального файла плох. Несколько разных процессов в произвольное время
что-то пишут. Пускай даже в режиме APPEND. Просто плохо.
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808517
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧел. Этот юзкейс даже для локального файла плох.Донесите своё мнение до разрабочиков Firebird (режим Classic), PostgreSQL и Oracle (Linux).
...
Рейтинг: 0 / 0
Алгоритм файлового кэша
    #39808523
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle работает атомарно и блочно. И не поверх Samba/NFS.

А разработки "ушастого кота с сигаретой" (автор не обижайся я это с иронией) очень напоминают
строительство БД на файлах. Был там. Знаю. Строили свою такую систему. Но у нах проще было.
Не было конкурентных модификаций. И документы были single-write-only.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм файлового кэша
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]