2

我正在使用 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);
}

请帮忙。提前致谢

亲切的问候。

4

2 回答 2

2

在过去的 48 小时里,我们一直在与这个问题作斗争,直到我们终于重新阅读了 Put 操作的描述。

我们创建了一个基于时间的键,并且有 6 个实例每秒插入 3-4 条记录。我们看到的结果是 1200 条记录仅插入了 600-700 条进入 dynamo db 和云搜索。

我们意识到,也许它也影响到你的是,Put 操作将使用相同的键覆盖写入记录而不会返回异常。因此,在我们的案例中,Dynamo DB 在插入时删除了记录,实际上我们必须创建重复的键,因此记录相互覆盖。

我希望这有帮助。

于 2013-09-12T09:38:35.580 回答
0

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

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

但是我的猜测是,如果您完成工作以使此日志记录正常工作并对其进行调查,您可能会发现一个错误,即您没有成功存储数据。

于 2013-08-21T17:53:13.257 回答