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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вообще конкурентный доступ на запись к файлу по сети - это мега-плохо. Это вызывает вопросы
по дизайну приложения в целом.
...
Рейтинг: 0 / 0
30.04.2019, 02:20
    #39808065
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм файлового кэша
maytonВообще конкурентный доступ на запись к файлу по сети - это мега-плохо.Эк вы сейчас SMB/NFS опустили ... Прямо ниже плинтуса.
...
Рейтинг: 0 / 0
30.04.2019, 07:06
    #39808085
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм файлового кэша
Чтобы гигабайты не гонять из-за мелких дописок, можно задействовать rsync
...
Рейтинг: 0 / 0
30.04.2019, 10:58
    #39808209
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм файлового кэша
Basil A. SidorovmaytonВообще конкурентный доступ на запись к файлу по сети - это мега-плохо.Эк вы сейчас SMB/NFS опустили ... Прямо ниже плинтуса.
Чел. Этот юзкейс даже для локального файла плох. Несколько разных процессов в произвольное время
что-то пишут. Пускай даже в режиме APPEND. Просто плохо.
...
Рейтинг: 0 / 0
30.04.2019, 18:58
    #39808517
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм файлового кэша
maytonЧел. Этот юзкейс даже для локального файла плох.Донесите своё мнение до разрабочиков Firebird (режим Classic), PostgreSQL и Oracle (Linux).
...
Рейтинг: 0 / 0
30.04.2019, 19:09
    #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]