在查看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之上]?或者有更好的方法来存储汽车对象?
我了解如何将这些对象存储在 MySql 等关系数据库中,但如何将它们存储在 DynamoDB 中?
DynamoDB 的主流解决方案与 MySql 非常相似:您只需将表行 (mysql) 更改为表项 (dynamodb),它们都是平面结构,但 dynamodb 项可能具有与表中其他项不同的属性表,并且有64KB 的项目大小限制(包括列/属性名称)。
我应该将上述 Json 存储在 Dynamo 中作为 Key: CarName 'Jaguar', Value [above json] 吗?或者有没有更好的方法来存储汽车对象?
不,一旦您的部件阵列增长,您将面临64KB 项目大小限制。您可以存储 json 的压缩版本以进行缓解,但随后您将无法在 dynamodb 中使用任何属性功能(例如LSI或GSI、updateItem),也无法与其他 AWS 产品无缝集成。
您可以查看dyngodb存储这些对象的方式,简而言之:一个 dynamodb 项,用于每个对象。数组的一个散列,数组元素有 N 个范围。
| 归档时间: |
|
| 查看次数: |
8175 次 |
| 最近记录: |