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

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

Выбор базы данных для вашего проекта подобен выбору любой другой технологии. Он зависит от вашего сценария использования.

Размер не является проблемой, проблемой является сложность. Базы данных SQLite3 могут достигать 281 терабайта. Ограничения на количество таблиц, столбцов и строк также довольно приличные.

Если логика вашего приложения требует SQL-операций, таких как:

  1. RIGHT OUTER JOIN, FULL OUTER JOIN
  2. ALTER TABLE, ADD CONSTRAINT и т.д.
  3. DELETE, INSERT или UPDATE на VIEW
  4. .
  5. Пользовательские разрешения на чтение/запись

Тогда SQLite3 должен не быть вашим выбором базы данных, поскольку эти возможности SQL не реализованы в SQLite3.

Выбор системы управления реляционными базами данных (RDBMS) зависит от вашего случая использования. Различные доступные варианты имеют свои плюсы и минусы, и поэтому для разных приложений одни подходят больше, чем другие.

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

SQLite: Основан на файлах. Вы можете фактически видеть файл в каталоге проекта, поэтому все CRUD (Create, Retrieve, Update, Delete) выполняются непосредственно в этом файле. Кроме того, весь код, лежащий в основе РСУБД, имеет довольно маленький размер. Все это делает ее хорошей для приложений, которые не требуют интенсивного использования баз данных или, возможно, требуют автономного хранения данных, например, IoT, небольшие веб-сайты и т.д. Когда вы пытаетесь использовать ее для больших проектов, требующих интенсивного использования баз данных, например, интернет-магазинов, вы сталкиваетесь с множеством проблем, поскольку эта СУБД не так хорошо развита, как MySQL или PostgreSQL. Основной проблемой является отсутствие параллелизма, т.е. только одно устройство может одновременно записывать данные в базу данных, поскольку операции сериализованы.

MySQL: Является одним из наиболее часто используемых и моим личным фаворитом (очень легко настраивается и используется с Django). Он основан на модели базы данных клиент/сервер, а не на файле, как SQLite, и очень масштабируем, т.е. способен на гораздо большее, чем SQLite, и вы можете использовать его для множества различных приложений, требующих интенсивного использования РСУБД. Она обладает лучшей безопасностью, позволяет выполнять параллельные операции и превосходит PostgreSQL по производительности, когда вам нужно выполнять много операций чтения.

PostgreSQL: Также является очень сильным вариантом и способен на большинство вещей, которые может делать MySQL, но обрабатывает клиентов по-другому и имеет преимущество перед MySQL в SELECTs и INSERTs. Однако MySQL все еще намного более широко используется, чем PostgreSQL.

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

Это не вопрос того, насколько велика БД. БД SQLite может быть очень большой, сотни гигабайт.

Вопрос заключается в том, сколько пользователей одновременно используют приложение (вы упомянули django). Поскольку SQLite поддерживает только одного писателя за раз, остальные ставятся в очередь. К счастью, у вас может быть много одновременных читателей.

Так что если у вас много одновременного доступа (которые не помечены явно как доступные только для чтения), то SQLite больше не является хорошим выбором. Вы предпочтете что-то вроде PostgreSQL.

BTW, все лучше объясняется в документации ;)

Вернуться на верх