Dynamodb putitem功能无法正常工作

时间:2013-08-13 12:20:14

标签: c# amazon-web-services amazon-dynamodb

我正在使用dynamodb服务进行数据插入。但它随机工作。有时它会插入值,而且大多数时候它都是跳过的。虽然我一直在发送不同的主键。以下代码我正在使用。请指教。谢谢

Dictionary<string, AttributeValue> attributes = new Dictionary<string, AttributeValue>();
foreach (KeyValuePair<string, object> entry in paramDictioonary)
{
    if (entry.Value == "")
    {
        attributes[entry.Key.ToString()] = new AttributeValue { S = "Empty Value" };
    }
    else
        attributes[entry.Key.ToString()] = new AttributeValue { S = entry.Value.ToString() };
}

AmazonDynamoDBClient client = new AmazonDynamoDBClient();
{
    PutItemRequest request = new PutItemRequest
    {
        TableName = "tableNamehere",
        Item = attributes
    };
    client.PutItem(request);
}

请帮忙。提前致谢

亲切的问候。

2 个答案:

答案 0 :(得分:1)

在过去的48小时内,我们一直在努力解决这个问题,直到我们最终重新阅读了Put操作的描述。

我们创建了一个基于时间的密钥,每6个实例插入3-4个记录。我们看到的结果是1200个记录只插入了600-700个记录,使其成为发电机数据库和云搜索。

我们意识到,也许它也会影响到你,Put操作将使用相同的密钥覆盖写入记录而不返回异常。因此,在我们的情况下,我们看到Dynamo DB正在删除插入记录,实际上我们必须创建重复的密钥,因此记录相互叠加。

我希望这会有所帮助。

答案 1 :(得分:0)

你所描述的不应该发生;如果您在插入数据(不到一秒钟)后很快查看表格,您可能看不到它,因为Dynamo允许读取不一致。如果您在几分钟之后(或之前)没有看到数据,那么您的PUT都不会成功,或者Dynamo遇到问题。

为了证明您的错误确实发生了,您可以查看DynamoDB客户端的有线日志(我不知道如何在C#中启用此功能,我是一个Java人员)并找到您要发送到的请求发电机,然后几分钟后尝试读取它并确认你不能。如果您使用AmazonAWS提供的RequestId作为对这两个请求(放置数据的PUT和获取数据的GET)的响应,您可以将这些请求提供给AmazonAWS并让他们查看它。

然而,我的猜测是,如果您完成工作以使此日志记录工作并查看它,您可能会发现一个错误,您无法成功存储数据。