Когда пора менять серверную часть базы данных?

StackOverflow https://stackoverflow.com/questions/74261

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Моя первоначальная идея состоит в том, что порядок этого будет выглядеть примерно так (но не обязательно, поэтому я и задаю вопрос).

  1. Плоские файлы
  2. БДБ
  3. SQLite
  4. MySQL
  5. PostgreSQL
  6. SQL-сервер
  7. Оракул
Это было полезно?

Решение

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

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

Другие советы

Если вы думаете, что вам когда-нибудь понадобится один из тяжеловесов (SqlServer, Oracle), вам следует начать с одного из них.Миграция данных чрезвычайно сложна.В долгосрочной перспективе вам будет стоить дешевле просто начать с вершины и оставаться там.

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

Но кто захочет заниматься всем этим переписыванием?Если приложению будет полезен доступ к соединениям, хранимым процедурам, триггерам, проверке внешнего ключа и тому подобному — просто используйте базу данных SQL независимо от размера набора данных.

Который из должно больше зависеть от существующих установок клиента и имеющихся навыков администратора базы данных, чем от объема данных, которые вы храните.

Другими словами, размер вашей базы данных — далеко не единственный и, возможно, не самый важный фактор.

На этот вопрос нет однозначного ответа, но ПОЧТИ всегда использование плоских файлов не является хорошей идеей.Вам придется их анализировать (я полагаю), и они плохо масштабируются.Хорошей идеей будет начать с подходящей базы данных, такой как Oracle или SQL Server (или MySQL, Postgres, если вы ищете бесплатные варианты).За очень небольшие накладные расходы вы сэкономите массу усилий и избавите себя от головной боли в дальнейшем.Они также позволяют вам структурировать ваши данные простым способом, давая вам возможность думать о том, ЧТО вы будете делать с данными, а не о том, КАК вы будете их вводить и выводить.

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

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

SQL Server долгое время имел ограничение на размер базы данных в 4 ГБ (см. SQL Server 2000), но, несмотря на это ограничение, он остается очень стабильной платформой для малых и средних приложений, для которых старые данные удаляются.

Теперь, поработав с Oracle и SQL Server 05/08, все, что я могу вам сказать, это то, что если вам нужны лучшие качества по стабильности, масштабируемости и гибкости, то эти два — ваш лучший выбор.Для корпоративных приложений я настоятельно рекомендую их (просто потому, что именно их мы используем там, где я сейчас работаю).

Другие вещи, которые следует учитывать:

  • Языковая интеграция (хранилище сеансов ASP.NET, управление ролями и т. д.)
  • Типы запросов (Выбрать, Обновить, Удалить) [Хотя это скорее проблема проектирования схемы, а не проблема СУБД)
  • Требования к хранению данных

Использование базы данных вашим приложением является наиболее важным.Какие запросы используются чаще всего (SELECT, INSERT или UPDATE)?

Скажем, если вы используете SQLite, это приспособление для небольших приложений, но для «веб-приложений» вы можете использовать более крупные приложения, такие как MySQL или SQL Server.

Также имеет значение то, как вы пишете сценарии и платформы ваших веб-приложений.Если вы разрабатываете на платформе Microsoft, то SQL Server — лучшая альтернатива.

Обычно я придерживаюсь того, что общепринято в той структуре, которую я использую.Итак, если я использую .NET => SQL Server, Python (через Django или Pylons) => MySQL или SQLite.

Хотя я почти никогда не использую плоские файлы.

Выбор решения СУРБД – это нечто большее, чем просто «внутренняя мощность».Например, возможность контролировать обязательства, чтобы вы могли откатить неудачную транзакцию.причина.

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

Такое развитие событий кажется болезненным.Если вы собираетесь куда-либо включать продукты MS (особенно платный SQL Server), вы также можете использовать весь стек, поскольку вам придется заплатить только за последний из них:

SQL Server Compact -> SQL Server Express -> SQL Server Enterprise (clustered).  

Если вы изначально ориентируете свое приложение на SQL Server Compact, весь ваш код SQL гарантированно масштабируется до следующей версии без изменений.Если вы станете больше, чем SQL Server Enterprise, поздравляем.Это то, что они называют хороший проблема иметь.

Также:вернитесь и проверьте подкасты SO.Я думаю, они говорили об этом вкратце.

Этот вопрос действительно зависит от вашей ситуации.

Если у вас есть контроль над сервером, на котором вы развертываете, и вы можете установить любые необходимые вам службы, то время, потраченное на установку сервера MySql или MSSQL Express и код для существующей структуры базы данных ПО сравнению с кодированием для плоской файловой структуры, не стоит затраченных усилий. рассмотрения.

А что насчет ФайрБёрда?Где бы это вписалось в этот список?

И давайте не будем забывать о требованиях, которые также должен предъявлять «заказчик» вашего решения.Если вы пишете коммерческое приложение для небольшой компании, Oracle может оказаться не лучшим выбором...но если вы пишете индивидуальное решение для крупного предприятия, которое должно обмениваться данными между несколькими кампусами и имеет большой ИТ-отдел, тогда решение Oracle против Sql Server будет сводиться к тому, что клиент, скорее всего, уже развернул.

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

Если у вас есть возможность, SQL Server — хороший выбор с самого начала, главным образом потому, что у вас есть доступ к надежным процедурам и функциям, а средства резервного копирования базы данных абсолютно надежны.Заключение как можно большего количества вашей логики внутри самой базы данных (а не на любом языке, который вы используете) помогает повысить безопасность и производительность - действительно, есть хороший аргумент в пользу того, чтобы всегда использовать процедуры для логики вставки/обновления, поскольку они заставляют вас неуязвим для инъекционных атак.

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

Я думаю, что ваш список субъективен, но я сыграю в вашу игру.

Плоские файлы

БДБ

SQLite

MySQL

PostgreSQL

SQL-сервер

Оракул

Терадата

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top