В настоящее время я пытаюсь найти лучший архитектурный подход для моего варианта использования:
У меня есть S3 сегменты (два полностью разделенных), которые содержат данные, хранящиеся в формате JSON. Данные разбиты по префиксам год / месяц / день, и в определенный день я могу найти, например, сотни файлов на эту дату
(пример: s3: // mybucket / 2018/12/31 / file1,
s3: // mybucket / 2018/12/31 / file2, s3: //mybucket/2018/12/31/file..n)
К сожалению, внутри определенного префикса на один день, в этих десятках или сотнях файлов JSON не упорядочены по точной временной отметке - поэтому, если мы последуем этому примеру:
s3: // mybucket / 2018/12/31 /
Я могу найти:
file1 - который содержит JSON об объекте "A" с отметкой времени "2018-12-31 18:00"
file100 - который содержит JSON об объекте "A" с отметкой времени "2018-12-31 04:00"
Что еще хуже ... тот же сценарий, что и у меня со вторым ведром.
Что я хочу сделать с этими данными?
Соберите мои события из обоих сегментов, упорядоченных по «идентификатору» объекта, отсортированным способом (по отметке времени), чтобы визуализировать это на временной шкале на последнем шаге (какие инструменты и как это выходит за рамки).
Я больше сомневаюсь, как это сделать:
- экономически эффективным способом
- Собственное облако (в AWS)
- С минимально возможным обслуживанием
О чем я думал:
Не уверен, если ... но загружает каждый новый файл, поступивший на S3, в DynamoDB (с использованием запуска по лямбде) AFAIK Создание таблицы в правильном подходе - мой идентификатор как ключ Hask и метка времени как Range Key должен работать для меня, правильно?
Поскольку каждая новая вставленная строка будет разделена на определенный идентификатор и уже упорядочена в правильном порядке - но я не эксперт.
Используйте Log-stash для загрузки данных из S3 в ElasticSearch - снова AFAIK, все в ES может быть проиндексировано, поэтому также отсортировано. Timelion, вероятно, позволит мне сделать этот причудливый анализ, который мне нужен. Но опять же .... не уверен, будет ли ES работать так, как я хочу ... цена ... объем большой и т. Д.
??? Других идей нет
Чтобы помочь как-то понять мою потребность и показать немного структуры данных, я подготовил это: :)
пример рабочего процесса
Объем данных?
Около + - 200 000 событий - каждое событие представляет собой JSON с 4 функциями (ID, Event_type, Timestamp, Price)
Подведем итог:
Мне нужно эффективно разместить данные где-нибудь, минимизировать затраты, отсортировать их для поддержки на следующем шаге, чтобы представить, как события меняются в зависимости от времени - фильтруется по определенному «ID».
Спасибо за любые полезные советы, рекомендации и решения, на которые я могу положиться! :) 1071 *
@ Джон Ротенштейн - вы правы, я совершенно забыл добавить эти детали. По сути, мне не нужны никакие функции SQL, так как данные не будут обновляться. Единственный сценарий - это то, что новое событие для определенного идентификатора просто прибудет, поэтому только новые инкрементные данные. Исходя из этого, моя единственная операция над этим набором данных - «Выбрать». Вот почему я предпочел бы скорость и мгновенный ответ. Люди будут смотреть на это в основном по каждому «идентификатору», поэтому используют фильтрацию. Данные поступают каждые 15 минут на S3 (новые файлы).
@ Атхар Хан - спасибо за хорошее предложение!