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

Put 操作の説明を最終的に再読するまで、過去 48 時間、この問題と格闘してきました。

時間ベースのキーを作成し、6 つのインスタンスで 1 秒あたり 3 ~ 4 レコードを挿入しました。私たちが見た結果は、挿入された 1200 レコードに対して、600-700 のみが dynamo db とクラウド検索に使用されました。

私たちが気付いたのは、おそらくあなたにも影響を与えていることですが、Put 操作は例外を返さずに同じキーでレコードを上書きするということです。したがって、私たちのケースでは、Dynamo DB が挿入時にレコードをドロップしているように見えましたが、実際には重複キーを作成していたに違いないため、レコードは互いに上書きされていました。

これが役立つことを願っています。

于 2013-09-12T09:38:35.580 に答える
0

あなたが説明していることは起こらないはずです。Dynamo では一貫性のない読み取りが許可されているため、データが挿入された直後 (1 秒未満) にテーブルを表示すると、テーブルが表示されないことがあります。数分後 (またはそれ以降) にデータが表示されない場合は、PUT が成功していないか、Dynamo に問題があります。

バグが実際に発生していることを証明するには、DynamoDB クライアントのワイヤー ログを調べて (C# でこれを有効にする方法がわかりません。私は Java の専門家です)、Dynamo に PUT したリクエストを見つけます。それから数分後にそれを読んでみて、できないことを確認してください。これらの両方のリクエスト (データを入れる PUT とデータを取得する GET) の応答として AmazonAWS が提供する RequestId を受け取る場合、これらを AmazonAWS に渡して調べてもらうことができます。

ただし、このロギングを機能させるために作業を行って調べてみると、データが正常に保存されていないバグが見つかる可能性があると思います。

于 2013-08-21T17:53:13.257 に答える