Рейтинг:0

Нужна помощь в выборе лучшего механизма хранения MariaDB для нашего варианта использования и ограничений серверного оборудования.

флаг cn

Я работаю в небольшой компании, и нам нужно хранилище данных.

Наша производственная база данных содержит около 50 ГБ данных (в настоящее время она увеличивается примерно на 10 ГБ в год), наш сервер немного превышает свои возможности, и мы думаем, что можем перенести некоторые исторические данные в хранилище данных (примерно половина из этих 50 ГБ может быть перемещена). ), чтобы он снова мог работать без сбоев.

Конечно, в хранилище данных будут храниться все данные ETL, а не только исторические данные. Таким образом, мы также можем получать эти дорогостоящие отчеты и данные информационных панелей из хранилища данных, а не с производственного сервера.

Я намерен перенести данные в DW и хранить их по схеме «снежинка», а затем я планирую создать несколько витрин данных для отчетов и бизнес-аналитики. Эти витрины данных будут созданы с использованием звездообразных схем, чтобы сделать запрос проще (быстрее?).

Мы склонны использовать для этого MariaDB, что подводит меня к моему основному вопросу: какой механизм хранения лучше всего подходит для нашего случая, innoDB или ColumnStore.И насколько это решение повлияет на размеры сервера, на котором он будет работать.

Из того, что я прочитал до сих пор, я предполагаю, что ColumnStore может быть быстрее и лучше подходить для нашего варианта использования, но для этого также потребуется лучшее оборудование. Сейчас мы не можем позволить себе больше, чем один сервер с 4 ядрами процессора и 32 ГБ оперативной памяти (на наш бизнес сильно повлияла глобальная пандемия. Мы встаем на ноги, но еще не все).

Итак, учитывая приведенные выше характеристики сервера и вариант использования, вы все равно рекомендуете использовать ColumnStore вместо innoDB? Мы даже открыты для решений, отличных от MariaDB.

djdomi avatar
флаг za
Отвечает ли это на ваш вопрос? [Можете ли вы помочь мне с планированием емкости?](https://serverfault.com/questions/384686/can-you-help-me-with-my-capacity-planning)
флаг cn
Я думаю, что мой вопрос более конкретен, чем просто определение размера сервера. У меня ограниченный бюджет, и я хотел бы знать, какое решение для базы данных будет работать с ним лучше.
Рейтинг:2
флаг ua

Движок: InnoDB. Период. (Конечно, 1% вариантов использования лучше с чем-то другим, но ваш, похоже, не указывает на необходимость другого движка.)

Снежинка: Ужасно, особенно если вам нужно искать в «диапазоне». Предоставьте схему (желательно через ПОКАЗАТЬ СОЗДАТЬ ТАБЛИЦУ); Я буду более конкретным. (Тогда я могу согласиться, что Снежинка хороша, но я сомневаюсь в этом.)

Звездная схема -- Хорошо. Нормализация общих строк: хорошо. Нормализация «непрерывных» значений (даты, целые числа, числа с плавающей запятой): плохо. Но цель состоит в том, чтобы сэкономить место на диске и, следовательно, ускорить некоторые запросы.

10 ГБ в год — в среднем это звучит как «несколько» строк в секунду. Тяжелый, но не сильно тяжелый. То есть обработка ETL не звучит так, как будто вам нужна помощь.

Хранилище данных -- http://mysql.rjweb.org/doc.php/хранилище данных

Очистить старые данные. Это одно из немногих применений РАЗДЕЛЕНИЕ. http://mysql.rjweb.org/doc.php/partitionmaint

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

Дорогостоящие отчеты --> Сводные таблицы http://mysql.rjweb.org/doc.php/summarytables Сводные таблицы намного меньше таблицы фактов; допустима даже денормализация.

Хранилище столбцов. Одним из больших плюсов является значительное сжатие, которое он обеспечивает. Но я не считаю ваши 50 ГБ очень большими. Еще одним преимуществом CS является автоматическая «индексация» каждого столбца. Однако для двухуровневой эффективности поиска можно использовать только один столбец.

4 ядра — достаточно для InnoDB; больше ядер было бы полезно для CS.

32 ГБ ОЗУ — Всего 50 ГБ данных и 10 ГБ в год — Если все, что вы делаете, это смотрите на данные за последний год, 32 ГБ более чем достаточно. Если вы часто сканируете все 50 ГБ, то будет много операций ввода-вывода. Если вы реализуете сводные таблицы, то 32 ГБ будет излишним для большинства действий. (Сводные таблицы могут быть менее 10 ГБ и возвращаться к началу данных, поэтому их можно кэшировать.)

32 ГБ + CS — ваши 50 ГБ станут примерно 5 ГБ. (Но я не знаю, будет ли 32 излишним.)

Жесткий диск против.SSD — SSD заметно быстрее.

Практический результат (и бюджет). Упомянутые выше методы могут обеспечить бесперебойную работу InnoDB на 32 ГБ в течение нескольких лет.

флаг cn
Спасибо за ваши комментарии. Теперь я лучше понимаю, что мне нужно делать. Что бы вы предложили вместо этого, чтобы не использовать схему снежинки? Моя цель состоит в том, чтобы ХД содержала все из наших производственных баз данных, а затем из него я извлекал бы некоторые таблицы фактов и измерений (также сводные таблицы) для отчетности и бизнес-аналитики.
флаг ua
@HenriqueMiranda - re Snowflake: покажите мне конкретный пример, чтобы я мог дать некоторые конкретные комментарии. На ум приходит «Факт» -> «Адрес» -> «Город» -> «Страна»; тогда поиск строк «Fact» для определенного «country_id» действительно запутанный и медленный.
флаг cn
Я согласен, но эти данные не будут запрашиваться очень часто. Большинство запросов будет выполняться на витринах данных, использующих звездообразные схемы.
флаг ua
@ЭнрикеМиранда - хорошо.

Ответить или комментировать

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