powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / использование SQLite в болших веб-проектах
23 сообщений из 23, страница 1 из 1
использование SQLite в болших веб-проектах
    #37850564
dodger778
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые форумчани!

Волнует вопрос использования sqlite в веб-проектах с посещаемость в 10 тыс. уников. Поделитесь впечатлениями или просто проф. мнением.
Кто имел опыт использования? Какова производительность? Какие могут возникнуть проблемы?
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37851103
RXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dodger778,

При многопоточной работе (журнал WAL) могут быть неприятные коллизии:
* Любая блокировка ставится на всю таблицу. Например, вставка в таблицу блокирует ее. Другой поток, если тоже захочет писать в таблицу, будет обломан: "Error: database is locked".
* Вот еще странная ситуация с двумя потоками (клиент - sqlite3):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1> BEGIN;
1> SELECT id FROM t;
  10
  20
2> BEGIN;
2> INSERT INTO t (id) VALUES (30);
2> COMMIT;
1> INSERT INTO t (id) VALUES (40);
Error: database is locked
1> ROLLBACK; -- Вынужденно!



Т.ч. лучше использовать только для небольших сайтов, для которых не предвидится одновременная работа нескольких клиентов с записью в базу.

Я могу чего-то не знать. Прошу поправить меня и дополнить. Например, я не знаю особенностей Shared-Cache Mode.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37851169
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dodger778Волнует вопрос использования sqlite в веб-проектах с посещаемость в 10 тыс. уников. Поделитесь впечатлениями или просто проф. мнением.Предлагаю помедетировать над словом embedded.
Если база данных изначально заявлена как embedded, то какая у нее область применения?
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37851170
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда читал про вариант использования SQLite для сайта, вывод статьи: использовать можно, но только если требуется вывод данных (список товаров и т.п.) и не предвидится изменение бд пользователем сайта.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37851172
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Asm64DКогда читал про вариант использования SQLite для сайта, вывод статьи: использовать можно, но только если требуется вывод данных (список товаров и т.п.) и не предвидится изменение бд пользователем сайта.Неверный вывод, а значит дурная статья.
Еще раз повторяю: SQLite это embedded база.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37851175
RXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем не менее, ее не редко применяют на этапе разработки сайта.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37851180
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RXLТем не менее, ее не редко применяют на этапе разработки сайта.На этапе разработки? Да запросто! Легкая, быстрая, удобная.
Вот только между этапом разработки и собственно веб-сайтом есть одна существенная разница...
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37851184
RXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, сайт с БД, обновляемой административно. База маленькая (скажем, 1 МБ). Почему бы не использовать тут sqlite? С большой вероятностью данные базы окажутся в кеше ОС и IO будет минимально.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37851207
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RXLНапример, сайт с БД, обновляемой административно. База маленькая (скажем, 1 МБ). Почему бы не использовать тут sqlite? С большой вероятностью данные базы окажутся в кеше ОС и IO будет минимально.Нуууу.... 1Мб - может быть. Но это с учетом того что на сервере всего один сайт. Ну ладно, убедил, пока база микроскопична и только читается, то можно будет жить.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37852382
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Успешно работает, например, на проекте с сотнями тысяч динамических запросов в сутки, размер БД - единицы гигабайт. Если БД в десятки гигабайт, лучше сразу делать шардинг (например, по месяцам). Много занимался тестами - до 100 Гб базы принципиальных проблем нет, с большими объемами - не тестировал за практической ненадобностью для меня.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37852388
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
RXLdodger778,

При многопоточной работе (журнал WAL) могут быть неприятные коллизии:
* Любая блокировка ставится на всю таблицу. Например, вставка в таблицу блокирует ее. Другой поток, если тоже захочет писать в таблицу, будет обломан: "Error: database is locked".


Это правда, только не вся :) Достаточно указать для соединения timeout, в течении которого другой поток будет ждать своей очереди на запись - таким образом хоть тысячи потоков могут вместе читать и писать в БД.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37852399
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
White OwlПредлагаю помедетировать над словом embedded.
Если база данных изначально заявлена как embedded, то какая у нее область применения?

