将一个Object作为Json存储在Amazon Dynamo中是一个好主意吗?

tin*_*lly 6 amazon-dynamodb

在查看Amazon DynamoDB之后,我一直在试图找出如何存储我在代码中创建的复杂对象并希望保留.我理解如何将这些对象存储在像MySql这样的关系数据库中,但是如何将它们存储在DynamoDB中呢?

我可以想到一种方法....将它们转换为Json并将对象的Json表示存储在DynamoDB中.为了让它们再次从DynamoDB中取出,我会将它们从Json转发回我的代码中的Object表示.

这是一个例子:

对于这种类型的对象:汽车有一个具有许多零件的引擎.每个零件都有一个序列号,一个寿命和一个替换值.现在我可以将Car变成json,看起来像这样:

{
    "engine": {
        "parts": [
            {
                "serialNumber": "1234",
                "lifeSpan": 10,
                "replacementValue": 100
            },
            {
                "serialNumber": "5678",
                "lifeSpan": 1,
                "replacementValue": 200
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该将上面的Json存储在Dynamo中作为Key:CarName'Jaguar',Value [在json之上]?或者有更好的方法来存储汽车对象?

aaa*_*sto 5

我了解如何将这些对象存储在 MySql 等关系数据库中,但如何将它们存储在 DynamoDB 中?

DynamoDB 的主流解决方案与 MySql 非常相似:您只需将表行 (mysql) 更改为表项 (dynamodb),它们都是平面结构,但 dynamodb 项可能具有与表中其他项不同的属性表,并且有64KB 的项目大小限制(包括列/属性名称)。

我应该将上述 Json 存储在 Dynamo 中作为 Key: CarName 'Jaguar', Value [above json] 吗?或者有没有更好的方法来存储汽车对象?

不,一旦您的部件阵列增长,您将面临64KB 项目大小限制。您可以存储 json 的压缩版本以进行缓解,但随后您将无法在 dynamodb 中使用任何属性功能(例如LSIGSIupdateItem),也无法与其他 AWS 产品无缝集成。

您可以查看dyngodb存储这些对象的方式,简而言之:一个 dynamodb 项,用于每个对象。数组的一个散列,数组元素有 N 个范围。

  • 项目大小限制现已增加至 400 KB (9认同)