看完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
}
]
}
}
我是否应该将上面的Json作为关键字存储在Dynamo中:CarName'Jaguar',Value [高于json]?还是有更好的方法来存储Car Object?
最佳答案
I understand how I would store these objects in a Relational Database like MySql but how would I store them in DynamoDB?
DynamoDB的主流解决方案与MySql非常相似:您只是,
用表项(dynamodb)更改表行(mysql),它们都是平面结构,
但是,dynamodb项可能具有与表中其他项不同的属性,并且
有一个64KB item size limit(包括列/属性名称)。
Should I just store the above Json in Dynamo as Key: CarName 'Jaguar', Value [above json] ? Or is there a better way to store the Car Object?
不,一旦零件数组增长,您将面对64KB item size limit。您可以存储json的压缩版本来缓解这种情况,但是您将无法在dynamodb中使用任何属性功能(例如LSI或GSI,updateItem),也无法与其他AWS产品无缝集成。
您可以看一下dyngodb存储这些对象的方式,这很简单:每个对象都有一个dynamodb项。数组的一个散列,数组元素的N个范围。
关于amazon-dynamodb - 将对象作为Json存储在Amazon Dynamo中是一个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11443700/