Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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 如何使用来自不同组织的用户的时间序列数据划分DynamoDB表?_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

Amazon web services 如何使用来自不同组织的用户的时间序列数据划分DynamoDB表?

Amazon web services 如何使用来自不同组织的用户的时间序列数据划分DynamoDB表?,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我有一个使用AWS AppSync构建的应用程序,主要关注从移动应用程序发送遥测数据。由于应用程序的用户属于不同的组织,在这些组织中,将有能够查看特定于其组织的数据的管理员,因此我一直在研究如何为此划分和构造DynamoDB表 OrganizationA -->Admin # View all the telemetry data ---->User # Send the telemetry data from their mobile application 根据这些资源的一些研

我有一个使用AWS AppSync构建的应用程序,主要关注从移动应用程序发送遥测数据。由于应用程序的用户属于不同的组织,在这些组织中,将有能够查看特定于其组织的数据的管理员,因此我一直在研究如何为此划分和构造DynamoDB表

OrganizationA
-->Admin # View all the telemetry data
---->User # Send the telemetry data from their mobile application
根据这些资源的一些研究

  • 建议的方式是为各个时段创建表格,即每天使用遥测读数的表格

    示例(不确定此示例中的
    pk
    是什么):

    我计划使用AWS Cognito分离用户的方式是,当用户按照此方式注册时,附加一个自定义属性,例如
    组织
    角色
    (管理员或用户),然后使用预注册Lambda触发器


    我应该如何实现这一点?

    因为您确实不需要来自一个组织的用户从另一个组织读取数据,而且对于所有的访问模式,您将始终知道组织id,那么该属性应该是分区中的一个因素:在表级别,或者在分区键级别

    然后,您必须确定是否可以简单地使用组织id作为分区键,或者需要进一步分区——比如,通过连接每个示例的组织id和小时值。这将取决于您希望每个组织在给定的一天内生成的数据量。在更细粒度的分区和查询数据的成本之间进行权衡

    如果组织每天生成少量数据(比如说,一小时生成几个事件),那么只需使用组织id作为分区键即可。否则,进一步对数据进行分区

    在上述所有情况下,排序键可能应该是事件的时间戳,精度可以是秒,也可以是毫秒,具体取决于您的需要。这样,您的查询就可以检索有序的时间序列数据


    请记住,在进行查询时,可能需要执行多个查询,并将结果粘在应用程序中,以完全表示结果,因为范围可能跨越多个分区,甚至多个表。

    谢谢您的回答。是的,需要将结果连接在一起的最后一部分是另一个问题,因为我需要为用户显示每次行程的遥测数据,我不确定如何执行。您为每个用户收集了多少数据?一个组织中有多少用户?这些都是重要的细节。。如果您需要每个用户的查询,那么分区应该是按组织和按用户:因此您可能有如下分区键:
    org1_usrA
    来指示记录是为组织“1”中的用户“A”创建的;或者
    org1_usrA_05
    表示它是为org“1”、用户“A”创建表当天的05-06小时创建的。对于查询,您需要将来自多个分区的数据缝合在一起,因此您可以在应用程序中进行N次查询,然后在本地合并结果(您也可以并行发出一些请求以加快速度)最初的计划是每10秒从每个传感器发送一次数据,每个用户将有多达6个传感器,开始时大约有60个用户。那么对于旅行,我怎么知道它的结局呢?我可以用自己的
    trip\u id
    设置每次旅行吗?这是每个用户每天84600个样本。如果每个组织有60个用户,那么每个组织每天大约有400万点。在这种情况下,您可能应该按用户划分,而不是按组织划分。我不确定我是否能适应旅行。这一细节不在原文中。也许您可以有一个单独的表,它不是存储用户、旅行组织详细信息的时间序列,在那里您可以有旅行开始和停止。