Считаете ли вы, что "Герань" - несерьезное оружие, ведь помедитировать над этим словом совсем не страшно? :)

И для примера - когда-то довольно давно в комплект тестов эскулайт был добавлен тест для 5Гб базы для проверки найденного мной потенциально возможного повреждения БД. В списке рассылке эскулайт немало пользователей с базами в десятки гигабайт.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37852502
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGWhite OwlПредлагаю помедетировать над словом embedded.
Если база данных изначально заявлена как embedded, то какая у нее область применения?Считаете ли вы, что "Герань" - несерьезное оружие, ведь помедитировать над этим словом совсем не страшно? :)Я считаю что база рассчитанная разработчиками на монопольное применение должна монопольно же и использоваться.

MBGЭто правда, только не вся :) Достаточно указать для соединения timeout, в течении которого другой поток будет ждать своей очереди на запись - таким образом хоть тысячи потоков могут вместе читать и писать в БД.Угу, только ты забыл указать кто именно делает этот таймаут.
Да, при удачном подборе языкового драйвера и/или модуля для http-сервера эти самые драйвера и модули могут изображать из себя многопользовательский сервер который и будет заниматься синхронизацией запросов. Но для этого надо настроить очень много вещей не относящихся напрямую к SQLite.

Еще раз повторяю, специально для гуру у которых все работает: SQLite это встраиваемая база данных. И ее надежность и производительность напрямую зависит от того куда и как ее встроят.
MBG, опубликуй пожалуйста модель и версию своего http сервера. Тип и версию языкового модуля на котором ты делаешь свои веб-сайты и тип и версию SQLite модуля используемого в этом языка. И не забудь про размеры кешей и страниц FS и базы.
Вот эти шесть основных вещей и гарантируют работоспособность (или не работоспособность) базы на веб-сайте. Если их все вместе хорошо настроить - будет конфетка. Насколько велика вероятность этого на рядовых веб-сайтах?
Зато если брать полно-размерную многопользовательскую СУБД, то количество неочевидных настроек сокращается в разы. С той же MSSQL или Postgres можно уже с высокой степенью успеха ожидать что база будет настроена хорошо и языковой модуль доступа уже будет примитивным интерфейсом не требующим настройки вообще.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37856460
dodger778
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, информации достаточно чтобы отказаться от использования sqlite в больших проектах.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37856656
dodger778
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owldodger778Волнует вопрос использования sqlite в веб-проектах с посещаемость в 10 тыс. уников. Поделитесь впечатлениями или просто проф. мнением.Предлагаю помедетировать над словом embedded.
Если база данных изначально заявлена как embedded, то какая у нее область применения?

Ну встраиваемая она. Конечно мне кажется что использование sqlite больше оправдывается в небольших программах, но у sqlite есть плюсы которые хотелось бы использовать и в больших проектах.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37859568
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
White OwlЯ считаю что база рассчитанная разработчиками на монопольное применение должна монопольно же и использоваться.

Если не читать документацию, в мире много страшных и непонятных вещей, несомненно... Подсказка:
Write-Ahead Logging

White Owl только ты забыл указать кто именно делает этот таймаут.

Этот таймаут делает сам SQLite. Документацию читать все же стоит, хотя бы чтоб не обманывать обратившихся за советом:
Set A Busy Timeout

White OwlMBG, опубликуй пожалуйста модель и версию своего http сервера. Тип и версию языкового модуля на котором ты делаешь свои веб-сайты и тип и версию SQLite модуля используемого в этом языка. И не забудь про размеры кешей и страниц FS и базы.

Моя версия эскулайт общедоступна: MBG SQLite repository
Конкретно настройки используемого деб-пакета см. тут: debian/rules

Сами деб-пакеты брать здесь: Debian repository
В этом же репозитории лежит и мой сервер приложений и все прочие необходимые пакеты.

White OwlЗато если брать полно-размерную многопользовательскую СУБД, то количество неочевидных настроек сокращается в разы. С той же MSSQL или Postgres можно уже с высокой степенью успеха ожидать что база будет настроена хорошо и языковой модуль доступа уже будет примитивным интерфейсом не требующим настройки вообще.

