10

Amazon DynamoDBを見た後、自分が作成した複雑なオブジェクトをコードに保存し、永続化する方法を見つけようとしています。これらのオブジェクトをMySqlなどのリレーショナルデータベースに保存する方法は理解していますが、DynamoDBに保存するにはどうすればよいですか?

1つの方法を考えることができます....それらをJsonに変換し、オブジェクトのJson表現をDynamoDBに保存します。それらをDynamoDBから再び取り出すために、Jsonからコード内のオブジェクト表現にマーシャルして戻します。

次に例を示します。

このタイプのオブジェクトの場合:車には多くの部品があるエンジンがあります。各部品には、シリアル番号、寿命、および交換用の値があります。これで、車をjsonに変換できます。これは次のようになります。

{
    "engine": {
        "parts": [
            {
                "serialNumber": "1234",
                "lifeSpan": 10,
                "replacementValue": 100
            },
            {
                "serialNumber": "5678",
                "lifeSpan": 1,
                "replacementValue": 200
            }
        ]
    }
}

上記のJsonをキーとしてDynamoに保存する必要があります:CarName'Jaguar'、Value [above json]?または、車のオブジェクトを保存するためのより良い方法はありますか?

4

5 に答える 5

5

これらのオブジェクトをMySqlなどのリレーショナルデータベースに保存する方法は理解していますが、DynamoDBに保存するにはどうすればよいですか?

DynamoDBの主流のソリューションは、MySqlのソリューションと非常によく似ています。テーブル行(mysql)をテーブルアイテム(dynamodb)に変更すると、どちらもフラットな構造になりますが、dynamodbアイテムは他のアイテムとは異なる属性を持つ可能性があります。テーブルであり、64KBのアイテムサイズ制限があります(列/属性名が含まれます)。

上記のJsonをキーとしてDynamoに保存する必要があります:CarName'Jaguar'、Value [above json]?または、車のオブジェクトを保存するためのより良い方法はありますか?

いいえ、パーツ配列が大きくなると、64KBのアイテムサイズ制限に直面します。jsonの圧縮バージョンを保存して軽減することはできますが、dynamodbで属性機能(LSIGSIupdateItemなど)を使用したり、他のAWS製品とシームレスに統合したりすることはできません。

dyngodbがこれらのオブジェクトを保存する方法を簡単に確認できます。つまり、オブジェクトごとに1つのdynamodbアイテムです。配列の1つのハッシュ。配列要素の範囲はNです。

于 2014-01-29T16:28:00.843 に答える
2

やり過ぎない限り、オブジェクトの保存は問題ないと思います。

他のいくつかの回答では、アイテムの最大サイズは400KBであると述べています。ただし、この制限は1MBしかないため、フェッチの結果にはさらに問題のある最大サイズもあります。

したがって、巨大なドキュメントを保存することを計画していて、アイテムごとに200KBを消費することになったとします。データベースに5つを超えるアイテムを配置すると、1MBの制限を超えます。つまり、5つを超えるアイテムを返す必要があるクエリを実行する場合、それは機能しません。取得できるアイテムは5つだけで、残りのアイテムを取得するには2番目のクエリを実行する必要があります。それらを自分で統合する必要があります。その上、遅くなります。

小さなJSONメッセージの場合、これは実際には問題ではなく、心配する必要はありません。

于 2019-08-17T23:39:23.323 に答える
1

文字列/文字列セットの配列を使用してみることができます。そうすれば、より多くのアイテムを1つずつプッシュできます。残念ながら、1つのアイテムだけをリクエストすることはできず、すべてを取得する必要があります。もう1つのオプションは、シリアル化された配列(phpを使用している場合)です。これは、優れたphp配列をDBに格納するための文字列に変換します。

于 2012-07-12T19:26:18.927 に答える
1

プログラムでdynamodbにアクセスしているのかわかりません。あなたがそれをしているなら、おそらく以下があなたを助けるかもしれないと仮定してください。

  1. ドキュメントモデルを使用して、dynamoDBでdb操作を実行します。あなたがasp.netコアでそれをしているなら、間違いなくドキュメントモデルは偶然です。

  2. Dynamo Dbで、jsonデータを保存するフィールド/列。その列タイプをマップとして選択します。マップタイプの利点は、 キーと値のペアを使用してjsonデータにインデックスを付けることができることです。

サイズ制限マップについては400kbをサポートします。以下のリンクを確認してください。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html#limits-data-types

ドキュメントオブジェクトモデルについては、このリンクを確認できます。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DotNetSDKMidLevel.html

于 2018-04-16T14:17:44.333 に答える
0

アイテムサイズの制限は最大400kbです。

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html

ですから、今のところ、アイテムのサイズ制限はそれほど大きな問題ではないと思います。

ただし、他のAWSサービスとの統合に関する問題は依然として残っています。たとえば、これらのjsonマップフィールドでcloudsearchを使用することはできないと確信しています。特に、データが大きすぎる場合は、S3オブジェクトへのポインターをフィールドデータとして保存できることを考慮してください。

私はdynamoでマップタイプを少し使用しましたが、新しい制限に対応できる場合は、すべてのデータをフィールドに保存するのに比べてかなり便利でクリーンです。node / javascriptを使用している場合、dynampdbデータ型ライブラリはこのようなものをうまく機能させるために重要です。

https://www.npmjs.com/package/dynamodb-data-types

于 2015-03-22T23:51:08.903 に答える