У меня есть база данных MySQL с несколькими (если быть точным, пятью) огромными таблицами.По сути, это хранилище данных на основе звездной топологии.Размеры таблиц варьируются от 700 ГБ (таблица фактов) до 1 ГБ, а вся база данных занимает до 1 терабайта.Теперь мне дали задание запустить аналитику для этих таблиц, которая может даже включать объединения.Простым аналитическим запросом к этой базе данных может быть «найти количество курильщиков в каждом штате и отобразить его в порядке убывания». Это требование можно преобразовать в простой запрос, например
select state, count(smokingStatus) as smokers
from abc
having smokingstatus='current smoker'
group by state....
Этот запрос (и многие другиеприрода) занимает много времени для выполнения в этой базе данных, время занимает порядка десятков часов.
Эта база данных также активно используется для вставки, что означает, что каждые несколько минут добавляются тысячи строк.
В таком случае, как я могу решить эту проблему запроса?Я посмотрел на Cassandra, который казался простым в реализации, но я не уверен, будет ли он так же прост для выполнения аналитических запросов к базе данных, особенно когда мне нужно использовать «where предложение и группировать по конструкции»
Также посмотрел в Hadoop, но я не уверен, как я могу реализовать запросы типа RDBMS.Я не слишком уверен, хочу ли я сразу же инвестировать в приобретение как минимум трех машин для name-node, zookeeper и data-узлов !!Прежде всего наша компания предпочитает решения на основе окон.
Я также думал о предварительном вычислении всех данных в более простых сводных таблицах, но это ограничивает мою способность выполнять различные виды запросов.
Существуют ли другие идеи, которые я могу реализовать?
РЕДАКТИРОВАТЬ
Ниже приводится настройка среды mysql
1) master-slave setup 2) master для вставок / обновлений 3) slave для чтения и выполнения хранимых процедур 4) все таблицы имеют innodb с файлами в таблице 5) индексы в строке, а также столбцы int.
Предварительный расчет значенийэто вариант, но так как требования для этого типа агрегированных значений постоянно меняются.