Звучит как реклама. А на деле - если вы заглянете в исходники того же постгреса, узнаете много нового - например, при полнотекстовом поиске вместо использования индекса и только индекса еще и сама таблица данных используется, с вытекающими отсюда тормозами; постгрес рассчитан на то, что обрабатываемые запросом данные помещаются в ОЗУ и при попытке обработать данных более, чем есть доступного ОЗУ, постгресу очень "плохеет"; для сложных запросов приходится немало времени тратить на настройку СУБД и проч.

Если вы возьмете на себя труд провести некоторые тесты, результат окажется сильно далек от того, что вы пишите. Некоторые мои тесты опубликованы в блоге и обсуждались в том числе здесь, см.
http://geomapx.blogspot.com/search/label/PostgreSQL и http://geomapx.blogspot.com/search/label/SQLite

При этом я давно как использую в продакшене и PostgreSQL и SQLite и лично мое мнение: на SQLite сложнее разрабатывать, но поддержка проекту практически не требуется, а на постгресе проще разрабатывать, но поддержка проекту нужна и притом постоянно (скажем, попробуйте хотя бы в "облаке" отмасштабировать память вниз на гигабайт и более - посгрес упадет, а уж что с планами запросов приключится после перезапуска...).
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37859719
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGWhite OwlЯ считаю что база рассчитанная разработчиками на монопольное применение должна монопольно же и использоваться.
Если не читать документацию, в мире много страшных и непонятных вещей, несомненно... Подсказка:
Write-Ahead Logging В данном случае, чтение документации на SQLite никак не поможет. А помочь может чтение учебников по ОС. WAL это всего-лишь попытка привязать классическое журналирование к файловой операции. Да, это действительно ускоряет запись и дает большую устойчивость к пропаданию питания. Но и только.
Чтение секции disadvantages по этой самой ссылке тоже показывает много интересного.

MBGWhite Owl только ты забыл указать кто именно делает этот таймаут.
Этот таймаут делает сам SQLite. Документацию читать все же стоит, хотя бы чтоб не обманывать обратившихся за советом:
Set A Busy Timeout Сам? SQLite? Замечательно. Где он находится?
Я не смеюсь, я серьезно спрашиваю: Где находится SQLite? Где находится тот кусок кода который вызывает эту замечательную функцию sqlite3_busy_timeout()? Вот у меня есть файл базы. Я его открыл. Вася его открыл, Петя его открыл, Коля его открыл.... Что произошло? КТО ИЗ НАС ВЫЗВАЛ ФУНКЦИЮ sqlite3_busy_timeout()? В чьем адресном пространстве находится этот код?
И нет, я специально не буду уточнять варианты сборок sqlite3.dll у Васи, Пети и Коли. Или у кого какая сборка этой самой sqlite3.dll. Или у кого-то sqlite3.so... Или оно вообще встроено внутрь супер-программы (или нескольких программ)... Да, совет использовать WAL и Set A Busy Timeout нас конечно же спасет.
И не надо надеяться что наличие sqlite3.dll на веб-сайте гарантирует что у Васи, Коли и Пети будет общий sqlite3.dll. Каждый из них может писать на своем любимом языке: Вася на PHP, Коля на Perl а Петя на VBS. И каждый из языковых модулей может иметь собственный статически прилинкованый sqlite неизвестно какой версии.


MBGМоя версия эскулайт общедоступна: MBG SQLite repository
Конкретно настройки используемого деб-пакета см. тут: debian/rules

Сами деб-пакеты брать здесь: Debian repository
В этом же репозитории лежит и мой сервер приложений и все прочие необходимые пакеты.
.....
Некоторые мои тесты опубликованы в блоге и обсуждались в том числе здесь, см.
http://geomapx.blogspot.com/search/label/PostgreSQL и http://geomapx.blogspot.com/search/label/SQLite Замечательно. Теперь бы вы еще не забывали публиковать все эти ссылки каждый раз когда рекомендуете SQLite для веба. И не забывали делать примечание: "Если хотите получить производительность подобную моей, используйте мою версию а ну тот бинарник которая опубликован на официальном веб-сайте и который ориентирован на все случаи жизни".
Кстати, про http-сервер, и языковой модуль вы таки забыли упомянуть. А я ж не зря про них спрашиваю,


