Какова правильная архитектура \ дизайн для выполнения javascript-клиента к системе отслеживания веб-сайтов базы данных aws?

Вставка строк дорого. Вы можете использовать groupby + last, объединить два кадра данных, а затем sort_values:

df_last = df.groupby('Car_ID', as_index=False).last().assign(Info='Changed')

res = pd.concat([df, df_last], ignore_index=True)\
        .sort_values('Car_ID')\
        .reset_index(drop=True)

print(res)

   Car_ID        Date  Driver     Info
0    B332  2018-03-15    Alex  Group_B
1    B332  2018-03-14    Alex  Group_B
2    B332  2018-03-12    Alex  Group_B
3    B332  2018-03-12    Alex  Changed
4    C315  2018-03-15    Sara  Group_C
5    C315  2018-03-14    Sara  Group_C
6    C315  2018-03-13    Sara  Group_C
7    C315  2018-03-12    Sara  Group_C
8    C315  2018-03-11    Sara  Group_C
9    C315  2018-03-11    Sara  Changed
10   F310  2018-03-10  Franck  Group_F
11   F310  2018-03-09  Franck  Group_F
12   F310  2018-03-09  Franck  Changed
0
задан folky 19 January 2019 в 12:36
поделиться

1 ответ

Если я правильно понимаю ваш вопрос, вы предлагаете следующее решение для выполнения веб-аналитики для вашего приложения:

WebServer -> Firehose -> AWS-S3 -> AWS-Lambda - -> AWS-RDS

Я вижу ниже плюсы и минусы с вышеупомянутым дизайном

Плюсы:

  1. низкая стоимость
  2. легко внедрить

Минусы:

  1. RDS может быть недостаточно продаваемым для обработки аналитики огромных объемов потоковых данных, которые, как правило, быстро растут
  2. Необходимо обрабатывать балансировку нагрузки, сценарии сбоев и другие сложности для лямбды
  3. Вам необходимо обрабатывать преобразование данных для RDS, так как он ожидает, что структурированные данные будут включены в реляционные таблицы

Предложение для хранения данные в S3 через Firehose звучат как хорошее решение. Но имейте в виду, что минимальный интервал для Firehose составляет одну минуту, поэтому ваше приложение должно выдерживать эту небольшую задержку. Вы можете использовать Kinesis Streams с задержкой в ​​миллисекунды, но тогда вам нужно управлять собственным кодом приложения и экземплярами для обработки потоков.

После загрузки данных в Kinesis Firehose или Streams вы также можете изучить следующие варианты:

  • Использовать Kinesis Analytics для отслеживания активности веб-пользователей в режиме реального времени, если она доступна в вашем регионе AWS. , В настоящее время он доступен только в отдельных регионах AWS
  • В Firehose преобразуйте свои данные с помощью лямбды и сохраните их в S3 в оптимизированном формате для дальнейшего анализа с помощью AWS Athena
  • Используйте Elastic Search в качестве места назначения и выполните веб-аналитика со стеком ELK вместо RDS
  • Хотя вы упомянули, что не можете использовать RedShift, он все же может быть лучшим решением для анализа временных рядов. Изучение RedShift, RedShift Spectrum и отформатированных данных, хранящихся в S3, все еще может быть экономически эффективным решением с лучшими возможностями

Добавление нескольких ссылок из AWS, с которыми вы можете ознакомиться, прежде чем принять решение о решении:

Веб-аналитика в реальном времени с решением Kinesis Data Analytics

Аналитика в реальном времени при потоковой передаче данных с помощью Amazon Kinesis и Amazon Elasticsearch

[1125 ] Конвейер аналитики схемы при чтении с использованием Amazon Athena

Amazon Redshift Spectrum расширяет хранилище данных до экзабайт - загрузка не требуется

0
ответ дан Manash Deb 19 January 2019 в 12:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: