Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 23, 2009 02:22:29

u4upy
От:
Зарегистрирован: 2009-05-25
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLite в сети

http://sqlite.org/faq.html#q5

Именно сейчас нашему приложению безразлично, что там автор говорит. Но на будущее завели файл-флажок, база занята|база не занята. Поверили автору, боимся. Некрасиво получается. И смотрим на SQL Server CE. Там авторы не настолько категоричны.

Лично меня убивает читать, что “люди которые работали дофига на винде говорят, что блокировка глючна и ненадежна. Если это правда, то…” Как так можно в своем собственном FAQ? А? Проверь, а потом пиши, информируй.

Пользователей ~5, записей в день ~500.

Так можем ли мы безбоязненно использовать SQLite в сети для небольших таких, маленьких приложений? Кроссплатформенность важна. NFS, ага, всякое такое.



Отредактировано (Дек. 23, 2009 02:27:25)

Офлайн

#2 Дек. 23, 2009 03:21:04

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLite в сети

u4upy
Лично меня убивает читать, что “люди которые работали дофига на винде говорят, что блокировка глючна и ненадежна. Если это правда, то…” Как так можно в своем собственном FAQ? А? Проверь, а потом пиши, информируй.
В PHP есть функция стандартной библиотеки flock(), которая блокирует файл. Вот что написано в документации:

“Warning

flock() will not work on NFS and many other networked file systems. Check your operating system documentation for more details.

On some operating systems flock() is implemented at the process level. When using a multithreaded server API like ISAPI you may not be able to rely on flock() to protect files against other PHP scripts running in parallel threads of the same server instance!

flock() is not supported on antiquated filesystems like FAT and its derivates and will therefore always return FALSE under this environments (this is especially true for Windows 98 users).”



Офлайн

#3 Дек. 23, 2009 09:32:42

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

SQLite в сети

u4upy
Так можем ли мы безбоязненно использовать SQLite в сети для небольших таких, маленьких приложений?
Там где будет хоть маленькая конкуренция запросов к базе уже нужно начинать бояться =)



Офлайн

#4 Дек. 23, 2009 11:08:20

clopomor
От:
Зарегистрирован: 2007-06-12
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLite в сети

ну для сiткових цiлей краще firebird, ніж sqlite
http://www.sqlite.org/whentouse.html

або ж використовувати http://sqliteserver.xhost.ro/

http://sqlitedbms.sourceforge.net/index.htm



Офлайн

#5 Дек. 23, 2009 11:25:09

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

SQLite в сети

Ваш механизм блокировки будет очень похож на таковой в файловой 1С. Думаю, дальше объяснять нет смысла.



Офлайн

#6 Янв. 4, 2010 22:23:05

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

SQLite в сети

OS locks – весьма отвратительная штука. Имею что сказать по этому поводу. FAQ SQLite все правильно говорит.

Хотите кросс-платформенное решение? Чуть медленноватое правда. Так делается в bzr для создания замков. Алгоритм простой:

1. имеется каталог lock
2. в нем создается подкаталог со временным именем, в этом подкаталоге создается файл info с информацией о замке (например HOST/PID процесса, имя юзера, время создания замка). Наличие файла внутри каталога – важная деталь.
3. Затем временный подкаталог пытаемся переименовать в некоторое фиксированное имя, например held
4. Если переименование удалось – значит мы успешно закрыли замок
5. Если переименование не удалось, то значит другой процесс уже закрыл замок. Можно прочитать файл info, чтобы понять кто был этот наглец.
6. По окончанию блокировки каталог held удаляем вместе с файлом (или переименовываем во временное имя и удаляем).



Офлайн

#7 Янв. 4, 2010 22:24:39

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

SQLite в сети

Lexander
Ваш механизм блокировки будет очень похож на таковой в файловой 1С. Думаю, дальше объяснять нет смысла.
Почему же нет смысла? Очень даже есть. Не все тут эксперты по 1C. Расскажите, пожалуйста.



Офлайн

#8 Янв. 5, 2010 00:42:44

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

SQLite в сети

bialix
2. в нем создается подкаталог со временным именем, в этом подкаталоге создается файл info с информацией о замке (например HOST/PID процесса, имя юзера, время создания замка). Наличие файла внутри каталога – важная деталь.
почему важен файл внутри каталога? Он несет какую-то дополнительную нагрузку кроме того, что в нем лежит информация о том, кто залочил?
Что будет если процесс-локер упадет? наш лок будет вечно там висеть? Или нужно будет дополнительно проверять живой он или нет?



Отредактировано (Янв. 5, 2010 00:44:09)

Офлайн

#9 Янв. 5, 2010 02:10:33

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

SQLite в сети

bialix
Файловые блокировки в 1С существенно сказываются на производительности. Причем, зависимость увеличения времени обработки 1-го справочника, документа от количества пользователей и объема БД - прямая.
Плюс проблемным местом именно под Вин является зависание или вылет клиента во время операций. Винда иногда забывает снять блокировку, даже если нет хозяина этой блокировки.



Офлайн

#10 Янв. 5, 2010 08:23:43

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

SQLite в сети

Ed
bialix
2. в нем создается подкаталог со временным именем, в этом подкаталоге создается файл info с информацией о замке (например HOST/PID процесса, имя юзера, время создания замка). Наличие файла внутри каталога – важная деталь.
почему важен файл внутри каталога? Он несет какую-то дополнительную нагрузку кроме того, что в нем лежит информация о том, кто залочил?
Что будет если процесс-локер упадет? наш лок будет вечно там висеть? Или нужно будет дополнительно проверять живой он или нет?
Файл внутри каталога нужен чтобы предотвратить успешное переименовывание на Linux-платформе. В случае пустого каталога операция может закончиться успешно даже если каталог уже существует.

Если процесс-локер упал или висит, то любой процесс может разрушить замок.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version