MBGWhite OwlЗато если брать полно-размерную многопользовательскую СУБД, то количество неочевидных настроек сокращается в разы. С той же MSSQL или Postgres можно уже с высокой степенью успеха ожидать что база будет настроена хорошо и языковой модуль доступа уже будет примитивным интерфейсом не требующим настройки вообще.
Звучит как реклама.Нет, всего-лишь как намек на то что у этих баз есть выделенный сервер и на рынке труда есть много людей имеющих опыт по настройке этих баз.
Про их производительность и качество я молчал.

MBGЕсли вы возьмете на себя труд провести некоторые тесты, результат окажется сильно далек от того, что вы пишите.Какие например? Взять стандартный бинарник sqlite3.dll впихнуть его в IIS и замерять как тяжко он будет жить по сравнению с вашим самолично настроенным (и исправленным) модулем под Апачем?


Аксиома 1: До тех пор пока у СУБД нету выделенного сервера эту СУБД сложно использовать в многопользовательской среде.
Аксиома 2: У SQLite нету выделенного сервера.
Аксиома 3: Веб-сервер по определению должен работать со многими клиентами одновременно.
Вывод?
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37860753
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlАксиома 1: До тех пор пока у СУБД нету выделенного сервера эту СУБД сложно использовать в многопользовательской среде.
Аксиома 2: У SQLite нету выделенного сервера.
Аксиома 3: Веб-сервер по определению должен работать со многими клиентами одновременно.
Вывод?Аксиома ортогональна первым двум.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37863490
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
White OwlЯ не смеюсь, я серьезно спрашиваю: Где находится SQLite? Где находится тот кусок кода который вызывает эту замечательную функцию sqlite3_busy_timeout()? Вот у меня есть файл базы. Я его открыл. Вася его открыл, Петя его открыл, Коля его открыл.... Что произошло? КТО ИЗ НАС ВЫЗВАЛ ФУНКЦИЮ sqlite3_busy_timeout()? В чьем адресном пространстве находится этот код?

Какой-то бессвязный поток сознания выдаете. Если вам от этого полегчает, могу рассказать, как в адресное пространство процесса постгреса, к примеру, загрузить библиотеку эскулайт... правда, функционал ее от этого ничуть не изменится.

White OwlИ каждый из языковых модулей может иметь собственный статически прилинкованый sqlite неизвестно какой версии.

Для разработчика "больших проектов" вполне естественно уметь хотя бы версии ПО посмотреть. Научить?

White OwlMBG...
В этом же репозитории лежит и мой сервер приложений и все прочие необходимые пакеты.
.....

Кстати, про http-сервер, и языковой модуль вы таки забыли упомянуть. А я ж не зря про них спрашиваю,

В репозитории один-единственный сервер приложений выложен (AOL Server), к которому в описании пакета сказано, что он работает с языком Tcl. Модуль TclSQLite поставляется в официальных исходниках и сборках SQLite.

White OwlMBGЕсли вы возьмете на себя труд провести некоторые тесты, результат окажется сильно далек от того, что вы пишите.Какие например? Взять стандартный бинарник sqlite3.dll впихнуть его в IIS и замерять как тяжко он будет жить по сравнению с вашим самолично настроенным (и исправленным) модулем под Апачем?

Не увиливайте - где это у меня в блоге вы нашли упоминание IIS или Apache? Описание и скрипты для тестов есть в блоге, так что не стоит так злостно флеймить - откройте и посмотрите.


White OwlАксиома 1: До тех пор пока у СУБД нету выделенного сервера эту СУБД сложно использовать в многопользовательской среде.
Аксиома 2: У SQLite нету выделенного сервера.
Аксиома 3: Веб-сервер по определению должен работать со многими клиентами одновременно.
Вывод?

