相关疑难解决方法(0)

在java中生成具有特定位大小的随机字符串

我怎么做?似乎无法找到办法.Securerandom似乎不允许我在任何地方指定位大小

java

10
推荐指数
1
解决办法
2万
查看次数

使用ExclusiveStartKey选项进行AWS Dynamodb扫描

对于我最近的项目,我试图从dynamodb获取数据.似乎一切正常,除了我在参数中添加"exclusiveStartKey"选项.

以下是我的代码.

function scanDataFromDB(datetime) {
let params = {
    TableName: TABLE_NAME,
    IndexName: "main-index",
    Select: "ALL_ATTRIBUTES",
    ExclusiveStartKey: {
        "message_id": { "S": "20161011175258875925351560"}
    },
    ExpressionAttributeNames: {
        "#f_up": "date_updated"
    },
    ExpressionAttributeValues: {
        ":s_time": "2016-10-11 00:00:00",
        ":e_time": "2016-10-11 23:59:59"
    },
    FilterExpression: "#f_up between :s_time and :e_time",
    ScanIndexForward: "true"
};
console.log(params);
docClient.scan(params, function(err, data) {
    if(err) {
        console.log(JSON.stringify(err, null, 2));
        //callback(err, null);
    } else {
        console.log(JSON.stringify(data, null, 2));
        //callback(null, err);
    }
})
Run Code Online (Sandbox Code Playgroud)

}

这将继续"提供的起始键无效." 欢迎任何建议或帮助.

node.js

6
推荐指数
1
解决办法
4666
查看次数

随机查询DynamoDB表的更好方法?

我已经包括了一些链接以及我们对其他答案的使用方法,这些链接似乎是目前网络上最理想的。

我们的记录需要分类(例如,“恐怖”,“惊悚”,“电视”),并且可以在特定类别和所有/某些类别中随机访问。我们通常一次需要访问大约20-100个项目。我们的类别数量也很少(少于100个)。

我们将数据写入数据库以上传/删除内容,尽管这是分批完成的,不需要实时。

我们尝试了两种不同的方法,以及两种不同的数据结构。

方法1

AWS DynamoDB-随机选择记录/项目?

帮助选择查询中的第n条记录。

简而言之,将类别用作哈希键,并将UUID用作排序键。生成一个随机UUID,使用大于或小于1的值来查询Dynamo,并限制为1。AWS员工甚至在第二个链接中建议这样做。(我们还尝试过增加对所需项目数的限制,但这增加了查询第一次失败的可能性)。

这种方法的问题:

  • 如果第一个查询大于/小于任何UUID,则可能失败
  • 在任何特定类别上进行查询都将导致节流(分区数量少)

我们还考虑过为每个类别添加后缀,以人为地增加我们拥有的分区数量,如以下链接所示。

AWS数据库博客选择正确的DynamoDB分区密钥

方法2

亚马逊网络服务:我们如何从dynamoDb的表中获取随机物品?

与此类似,我们将类别与序列号连接起来,并将其用作哈希键。例如horror-000001。

通过了解每个类别中的记录数,我们可以对整个数据集执行随机查询,同时还避免了热分区/键。

这种方法的问题

  • 我们需要一个辅助数据结构来管理每个类别的顺序计数
  • 编写(尤其是删除)的过程要复杂得多,尽管这不需要实时进行。

结论

两种方法都可以解决我们对类别进行随机查询的主要用例,但是它们提供的缺点实际上阻止了我们使用它们。我们更倾向于使用后缀来解决热分区问题的方法#1,尽管对于失败的查询,我们需要额外的重试逻辑。

有没有更好的方法来解决此问题?专门寻找能够很好地扩展(无需扫描)且无需实施额外资源的解决方案。#1符合要求,但是需要管理后缀和失败的尝试确实阻止了我们使用它,尤其是当它在lambda中被调用(根据使用时间计费)时。

谢谢!

amazon-web-services amazon-dynamodb

6
推荐指数
1
解决办法
688
查看次数