Сообщение Re: Файловое хранилище для файлов с одновременным доступом от 26.01.2022 8:34
Изменено 26.01.2022 8:35 vsb
Re: Файловое хранилище для файлов с одновременным доступом
Здравствуйте, corpse56, Вы писали:
C>Теперь правила меняются. Файл должен хранится в базе. Запихнуть существующие файлы в базу и организовать их получение и загрузку не трудно. У меня возникают вопросы по поводу совместного доступа к одному и тому же файлу.
C>Например два пользователя хотят редактировать один и тот же файл. Они их скачивают к себе, редактируют и загружают обратно. При таком сценарии изменения будут только от последнего загрузившего.
А сейчас как пользователи справляются с этим?
C>1. Если файл необходимо отредактировать (то есть скачать к себе, изменить и загрузить изменённый), пользователь запускает режим редактирования, при котором все остальные пользователи не могут загружать изменённый файл до тех пор, пока пользователь сам не закроет режим редактирования либо истечёт время, отведённое на блокировку. То есть все ждут, пока пользователь не закончит режим редактирования. Это похоже на пессимистическую блокировку, если я правильно понимаю.
C>2. При скачивании файла, вычисляем его хэш, а когда пытаемся загрузить изменённый файл, то проверяем хэш. Если хэш изменился, значит даём отлуп и просим скачать файл заново. Это вроде как оптимистическая блокировка.
Всё верно.
C>Система эта не высоконагруженная. Около 50 пользователей. Конечно, случай конкурентного доступа маловероятен. Но тем не менее, хотелось бы узнать как решать такую задачу?
Третий способ это в автоматическом режиме сделать слияния изменений. Естественно возможность этого зависит от типа файла, совершенно не факт, что этот автоматический режим даст верный результат.
C>Теперь правила меняются. Файл должен хранится в базе. Запихнуть существующие файлы в базу и организовать их получение и загрузку не трудно. У меня возникают вопросы по поводу совместного доступа к одному и тому же файлу.
C>Например два пользователя хотят редактировать один и тот же файл. Они их скачивают к себе, редактируют и загружают обратно. При таком сценарии изменения будут только от последнего загрузившего.
А сейчас как пользователи справляются с этим?
C>1. Если файл необходимо отредактировать (то есть скачать к себе, изменить и загрузить изменённый), пользователь запускает режим редактирования, при котором все остальные пользователи не могут загружать изменённый файл до тех пор, пока пользователь сам не закроет режим редактирования либо истечёт время, отведённое на блокировку. То есть все ждут, пока пользователь не закончит режим редактирования. Это похоже на пессимистическую блокировку, если я правильно понимаю.
C>2. При скачивании файла, вычисляем его хэш, а когда пытаемся загрузить изменённый файл, то проверяем хэш. Если хэш изменился, значит даём отлуп и просим скачать файл заново. Это вроде как оптимистическая блокировка.
Всё верно.
C>Система эта не высоконагруженная. Около 50 пользователей. Конечно, случай конкурентного доступа маловероятен. Но тем не менее, хотелось бы узнать как решать такую задачу?
Третий способ это в автоматическом режиме сделать слияния изменений. Естественно возможность этого зависит от типа файла, совершенно не факт, что этот автоматический режим даст верный результат.
Re: Файловое хранилище для файлов с одновременным доступом
Здравствуйте, corpse56, Вы писали:
C>Теперь правила меняются. Файл должен хранится в базе. Запихнуть существующие файлы в базу и организовать их получение и загрузку не трудно. У меня возникают вопросы по поводу совместного доступа к одному и тому же файлу.
C>Например два пользователя хотят редактировать один и тот же файл. Они их скачивают к себе, редактируют и загружают обратно. При таком сценарии изменения будут только от последнего загрузившего.
А сейчас как пользователи справляются с этим?
C>1. Если файл необходимо отредактировать (то есть скачать к себе, изменить и загрузить изменённый), пользователь запускает режим редактирования, при котором все остальные пользователи не могут загружать изменённый файл до тех пор, пока пользователь сам не закроет режим редактирования либо истечёт время, отведённое на блокировку. То есть все ждут, пока пользователь не закончит режим редактирования. Это похоже на пессимистическую блокировку, если я правильно понимаю.
C>2. При скачивании файла, вычисляем его хэш, а когда пытаемся загрузить изменённый файл, то проверяем хэш. Если хэш изменился, значит даём отлуп и просим скачать файл заново. Это вроде как оптимистическая блокировка.
Всё верно.
C>Система эта не высоконагруженная. Около 50 пользователей. Конечно, случай конкурентного доступа маловероятен. Но тем не менее, хотелось бы узнать как решать такую задачу?
Третий способ это в автоматическом режиме сделать слияния изменений. Естественно возможность этого зависит от типа файла, совершенно не факт, что этот автоматический режим даст верный результат.
PS в базе файлы хранить это плохая идея. Храните лучше в облаке.
C>Теперь правила меняются. Файл должен хранится в базе. Запихнуть существующие файлы в базу и организовать их получение и загрузку не трудно. У меня возникают вопросы по поводу совместного доступа к одному и тому же файлу.
C>Например два пользователя хотят редактировать один и тот же файл. Они их скачивают к себе, редактируют и загружают обратно. При таком сценарии изменения будут только от последнего загрузившего.
А сейчас как пользователи справляются с этим?
C>1. Если файл необходимо отредактировать (то есть скачать к себе, изменить и загрузить изменённый), пользователь запускает режим редактирования, при котором все остальные пользователи не могут загружать изменённый файл до тех пор, пока пользователь сам не закроет режим редактирования либо истечёт время, отведённое на блокировку. То есть все ждут, пока пользователь не закончит режим редактирования. Это похоже на пессимистическую блокировку, если я правильно понимаю.
C>2. При скачивании файла, вычисляем его хэш, а когда пытаемся загрузить изменённый файл, то проверяем хэш. Если хэш изменился, значит даём отлуп и просим скачать файл заново. Это вроде как оптимистическая блокировка.
Всё верно.
C>Система эта не высоконагруженная. Около 50 пользователей. Конечно, случай конкурентного доступа маловероятен. Но тем не менее, хотелось бы узнать как решать такую задачу?
Третий способ это в автоматическом режиме сделать слияния изменений. Естественно возможность этого зависит от типа файла, совершенно не факт, что этот автоматический режим даст верный результат.
PS в базе файлы хранить это плохая идея. Храните лучше в облаке.