LINUX.ORG.RU
ФорумAdmin

Sqlite работает на множественную запись? Кто-нибудь поднимал веб-приложения на sqlite?

 , , , ,


1

2

Тут обсуждали, можно использовать для сайтов/форумов/вордпресса не обычную mysql, а sqlite. Но, как я понимаю, там есть проблемы с параллельной записью. Мало того, не совсем понятно, как читающие клиенты будут работать с уже открытой, но измененной в процессе работы другим клиентом базой (как они узнают об этих изменениях?).

Кто-нибудь пробовал на продакшене? И как оно, не тормозит? И что происходит, когда два клиента пытаются одновременно запись произвести?

Ответ на: комментарий от bryak

На оффсайте указано, что там есть блокировки и все дела. Знакомый уверяет, что у него вордпресс нормально работает на ней.

mojomojonk
() автор топика
Ответ на: комментарий от mojomojonk

Всё работало, просто был Арч, по его Вики настроил для sqlite, но там только для одного пользователя было. Потом поставил на МикроСервер Дженту и МашкуДБ.

Deleted
()
Последнее исправление: Lifun (всего исправлений: 1)

А что смущает? Думаешь разрабы скулайта не слышали про блокировки? Там даже есть как минимум два варианта уровня изоляций (man pragma read_uncommited).

redixin ★★★★
()

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

bvn13 ★★★★★
()
Ответ на: комментарий от mojomojonk

Вебсайты с низкой посещаемостью могут работать, если доступ на запись имеет один админ.

svr4
()

sqlite умеет в многопоточную запись. База по сути делится на две части в которую пишут и из которой читают. Потом это всё сливается в ту откуда читают. Параметр WAL журнала позволяет мультизапись. И не слушай людей которые говорят что она медленная, они просто не вникали, и пользовались ей как мускулем.

itn ★★★
()
Последнее исправление: itn (всего исправлений: 1)

был сайт корпоративный небольшой rails+sqlite, полет был нормальный а потом я уволилась

gssomi ★★
()
Ответ на: комментарий от mojomojonk

Эта бд встраиваемая, помни это. И не слушай людей которые пытаются натянуть сову на глобус.

itn ★★★
()
Ответ на: комментарий от gssomi

был сайт корпоративный небольшой rails+sqlite, полет был нормальный а потом я уволилась

Часть, где всё перестало работать пропущена? :)

mojomojonk
() автор топика

У меня есть сайтик с sqlite. Но там низкая посещаемость и вообще очень мало записи в базу, в основном чтение.

pawnhearts ★★★★★
()
Ответ на: комментарий от mojomojonk

Почему оно должно перестать работать? sqlite, кстати, очень широко используется. В тех же браузерах всякие history, кукисы и закладки в ней хранятся.

pawnhearts ★★★★★
()
Ответ на: комментарий от mojomojonk

нет, это не известно. Я уволилась после того как запустили в продакшене, дальнейшая история мне не известна.

gssomi ★★
()
Ответ на: комментарий от gssomi

Я уволилась после того как запустили в продакшене

Ловко, хитро XDD

pawnhearts ★★★★★
()

https://www.sqlite.org/whentouse.html

SQLite works great as the database engine for most low to medium traffic websites (which is to say, most websites). The amount of web traffic that SQLite can handle depends on how heavily the website uses its database. Generally speaking, any site that gets fewer than 100K hits/day should work fine with SQLite. The 100K hits/day figure is a conservative estimate, not a hard upper bound. SQLite has been demonstrated to work with 10 times that amount of traffic.

The SQLite website (https://www.sqlite.org/) uses SQLite itself, of course, and as of this writing (2015) it handles about 400K to 500K HTTP requests per day, about 15-20% of which are dynamic pages touching the database. Each dynamic page does roughly 200 SQL statements. This setup runs on a single VM that shares a physical server with 23 others and yet still keeps the load average below 0.1 most of the time.

pawnhearts ★★★★★
()
Ответ на: комментарий от mojomojonk

Почему оно должно сломаться то? В плане надежности там вроде всё ok.

Проблема может быть в особенностях sqlite, конечно - явного foreignkey там нет, надо следить самому за целостностью ссылок/удалением связанных объектов. Слабая типизация - в колонку integer можно записать текст и т.п.

pawnhearts ★★★★★
()
Ответ на: комментарий от mojomojonk

ну выбор бд был не мой, так если берешь в sqlite то не моя вина

gssomi ★★
()
Ответ на: комментарий от pawnhearts

Проблема может быть в особенностях sqlite, конечно - явного foreignkey там нет, надо следить самому за целостностью ссылок/удалением связанных объектов. Слабая типизация - в колонку integer можно записать текст и т.п.

В общем ясно: кроме варианта «я у мамы нищеброд» и встраиваемого говна - нафиг не надо.

mojomojonk
() автор топика
15 октября 2016 г.

SQLite не умеет MVCC, только database-level lock'и.

Отсюда проблема — больше одного клиента не может писать одновременно. Т.е. если K1 пишет и K2 в тот же интервал времени пытается начать писать — fail.

Можно поиграться с настройками lock'ов (по крайней мере в C-клиенте), чтобы K2 в таком случае не отваливался сразу, а пытался подождать какое-то время.

Но всё это всё равно упрётся в какое-то максимальное количество возможных обращений на запись в период времени. В смысле, что если обращения на запись сыпятся чаще, чем оно успевает их обрабатывать, то установи ты time limit на получение lock'а хоть в полдня, кто-то будет отваливаться.

Хотя если количество возможных обращений на запись в период времени небольшое, то, поигравшись с настройками lock'ов, можно добиться вменяемых результатов.

sasha1024
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.