Форум сайта python.su
ОК, а какого рода действия выполнялись на БД? Т.е. на основании чего сделан такой вывод?
Офлайн
ограничение на 2 гига - файл, кажется у fat32
Офлайн
LexanderХм… Разработка… :-) Выборки там всякие… Даже не знаю, что на это ответить.
ОК, а какого рода действия выполнялись на БД? Т.е. на основании чего сделан такой вывод?
Офлайн
ZZZЯ, собственно, прошу поделить опытом, чтобы учитывать его в будущих разработках.
Хм… Разработка… :-) Выборки там всякие… Даже не знаю, что на это ответить.
ZZZЯ для работы с sqlite вообще использую отдельный класс с очередью запросов, поэтому таких проблем нет. А вот использование sqlite несколькими процессами действительно требует костыля, от которого я бы отказался в пользу полноценной сетевой СУБД (пусть даже она используется только локально).
Нормальная транзакционность – можно писать одновременно с нескольких потоков;
Офлайн
Lexanderне знаю как в остальных ос, а в linux sqlite нормально пашет при записи от нескольких процессов, при изменении данных происходит локирование базы.ZZZ… А вот использование sqlite несколькими процессами действительно требует костыля, от которого я бы отказался в пользу полноценной сетевой СУБД (пусть даже она используется только локально).
Нормальная транзакционность – можно писать одновременно с нескольких потоков;
Офлайн
Да все нормально вроде бы даже на Вин.
Но раз в доке написано, что не рекомендуется, то в продакшн при интенсивных вставках в большую базу на NFS я такой режим не использовал бы, если бы не был на 100% уверен в нормальной поддержке локов на этой конкретной NFS. Исходя исключительно из этой рекомендации.
Как обычно, можно, только осторожно :)
Если приходится переносить базу на сетевое хранилище - это одно дело, если же изначально известнен режим работы, характерный для сетевых СУБД, то, имхо, стоит использовать для этого полноценную сетевую СУБД.
ЗЫ
В одном проекте, не связанном с sqlite, но использующем файловые блокировки под Вин ХП СП2 я лично сталкивался с проблемами, когда установленная блокировка не снималась. Приложение было расчитано на круглосуточную работу и такой неприятный баг был очень некстати.
Офлайн
У меня опыт работы с sqlite крайне отрицательный. Проект начинался с использованием django+sqlite, потом путем замены в settings.py sqlite на mysql(кстати, mysql был на другом хосте) производительность приложения выросла в несколько раз. Пришли к выводу, что это нельзя использовать, если происходит интенсивная запись в базу. С чтением оно еще туда-сюда справлялось.
Офлайн
LexanderЯ понимаю, что тебе надо, но ответить на это не могу. Просто общее субъективное ощущение тормознутости sqlite меня не оставляет.
Меня, в частности, интересовали типы операций, характер нагрузки, приблизительные соотношения разных типов, даже нюансы вроде описанных в скобках:
LexanderНе соглашусь. Это удобно.
Вот, например, указанная возможность написания своих функций - очень хороший аргумент. Но только не для встраиваемой СУБД, т.к. в этом случае нет необходимости (и преимущества) в централизованном хранилище таких объектов.
LexanderМне лично не приходилось, но сталкивался с приложением, которое умело работать как локально, так и как клиент-сервер. Лично мне очень понравилась идея архитектуры. Хотя там такая фирма была… И такие “программисты”… Страшно вспоминать…
Ведь нечасто требуется предусмотреть переход на сетевую СУБД со встраиваемой - задачи совсем разные.
LexanderЯ думаю, что все рано или поздно приходят к этому. :-)
Я для работы с sqlite вообще использую отдельный класс с очередью запросов, поэтому таких проблем нет.
EdТак оно и есть. Если нужен portable вариант базы с лучшим быстродействием – опять же файрбёрд.
Пришли к выводу, что это нельзя использовать, если происходит интенсивная запись в базу.
Офлайн
EdО, уже что-то.
Пришли к выводу, что это нельзя использовать, если происходит интенсивная запись в базу
ZZZВ чем удобство выражается?
Не соглашусь. Это удобно.
ZZZНе совсем. Одноногий ходит с костылем, т.к. без костыля ходить не может, это замена ноги.
И это костыль.
Отредактировано (Апрель 28, 2010 00:19:34)
Офлайн
LexanderБыстрее питьоньего кода. Иногда очень важно оптимизировать работу с базой, когда она является узким местом.
чем удобство выражается?
Надеюсь, не только принципе: вся логика в одном месте?
LexanderЭэээ… Нет. Самое главное тут то, что запросы к базе синхронны, а вот траблы при несинхронных изменениях известны – лично я сталкивался с повреждениями базы при множественных инсертах в несколько потоков (но там было всё сложно и я решил перейти на постгри).
Не совсем. Одноногий ходит с костылем, т.к. без костыля ходить не может, это замена ноги.
Костыль - это если по другому никак. Выделить всю работу с СУБД в отдельный класс - это просто удобство работы с кодом, сопровождения и т.п., но никак не замена безальтернативе.
LexanderА как же ORM? :-)
Выделить всю работу с СУБД в отдельный класс - это просто удобство работы с кодом, сопровождения и т.п.
Офлайн