Вывод простой - вы не понимаете, что такое аксиома, что значит "по определению", и почему написанное вами выше не более чем анекдот для любого математика. Я уж даже не говорю о том, что в официальных исходниках эскулайт есть и выделенный веб-сервер, для компиляции которого достаточно указать опцию -DSQLITE_SERVER=1. Но "чукча не читатель, чукча писатель", верно?..


В заключение - на заданные топикстартетом вопросы я ответил, что эскулайт для больших веб-проектов использовать можно, с производительностью во многих случаях все замечательно, и дал ссылки на блог с тестами, где можно увидеть источники потенциальных проблем. Вы же не привели ни одного факта, но нагородили кучу псевдо-логично звучащей чепухи. Искренне прошу вас уняться и перейти либо к фактам, либо к другому форуму и собеседникам.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37863505
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGКакой-то бессвязный поток сознания выдаете. Если вам от этого полегчает, могу рассказать, как в адресное пространство процесса постгреса, к примеру, загрузить библиотеку эскулайт... правда, функционал ее от этого ничуть не изменится.Мой бессвязный поток сознания требует только одного: чтобы http сервер администрировал человек хорошо знающий SQLite.

Вы его хорошо знаете - у вас все работает. А у тех кто будет пытаться использовать SQLite на чьих-то http-серверах будут все те проблемы которые я перечислил в моей псевдо-логично звучащей чепухе.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37863518
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
White OwlМой бессвязный поток сознания требует только одного: чтобы http сервер администрировал человек хорошо знающий SQLite.

Вы его хорошо знаете - у вас все работает. А у тех кто будет пытаться использовать SQLite на чьих-то http-серверах будут все те проблемы которые я перечислил в моей псевдо-логично звучащей чепухе.

Вовсе не обязательно. Для 10-100 тысяч уников вполне сгодится и CGI вариант с дефолтовой сборкой эскулайт:
http://book.mobigroup.ru/wiki?name=www+dynamic+content

Как пример - у меня есть поисковик, написанный как набор утилит (при этом утилиты поиска написаны на Си - для быстрого запуска, а утилиты индексации на тикле - при пакетной обработке время запуска не имеет значения):
http://sqlite.mobigroup.ru/wiki?name=poisk
и хорошо себя показавший на корпоративном портале с сотнями одновременных пользователей.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37863734
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGВовсе не обязательно. Для 10-100 тысяч уников вполне сгодится и CGI вариант с дефолтовой сборкой эскулайт:
http://book.mobigroup.ru/wiki?name=www+dynamic+content То есть прочтение этой статьи поможет мне сделать большой веб-проект на IIS и PHP?

MBGКак пример - у меня есть поисковик, написанный как набор утилитКем написанный? Вами? Или командой разноязыких консультантов?
Сервер настроен кем? Вами или приходящим мальчиком? Ах у вас еще и какой-то, никому не известный, aolserver? Ну значит точно вы его сами настраивали.
Иех, как я вам завидую!

А мы живем в зоопарке из двух дюжин физических http серверов разного типа, плюс два десятка СУБД, шести разных типов. А веб-сайты у нас рисуют около сотни человек из разных, не пересекающихся друг с другом групп. И вот со всей этой фигней мы пытаемся летать.
...
Рейтинг: 0 / 0
использование SQLite в болших веб-проектах
    #37887114
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
White OwlMBGКак пример - у меня есть поисковик, написанный как набор утилитКем написанный? Вами? Или командой разноязыких консультантов?

Поддержка юникода решает.

White OwlСервер настроен кем? Вами или приходящим мальчиком? Ах у вас еще и какой-то, никому не известный, aolserver?

"Приходящий мальчик" пусть вам пол подметет, а для администрирования лучше бы специалиста нанять :D Означенный "никому не известный" сервер приложений используется для крупнейших порталов в мире :)

White OwlА мы живем в зоопарке из двух дюжин физических http серверов разного типа, плюс два десятка СУБД, шести разных типов. А веб-сайты у нас рисуют около сотни человек из разных, не пересекающихся друг с другом групп. И вот со всей этой фигней мы пытаемся летать.

Вполне представляю и сочувствую. Но к теме топика это отношения не имеет - к счастью :)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / использование SQLite в болших веб-проектах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]