Я создаю это приложение для электронной коммерции с помощью django, и я подумал, достаточно ли хороша база данных по умолчанию (sqlite)? В моем приложении django будет около 200 различных продуктов, а для платежей я буду использовать Stripe API. Я не ожидаю слишком большого трафика, когда приложение будет запущено, поскольку это веб-сайт только для страны, в которой я живу, с 6 миллионами жителей. Так могу ли я договориться с базой данных sqlite?

-1
Yakup Ünsal 4 Фев 2022 в 13:58

2 ответа

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

Преимущества SQLite

Небольшие размеры. Как следует из названия, библиотека SQLite очень легкая. Хотя используемое пространство зависит от системы, в которой оно установлено, оно может занимать менее 600 КБ. Кроме того, он полностью автономен, что означает отсутствие каких-либо внешних зависимостей, которые необходимо установить в вашей системе для работы SQLite.

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

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

Недостатки SQLite

Ограниченный параллелизм. Хотя несколько процессов могут одновременно обращаться к базе данных SQLite и запрашивать ее, только один процесс может вносить изменения в базу данных в любой момент времени. Это означает, что SQLite поддерживает параллелизм в большей степени, чем большинство других встроенных систем управления базами данных, но не так сильно, как клиент-серверные СУБД, такие как MySQL или PostgreSQL.

Отсутствие управления пользователями. Системы баз данных часто поставляются с поддержкой пользователей или управляемых подключений с предопределенными правами доступа к базе данных и таблицам. Поскольку SQLite читает и записывает непосредственно в обычный файл на диске, единственными применимыми разрешениями на доступ являются типичные разрешения на доступ базовой операционной системы. Это делает SQLite плохим выбором для приложений, которым требуется несколько пользователей со специальными правами доступа.

Безопасность. Механизм базы данных, использующий сервер, в некоторых случаях может обеспечить лучшую защиту от ошибок в клиентском приложении, чем безсерверная база данных, такая как SQLite. Например, случайные указатели в клиенте не могут повредить память на сервере. Кроме того, поскольку сервер представляет собой единый постоянный процесс, клиент-серверная база данных может управлять доступом к данным с большей точностью, чем бессерверная база данных, что обеспечивает более точную блокировку и лучший параллелизм.

1
sudden_appearance 4 Фев 2022 в 14:07
При необходимости прочитайте эти недостатки несколько раз. Затем установите сервер PostgreSQL на свой компьютер разработчика! (Если производство не будет чем-то действительно крошечным, см. ответ NixonSparrow).
 – 
nigel222
4 Фев 2022 в 14:50
Вы можете использовать Docker для запуска базы данных pg. А настройка займет только создание переменных env. Докер это вещь)
 – 
sudden_appearance
4 Фев 2022 в 14:52
Я не имел в виду, как его установить/запустить. Просто используйте его.
 – 
nigel222
4 Фев 2022 в 14:59
Да, я имею в виду, что Docker упрощает создание хорошей базы данных
 – 
sudden_appearance
4 Фев 2022 в 15:02

Это зависит от того, где вы собираетесь его разместить. Некоторые серверы не принимают SQLite3 в качестве базы данных и требуют чего-то более сложного, например PostgreSQL (например, Heroku). Но если вы размещаете сами (например, Rapsberry Pi), то все будет хорошо и просто, если у сайта будет небольшой трафик.

0
NixonSparrow 4 Фев 2022 в 14:05
Я никогда даже не думал запускать Django на RPi. Но да, веская причина для SQLite.
 – 
nigel222
4 Фев 2022 в 14:43