如何在DynamoDb中正确嵌套表格
我正在尝试把一个反编译文件的信息存储到Dynamo里。
我把所有文件都存储在s3上,但我想对其中的一些内容进行修改。
我有一个对象ID,里面有一些属性,比如日期等等,我知道怎么在Dynamo里创建一个表来存这些信息。我的问题是,每个对象还包含图片、文本文件和原始文件。我想把原始文件在s3上的位置作为属性放在文件的信息里:
比如:FileX,日期,原始文件位置等等,图片指针,文本指针。
我在网上查了资料,但对如何进行嵌套有点困惑。有没有人知道好的例子?还有其他方法吗?我想我需要创建一个图片表和一个文本表,每个表里都有ID和所有文件在s3上的键。有没有示例代码可以展示如何建立这些链接?
顺便说一下,我是用Python的boto库来做这个的。
2 个回答
根据你描述的情况,我觉得你只需要创建一个带有哈希键的表。这个哈希键应该是对象的ID。然后你可以有一些列,比如“日期”、“图片指针”、“文本指针”等等。
DynamoDB是无模式的,这意味着你不需要明确地创建这些列。当你调用getItem时,服务器会返回一个字典,字典的键是列名,值就是对应的数据。
无模式的意思还意味着你可以动态地创建新的列。假设你在表中已经有了一行数据,只有“日期”这一列。现在你想添加“图片指针”这一列,你只需要调用UpdateItem,并提供哈希键和图片指针的键值对。
如果你在DynamoDB的每个项目限制64Kb以内,就没问题。
你可以每个文件对应一个项目(行)。
DynamoDB支持字符串类型(比如文件名、日期等),还有一个字符串集合(SS),可以用来存放属性列表(比如文本文件、图片)。
根据你写的内容,我猜测你只是想在S3里保存指向二进制数据的指针(键)。你也可以把二进制数据和二进制集合存放在DynamoDB里,但我觉得这样会达到限制,而且在处理速度上会比较贵。