Как я могу рассчитать затраты на хранение дизайна базы данных? - PullRequest
16 голосов
/ 24 февраля 2012

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

Кроме того, СУБД используют совершенно иной подход к хранению данных, чем базы данных объектов или ключей.

Какие есть хорошие ресурсы для определения стоимости (или необходимого места) хранилища базы данных?

Примечание , мой вопрос не имеет ничего общего с выбором базы данных, а скорее зная, как правильно использовать дизайн каждой базы данных для наиболее эффективно . Базы данных, такие как PostgreSQL, MySQL, CouchDB, имеют разные целевые варианты использования и несколько способов решения одной и той же проблемы. Таким образом, знание стоимости хранения каждого решения поможет добавить к выбору наилучшее решение для схемы.

Ответы [ 2 ]

7 голосов
/ 04 марта 2012

СУБД использует совершенно иной подход к хранению данных, чем базы данных объектов или ключей.

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

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

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

Все это

  • добавление и удаление индексов с течением времени,
  • добавление и удаление ограничений во времени,
  • добавление и удаление столбцов во времени,
  • добавление и удаление таблиц во времени,

делает любую оценку использования дискакак пустая трата времени.Любой из них может радикально изменить дисковое пространство, необходимое для базы данных.

Вы можете достаточно точно рассчитать пространство, необходимое для строки и страницы.(Попробуйте Google для «Макет строки YourDBMSname» и «Макет страницы YourDBMSname».) Но когда вы пытаетесь умножить на требуемое количество строк, вы должны оценить количество строк.Это ставит вас в тупик того, что Стив Макконнелл называет « конусом неопределенности ».

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

Последняя компания из Fortune 100, в которой я работалимел оперативную базу данных, которая была в производстве с 1970-х годов.Сотни приложений, написанных на более чем 25 языках программирования в течение 40 лет, поражают эту вещь каждый день.(Я думаю, что он изначально был построен на IMS IBM; сегодня он работает на Oracle.)

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

Итак, как снизить риск угадывания в среде проектирования и развертывания базы данных?Возьмите урок 1972 года.

Постройте прототип и измерьте его.

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

. , , Проект за проектом разрабатывает набор алгоритмов, а затем погружается в создание поставляемого клиентом программного обеспечения в соответствии с графиком, который требует поставки первого созданного. , , .

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

Фред Брукс-младший, в Мифический человеко-месяц , стр. 116.

5 голосов
/ 04 марта 2012

Вот статья AskTom, которую я нашел полезной.Это специфично для Oracle.

http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:266215435203

...