我正在使用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);
}
请帮忙。提前致谢
亲切的问候。
答案 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并让他们查看它。
然而,我的猜测是,如果您完成工作以使此日志记录工作并查看它,您可能会发现一个错误,您无法成功存储数据。