SQLite использует его для веб-сайтов, но не для клиент-серверных приложений? - PullRequest
1 голос
/ 22 ноября 2010

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

Говорят:

Ситуации, когда SQLite работает хорошо

Веб-сайты

SQLiteобычно отлично работает в качестве механизма базы данных для веб-сайтов с низким и средним трафиком ...

...

Ситуации, когда другая СУБД может работать лучше

Клиентские / серверные приложения ...

Если у вас много клиентских программ, обращающихся к общей базе данных по сети ...

Isn 't веб-сайт также клиент-серверное приложение?

Я имею в виду, я не понимаю, веб-сайт - это именно та ситуация, когда у меня много клиентских программ (пользователейс их веб-браузерами) одновременный доступ к общей базе данных через одно серверное приложение.

Просто дляПроще говоря: возможно ли, в конце концов, использовать этот SQLite для сайта электронной коммерции, онлайн-каталога или сайта CMS с около 1000 товаров / страниц?

Ответы [ 4 ]

4 голосов
/ 22 ноября 2010

Веб-браузеры пользователей не имеют прямого доступа к базе данных; веб-приложение делает. И обычно цикл запроса / ответа для каждой страницы, которую просматривает пользователь, будет очень быстрым, обычно длящийся доли секунды.

IIRC, транзакция в SQLite блокирует весь файл базы данных, а это означает, что если запрос веб-приложения требует блокирующей транзакции, весь трафик будет эффективно сериализован. Это нормально для веб-сайта с низким и средним трафиком, поскольку многие запросы в секунду все еще могут обрабатываться.

Однако в приложении базы данных клиент-сервер нескольким пользователям может потребоваться поддерживать соединения открытыми в течение более длительных периодов времени, а также может потребоваться выполнение транзакций. Это гораздо меньше проблем для больших систем RDBMS, поскольку блокировка может выполняться более детально.

1 голос
/ 13 августа 2017

SQLite может разрешить многократное чтение клиента, но только запись одного клиента.См .: https://www.sqlite.org/faq.html

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

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

В случае немного используемого веб-сайта электронной коммерции, скажем, нескольких покупателей одновременно, это может поддерживаться SQLite, илиMySQL.Где-то есть черта, где производительность для высококонкурентной базы данных лучше, чем для SQLite.

Обратите внимание, что количество продуктов / страниц не является отличным способом определить требования для MySQL по сравнению с SQLite, скорее это количество одновременных пользователей, и в какой момент их одновременное поведение замедляется из-за ожиданиязамки для очистки.

1 голос
/ 22 ноября 2010

Веб-сайт не обязательно является клиент-серверным приложением в контексте использования.

Я думаю, что когда они говорят «веб-сайт», они имеют в виду, что веб-приложение будет напрямую управлять базой данных. Таким образом, файл базы данных будет находиться на веб-сайте и не будет доступен другим способом. (Одна точка доступа, проще говоря)

Напротив, клиент-серверное приложение может иметь веб-сайт, обращающийся к хранилищу данных , а также другой веб-сайт, клиент SOAP или даже интеллектуальный клиент. В этом контексте у вас есть несколько клиентов, обращающихся к одной базе данных (серверу). Здесь веб-сайт станет (еще одним) клиентом.

<ч />

Другим аспектом, который следует учитывать при ограничении двух, является то, каков процент записей по сравнению с чтением. Я думаю, что SQLite будет работать счастливо, когда будет мало писать по сравнению с количеством операций чтения. Я понимаю, что SQLite не очень хорошо работает в сценариях с множественной записью. Он предназначен для одного (горстки?) Процесса, чтобы манипулировать им.

0 голосов
/ 22 ноября 2010

Я в основном использую SQLite только для встроенных приложений.(iOS, Android).Для более крупных и сложных веб-сайтов (таких как ваше описание) я бы использовал что-то вроде mySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...