Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 针对多个设备和时间戳的最佳分区方法_Amazon Web Services_Amazon S3_Partitioning_Amazon Athena - Fatal编程技术网

Amazon web services 针对多个设备和时间戳的最佳分区方法

Amazon web services 针对多个设备和时间戳的最佳分区方法,amazon-web-services,amazon-s3,partitioning,amazon-athena,Amazon Web Services,Amazon S3,Partitioning,Amazon Athena,在我的组织中,我们有多台设备每秒发送数据。数据在AWS S3中进行处理和分区,如下所示/year=YYYY/month=MM/day=DD/file.csv 使用AWS Athena,我们可以运行如下查询:从数据中选择col1、col2、coln,其中year='YYYY',month='MM',DAY='dd',device_id=123从一台设备检索一天中某段时间的数据。有时我们还需要在不同的时间从多个设备(device\u id IN(…))获取数据。请注意,数据集中存在列device\u

在我的组织中,我们有多台设备每秒发送数据。数据在AWS S3中进行处理和分区,如下所示
/year=YYYY/month=MM/day=DD/file.csv

使用AWS Athena,我们可以运行如下查询:
从数据中选择col1、col2、coln,其中year='YYYY',month='MM',DAY='dd',device_id=123
从一台设备检索一天中某段时间的数据。有时我们还需要在不同的时间从多个设备(
device\u id IN(…)
)获取数据。请注意,数据集中存在列
device\u id
ts
,只有
ts
用于生成分区

我的问题是:


从长远来看,这种分区方法有效吗?目前,我们只有大约150个活动设备,但我们计划扩展到1000个或更多。考虑到查询模式是相同的(在特定时间获取某些设备的数据),是否最好按设备id然后按日期进行分区(
/devive\u id/year=YYYY/month=MM/day=DD/file.csv
)?

分区对于您提供的查询非常好——它只需要在一个子目录中查找一天的数据

但是,如果您一直在查询特定的设备(没有指定月/日),那么它就没有效率

您需要决定什么更常见:

  • 如果总是查询特定设备,则按设备划分,然后按日期
  • 如果总是查询特定的日期/月份,那么您当前的方法就可以了(可能在一天之后再添加一个设备分区)

分区对于您提供的查询非常有用——它只需要在一个子目录中查找一天的数据

但是,如果您一直在查询特定的设备(没有指定月/日),那么它就没有效率

您需要决定什么更常见:

  • 如果总是查询特定设备,则按设备划分,然后按日期
  • 如果总是查询特定的日期/月份,那么您当前的方法就可以了(可能在一天之后再添加一个设备分区)