Я видел некоторые приложения, которые в основном являются прикладными программами, которые работают локально по отношению к системе (поэтому они не имеют большой связи по сети). Эти приложения, похоже, зависят от серверов баз данных для хранения своих данных.
Примером приложения является Amarok (популярный музыкальный проигрыватель в Linux). Я не знаю, делают ли они это до сих пор, но я помню, что было время, когда установка Amarok означала, что вы должны были установить сервер MySQL и постоянно запускать его в фоновом режиме.
В чем преимущество использования сервера для локального хранилища по сравнению с использованием меньшего встроенного SQL-решения, такого как sqlite? Я говорю о прикладном программном обеспечении вообще, не обязательно amarok (это был только пример). Есть ли ситуации, когда использование сервера базы данных имеет смысл по сравнению со встроенной базой данных?
источник
Ответы:
SQLite предлагает довольно хорошее краткое изложение того, когда использовать его или нет против альтернатив:
https://www.sqlite.org/whentouse.html
Эта итоговая строка очень хорошо отражает сценарий использования SQLite:
Статья подробно раскрывается по этому вопросу. Он также имеет раздел под названием «Ситуации, когда СУБД клиент / сервер может работать лучше». В двух словах, это:
источник
Даже для одной системы с одним пользователем «реальный» сервер базы данных имеет смысл:
Основным недостатком является необходимость установки и обслуживания программного обеспечения сервера базы данных, что немного сложно для нетехнических пользователей (и даже многих технических пользователей). Операционные системы, такие как Linux, делают это проще: у меня в системе Linux работают PostgreSQL и MySQL. Я установил приложения, которые подключились к ним практически без взаимодействия с моей стороны.
источник
Я думаю, что это связано с инерцией.
Amarok основан на XMMS, выпущенной в 1997 году. Чтобы иметь хорошие возможности для работы с базами данных, нужно было использовать сервер, потому что он был намного мощнее, чем решения на основе файлов, которые ни в коем случае не имели хороших возможностей для работы с базами данных.
Предстоящая и набирающая популярность хорошая локальная встроенная база данных, такая как SQLlite, появилась сравнительно недавно.
источник
Наиболее важной отличительной чертой является параллелизм .
Если у вас есть только одно приложение, которое выполняется в одном экземпляре для пользователя, встроенное решение (будь то sqlite или хранилище некоторых объектов) обычно в порядке.
Однако если у вас есть несколько экземпляров, которым необходимо одновременно управлять базой данных, вам необходим сервер для ее синхронизации. SQLite допускает только одну запись за раз во всей базе данных, как и большинство других встроенных решений. И если у вас даже есть несколько приложений, вам, вероятно, понадобится более детальная спецификация ограничений, которую встроенные решения обычно не допускают.
источник
Во многих других ответах говорится о параллельности как о преимуществе, но также, поскольку БД работает как сервер, база данных может выполнять задачи без необходимости запуска приложения. Это может быть обслуживание, резервное копирование, синхронизация с другим сервером или любая запланированная задача.
Если вы чувствуете, что ваше приложение может превратиться в приложение клиент / сервер, вы можете начать с использования СУБД с самого начала, а не портировать его позже.
Я понятия не имею, использует ли данный пример преимущества этого или нет.
источник
Если вы не используете встроенную систему с низким объемом памяти и процессором, я не думаю, что запуск сервера в фоновом режиме приносит вам какой-либо вред.
Локально работает сервер базы данных. База данных предназначена для доступа и манипулирования данными. Доступ к сети является плюсом, который может или не может быть необходим. Есть некоторые инженерные и научные инструменты, которые делают это.
Допустим, вы используете данные в локальном приложении. Почему бы вам не использовать базу данных? в отличие от чего?
источник
Это зависит от вашей абстракции данных и общего пространства приложения, требований к управлению доступом, инвестиций, которые вы планируете поддерживать, срочности требуемого прототипа, где вы находитесь на кривой обучения и т. Д.
Если вы хотите обеспечить тесно интегрированную базу данных с приложением, которое не требует доступа из других приложений, создайте островки встроенной базы данных. В качестве примера можно привести реализацию Mozilla Firefox Web Storage с SQLite.
Если вам требуется еще большая эффективность при ограниченных данных, предпочтительнее использовать выбор базы данных в памяти.
С другой стороны, если у вас много приложений, выполняющих несколько запросов к одним и тем же данным, и для оптимизации производительности требуется лучшая структуризация хранилища данных, требуется централизованная СУБД. Я абсолютно предпочту его для научных исследований, когда он требует огромного количества данных и когда время отклика запроса сильно повлияет на общее восприятие пользователя.
Для случая Amarok, я полагаю, в то время это был выбор СУБД с открытым исходным кодом, прежде чем они выбрали путь встроенных баз данных.
Если у вас есть конкретное определение системы, вам будет легче взвесить все за и против.
В / р, Умут
источник