Amazon dynamodb 亚马逊红移时间序列

Amazon dynamodb 亚马逊红移时间序列,amazon-dynamodb,amazon-redshift,bigdata,database,nosql,Amazon Dynamodb,Amazon Redshift,Bigdata,Database,Nosql,为了简单起见,让我们假设我有一个如下数组arr[time]=[price,asset](同一资产的价格可能每秒重复12次) 我希望能够以不同的比例查看数据,例如5年,每1小时1个样本,2.5年,每0.5小时1个样本,以及能够访问点之间的特定刻度 在DynamoDB中使用多个表还是在Redshift中使用单个数据库更经济/方便?我应该使用哪些架构/表进行红移 编辑:我的实体看起来像{'time':1505128343,'price':3.141708,'asset':1}在时间段(如其中时间>=1

为了简单起见,让我们假设我有一个如下数组
arr[time]=[price,asset]
(同一资产的价格可能每秒重复12次)

我希望能够以不同的比例查看数据,例如5年,每1小时1个样本,2.5年,每0.5小时1个样本,以及能够访问点之间的特定刻度

在DynamoDB中使用多个表还是在Redshift中使用单个数据库更经济/方便?我应该使用哪些架构/表进行红移


编辑:我的实体看起来像
{'time':1505128343,'price':3.141708,'asset':1}
在时间段(如
其中时间>=1504118343和时间之间进行搜索时,如果要严格访问每N条记录,可以使用窗口函数,根据某些排序条件提供行号,但性能可能非常差。对于每60秒间隔的第一个价格,其工作原理如下:

WITH
sorted_entities as (
    select 
     time
    ,price
    ,asset
    ,row_number() over (partition by asset,time/60 order by time)
    from entities_table
)
select time, price, asset
from sorted_entities
where row_number=1
该查询将使用asset ID和Unix timestamp列的整数除法将表中的行分成小的组,并根据精确的时间为每一行指定1、2、3等,因此您可以进一步选择数字为1的行。如果表的排序键是
asset,则time
会运行得更快,因为磁盘上具有相同
asset
的行会彼此靠近

如果采样的准确性不是优先考虑的问题,您可以这样做:

select * from entities_table where random()<0.0006944

select*from entities\u table where random()对不起,您的要求不是很清楚,所以很难回答您的问题。能否显示存储在表中的数据示例以及希望运行的示例查询?您所说的“以不同的比例查看数据”和“访问点之间的特定刻度”是什么意思?那么,
arr[time]=[price,asset]
是什么意思呢?如果我解释得不好,很抱歉,我已经编辑并详细阐述了原始帖子。与其随机抽样数据,不如提供给定时间段的平均价格,比如平均(或最高)小时价格、平均(或最高)年价格等?Amazon Redshift等数据仓库可以非常轻松地处理此类计算。