Рекомендации по созданию крупномасштабной системы хранения данных
-
05-07-2019 - |
Вопрос
У меня есть большой объем данных, которые мне нужно сохранить, и я могу создавать отчеты по каждому из них, представляющему событие на веб-сайте (мы говорим о скорости более 50 в секунду, поэтому очевидно, что более старые данные необходимо будет агрегировать).
Я оцениваю подходы к реализации этого, очевидно, что это должно быть надежным и должно быть как можно более простым в масштабировании.Кроме того, должна быть возможность гибко и эффективно создавать отчеты на основе полученных данных.
Я надеюсь, что некоторые разработчики имеют опыт работы с таким программным обеспечением и смогут дать рекомендацию и / или указать на подводные камни.
В идеале я бы хотел развернуть это на EC2.
Решение
Ух ты.Вы открываете огромную тему.
Несколько вещей, которые сразу же пришли мне в голову...
- тщательно продумайте свою схему вставок в транзакционной части и операций чтения в отчетной части, возможно, вам лучше хранить их отдельно, если у вас действительно большие объемы данных
- внимательно посмотрите на задержку, которую вы можете допустить между отчетами о ваших транзакциях в режиме реального времени и агрегированными отчетами о ваших исторических данных.Возможно, вам следует создать процесс, который периодически запускается и агрегирует ваши транзакции.
- внимательно изучите любое требование, согласно которому вы представляете отчетность по всем вашим транзакционным и агрегированным данным либо в одном отчете, либо в виде детализации от одного к другому
- прототип с несколькими значимыми запросами и некоторыми реалистичными объемами данных
- получите базу данных реального качества, готовую к работе на предприятии, т.е.Oracle / MSSQL
- подумайте об использовании чужого кода / продукта для составления отчетности, например Кристалл/БО / Когнос
как я уже сказал, огромная тема.По мере того, как я буду придумывать что-то еще, я буду продолжать пополнять свой список.
ПРИВЕТ и удачи
Другие советы
@ Саймон сделал много замечательных замечаний, я просто добавлю несколько и еще раз повторю / подчеркну некоторые другие:
<Ол>Я удивлен, что ни один из ответов здесь не касается Hadoop и HDFS - я хотел бы предположить, что это потому, что SO - это вопрос для программистов, а ваш вопрос на самом деле является вопросом науки о данных.
Если вы имеете дело с большим количеством запросов и большим временем обработки, вы должны использовать HDFS (формат распределенного хранилища в EC) для хранения ваших данных и выполнения пакетных запросов (т.е. аналитики) на обычном оборудовании.
Затем вы предоставите столько экземпляров EC2, сколько необходимо (сотни или тысячи в зависимости от того, насколько велики ваши требования к обработке данных), и запустите карту, чтобы уменьшить количество запросов к вашим данным для создания отчетов.
Ух ты..Это огромная тема.
Позвольте мне начать с баз данных.Сначала найдите что-нибудь хорошее, если вы собираетесь получать сумасшедшие объемы данных.Мне нравятся Oracle и Teradata.
Во-вторых, существует принципиальная разница между записью транзакционных данных и отчетностью / аналитикой.Поместите ваши транзакционные данные в одну область, а затем регулярно объединяйте их в область отчетов (схему).
Я полагаю, что вы можете подойти к этому двумя способами
Бросьте деньги на решение проблемы:Купите лучшее в своем классе программное обеспечение (базы данных, программное обеспечение для составления отчетов) и наймите в помощь нескольких опытных специалистов
Используйте доморощенный подход:Создавайте только то, что вам нужно прямо сейчас, и выращивайте все это органично.Начните с простой базы данных и создайте платформу веб-отчетов.Существует множество доступных инструментов с открытым исходным кодом и недорогих агентств, которые выполняют эту работу.
Что касается подхода EC2..Я не уверен, как это впишется в стратегию хранения данных.Обработка ограничена, и именно в этом заключается сила EC2.Ваша основная цель - эффективное хранение и восстановление.