Skip to main content

Конференции

Просмотр конференции fido7.pushkin.local:

Предыдущее Следующее

Дата: 14 Jun 2019, 22:00:33
От: Andrei Mihailov @ 2:469/335.0
Кому: Anatoliy Sablin
Тема: win via usd


Hello, Anatoliy Sablin.
On 14.06.2019 8:18 you wrote:

 AM>> Разве?
 AS> Да, синхронизация данных прикладного ПО - это задача самого  
 AS> прикладного ПО, а не ОС.
 AM>> Давай рассмотрим конкретную ситуацию. Имеем, скажем, базу данных, 
 AM>> открытую одним пользователем. И тут ее открывает другой. И   
 AM>> записывает в нее новые данные. Я правильно понял, что они   
 AM>> запишутся в его копию базы, а в той копии, с которой работает   
 AM>> первый пользователь, этих данных не будет, а второй пользователь, 
 AM>> соответственно, не увидит изменений, сделанных первым   
 AM>> пользователем после открытия файла вторым? Т.е. одновременно  
 AM>> будут  существовать две разные версии одной базы данных? А что   
 AM>> произойдет, когда оба пользователя закроют свои копии файла?
 AS> В нормальных базах данных подобные ситуации разрешаются такой  
 AS> штукой под названием "транзакция" и различными типами блокировок  
 AS> (оптимистическая или пессимистическая). Однопользовательские СУБД  
 AS> как например SQLite позволяют работать только одному пользователю, 
 AS> и не дают другим подсоединиться (в sqlite, h2 создаётся файл-лок с 
 AS> помощью которого осуществляется блокировка).

Ок. А если это будет не sql, а электронная таблица, например? 
 
 AS> И я не понял, к чему были приплетены файлы

Потому, что изначально речь шла о множественном доступе к ним
 
 AS> , если речь про СУБД. Если СУБД не имеет средство блокировки  
 AS> (блокировка файлов - это мегакостыль, от которого надо  
 AS> избавляться), то советую выкинуть это говно и пользоваться  
 AS> нормальными СУБД.

А в чем СУБД хранит данные, если не в файлах?
 
 AM>> Или такая ситуация: ты открыл... ну скажем документ в офисе и   
 AM>> забыл его закрыть. Затем (думая, что закрыл его) запустил  
 AM>> файловый  менеджер и удалил его... Он удалится с диска, но  
 AM>> останется  открытым в офисе?
 AS> Да.
 AM>> И что получится после закрытия офиса - файл обратно создасться на 
 AM>> диске?
 AS> Глупый вопрос. Произойдёт ровно тоже самое, что и в случае если  
 AS> есть файл, офис спросит, сохранить ли изменения. Если пользователь 
 AS> нажмёт "да", только файл сохранится, если "нет", то не закроется  
 AS> без сохранения. В чём проблема?

Проблема в том, что если пользователь нажмет "да", то файл запишется на диск, где его не должно быть - ведь пользователь его уже удалил. Вот именно для этого и нужна блокировка - невозможность
удалить открытый файл подсказывает пользователю, что сначала надо его закрыть, а потом удалять, а не наоборот.
 
 AM>> А если файл очень большой и офис его подгружает по частям?
 AS> Офис так не умеет, он грузит весь файл а ОЗУ. Есть даже такой хак  
 AS> как убить офис, создать на сетевой шаре вордовый документ с одним  
 AS> словом, но сделать очень большую историю изменений (можно легко  
 AS> таким образом увеличить размер файла до 2гб). И офис сначала час  
 AS> будет загрузить к себе этот документ, а потом упадёт, т. к.  
 AS> закончится ОЗУ.

Странно. Это умели делать даже допотопные вордстары и супертексты в ср/м... И именно от ср/м перешла в дос и виндовс технология блокировки файлов. А в современных осях этого нет и редакторы вынуждены
падать...
 

--
Best regards!
Posted using Hotdoged on Android

--- Hotdoged/2.13.5/Android
Origin: Сижу я, никого не трогаю - и тут Алиса пишет Бобу (2:469/335)

Предыдущее Следующее

К списку сообщений
К списку конференций