Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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_Redis_Amazon Dynamodb - Fatal编程技术网

Amazon web services DynamoDB中哪个散列键最适合事件数据?

Amazon web services DynamoDB中哪个散列键最适合事件数据?,amazon-web-services,redis,amazon-dynamodb,Amazon Web Services,Redis,Amazon Dynamodb,我正在使用AmazonDynamodb为活动流存储基于事件的数据 我自动为每个月创建一个新表,并打算将事件数据存储在每个相关表中。这样,只要删除旧表,我就可以在需要时快速删除旧的月份,并为最近的表提供更好的供应负载 然而,通过阅读amazon文档,我可以看到散列键本身非常重要 配置的吞吐量取决于主键选择,以及 单个项目的工作负载模式。在存储数据时,Amazon DynamoDB将表的项划分为多个分区,然后 主要基于散列键元素分发数据。这个 与表关联的调配吞吐量也被平均分配 在分区之间,不共享跨

我正在使用AmazonDynamodb为活动流存储基于事件的数据

我自动为每个月创建一个新表,并打算将事件数据存储在每个相关表中。这样,只要删除旧表,我就可以在需要时快速删除旧的月份,并为最近的表提供更好的供应负载

然而,通过阅读amazon文档,我可以看到散列键本身非常重要

配置的吞吐量取决于主键选择,以及 单个项目的工作负载模式。在存储数据时,Amazon DynamoDB将表的项划分为多个分区,然后 主要基于散列键元素分发数据。这个 与表关联的调配吞吐量也被平均分配 在分区之间,不共享跨 分区

我很难理解这一点

因此,我的问题是,考虑到上述情况,在这两者之间,哪个散列键更好:

1382465533_约翰·多伊

或:

约翰·多伊1382465533

上面的键是userid和事件时间戳的组合

如何查询这些表…

这些表将具有范围键,因为对于这个用例,它不是必需的

这些数据将用于为用户构建活动提要

当事件发生时,单个活动id被推(扇出)到用户追随者redis列表中(每个用户一个列表)

因此,当用户请求其流时,我们会执行以下操作:

  • 从Redis获取activityid列表
  • 循环遍历activityid并构造BatchGetItem查询以将其从DynamoDB中拉出
  • 考虑到所有这些,我需要了解的是如何最好地在活动表中定义哈希键。时间戳优先或用户ID优先。DynamoDB使用什么逻辑自动划分散列键


    提前感谢您的建议。

    根据您的问题,我想说的是,您如何编写哈希键并不重要,因为您必须使用该哈希键的确切值查询表,而DynamoDB无论如何都会将其视为字符串。另一件事是,如果您正在编写一个范围键,那么您可能希望按照以下方式编写它

    约翰·多伊1382465533

    因此,您可以像这样轻松地查询表

    哈希键=任意值,范围键>=john.doe_13824600

    也就是说,您可以通过将Redis活动提要直接集成到DynamoDB中来摆脱它,如下所示:

    散列键:用户id

    范围键:时间戳

    其余的活动数据

    因此,您不必将活动推送到DynamoDB中,也不必将活动id推送到Redis中,只需从同一个DynamoDB表中推送到并查询它即可。我不知道这是否与应用程序的其余部分兼容,但这里有一个想法