Как построить правильные аналитические панели для данных в DynamoDB?
У меня есть набор таблиц Dynamo DB. И я хотел бы разработать правильное решение для построения динамических панелей мониторинга в реальном времени (или почти в реальном времени) для данных в этих таблицах.
Например, если у меня есть таблица "пользователи" и каждый элемент пользователя имеет атрибут "пол". Я хотел бы создать панель мониторинга в реальном времени, которая отслеживает число пользователей мужского и женского пола, чтобы увидеть, как она увеличивается / уменьшается после выпуска функций.
После некоторых исследований я нашел следующее решение: - Использовать кластер EMR, подключенный к DynamoDB. - Подключите выход EMR к Amazon QuickSight.
Эффективно ли это решение? Будет ли это работать должным образом, если у меня есть огромное количество данных (например, 100 миллионов строк)?
2 ответа
Если вы планируете сделать дамп всей таблицы DynamoDB в EMR, то неужели это бесполезная трата пропускной способности, ресурсов и т. Д. Вам нужно будет заплатить за всю емкость чтения Dynamodb.
В простейшей форме вы можете просто запросить таблицу и получить количество запросов "мужской" / "женский" (НО ЭТО НЕ ДЕЛАЙТЕ).
Переосмыслите свой дизайн. Если бы мне нужно было узнать сумму чего-то, что постоянно меняется, я бы создал другую таблицу и обновлял бы ее каждый раз, когда элементы добавляются / удаляются / изменяются в основной таблице. Тогда я могу просто выполнить простой запрос, который включает только одну строку вместо сканирования всей базы данных.
Если вам действительно нужно создать дамп DynamoDB, я бы сбросил его на S3, а затем использовал Amazon Athena для обработки данных непосредственно с S3. Для такой простой задачи Amazon EMR является большим излишним.
Что вы подразумеваете под "в реальном времени"? Как задержка 5 секунд или 5 часов? Потому что, если это 5 секунд или 5 минут, EMR не будет работать; потому что EMR основан на hadoop и который является пакетной обработкой.
DynamoDB сам по себе является базой данных NoSQL; почему бы не позволить этой панели мониторинга напрямую запрашивать таблицы DynamoDB?