Работа в обратном направлении
Начните с того, что конечные пользователи хотят отчитываться или как они хотят / должны визуализировать данные.Если у вас есть некоторые понятия, а затем начать работать в обратном направлении к тому, как достичь этих целей.Исходя из предположения, что это должна быть реплицированная копия в СУРБД, исключаются несколько разумных возможностей.
Создание интерфейса реального времени
Если пользователи ищут агрегированные значения (счетчики, средние значения и т. Д.).) на лету (для каждого веб-запроса) было бы целесообразно изучить репликацию мастера в базу данных отчетов, если производительность SQL приемлема (и остается приемлемой, если вы удвоите входные данные).Механизмы SQL обычно отлично справляются с агрегацией и масштабируются достаточно далекоЭто также даст вам возможность объединять результаты данных и возвращать сложные результаты по запросу пользователей.
Помните, что репликация не проста или без ее собственного набора проблем.
По моему опыту, это начнет показывать признаки слабости в диапазоне сотен миллионов строк с нормализованными данными.В какой-то момент вставки борются с выборками в одной и той же таблице настолько, что обе становятся исключительно медленными (помните, репликация все еще остается потоком вставок).В качестве альтернативы индексы становятся настолько большими, что для повторного запроса требуется ввод-вывод хранилища, поэтому общая производительность таблицы уменьшается.
Пакетирование
С другой стороны, если отчетность подпадает под схему отправки стандартизированных отчетовс небольшим взаимодействием, я не обязательно рекомендовал бы вернуться к RBDMS.В этом случае результаты объединяются, агрегируются, объединяются и т. Д. Один раз.Платить за накладные расходы на индексирование и хранение в RBDMS не стоит.
Пакетные движки, такие как Hadoop , будут масштабироваться горизонтально (много меньших машин вместо нескольких огромных машин), поэтому обрабатывать большие объемыданные экономичны.
Пакетная доставка в RBDMS или K / V Store
Это также полезный путь, если требуется много вычислений, чтобы сделать записи более значимыми для механизма отчетов.Кроме того, записи могут быть денормализованы перед их сохранением в подсистеме хранения отчетов.Затем денормализованные или простые результаты будут отправлены в хранилище ключей / значений или RBDMS, чтобы упростить отчетность и повысить производительность за счет задержки, вычислений и, возможно, хранения.
Персональный совет
Не переусердствуйте, чтобы начать с этого.Решения, которые вы принимаете в отношении первоначальной реализации, вероятно, в какой-то момент все изменятся.Однако разработайте его с учетом текущих и ближайших проблем.Кроме того, тесты, сделанные другими, не очень полезны, если ваша модель использования не совсем такая же, как у них;сравните вашу модель использования.