2016-05-24 2 views
2

Я храню терабайты данных пользовательского события типа потока кликов. Его нужно индексировать или разбивать по дате, чтобы можно было быстро запросить узкий диапазон дат. Я хочу иметь возможность запускать задания агрегации и запросы по этому вопросу. Я ожидал бы использовать Spark в Amazon EMR или что-то подобное.DynamoDB vs S3 плоские файлы?

Один из вариантов плоских файлов S3 распределяли в день + час, как:

s3://my-bucket/20160503_00/data.txt 
s3://my-bucket/20160503_01/data.txt 
s3://my-bucket/20160503_02/data.txt 

Я был бы более вероятно использование паркета столбчатых хранения, а не сырой текст, как:

s3://my-bucket/20160503_00/data.parquet 
s3://my-bucket/20160503_01/data.parquet 
s3://my-bucket/20160503_02/data.parquet 

Другой вариант полон Amazon DynamoDB?

Каковы преимущества/недостатки каждого?

+2

не уверен, что SO - лучший источник pro/con - но: если вы используете s3, сохраните сжатый контент, чтобы сэкономить значительное пространство и цикл ввода-вывода (поскольку вы эффективно сохраняете текст, он будет хорошо сжиматься.) также сохраняйте низкое отношение записи к файлу (т. е. не 1 запись в секунду на файл, суммируйте их в минуту на один файл или что-то вроде apopos - если возможно). когда я делал что-то вроде этого много лет назад, мы будем синхронизировать с s3 каждую секунду, но возвращаемся каждые 5 минут и суммируем данные за секунду в более крупные куски ..) – keen

ответ

0

Вы можете передавать данные из AWS Kinesis через AWS Kinesis Firehose, чтобы сохранить ваши данные и сохранить их на S3 в меньшем размере 128MB or 15 minute chunks. Firehose автоматически поместит ваши куски в подпапки, что позволит вам найти нужный вам диапазон.

Смежные вопросы