1

首先,一些我认为可能非常相关的背景背景:

我正在证明dynanodb作为即将推出的应用程序的可行解决方案。这是一个让自己熟悉 dynamodb 产品的学习实验。我的平台是 amazon EC2 (Linux),带有dynode库的 node.js。

在考虑 no-sql 上下文中的一对多关系(例如标签、关键字、类别等)时,我的问题出现了,在这种情况下,无法连接表。起初看起来很简单:只需将它们存储为属性列表即可。但后来我读到了 64KB 的限制。

所以我的问题:

DynamoDB 中的一个项目,包括它的属性(即一个包含所有列的数据库行),二进制大小的总和不能超过 64KB。那么我该如何检查数据以确保它不会违反该长度?

显然数字很简单,但是“带有 UTF8 二进制编码的 Unicode”字符串将是一个挑战。

这个问题的第二部分对于没有 sql 的忍者来说可能是显而易见的:如何在减轻无法连接表的负担的同时避免遇到这个限制?一个冗长的答案可能超出了问答格式的范围,但如果有人有意见或可以提供我应该在解决 64k 长度时探索的替代方案,我将不胜感激。

最好的,并提前感谢您的任何和所有建议。

4

2 回答 2

1

我同意@bcoates 的评论。这确实取决于您的用例。

我有几个实现(在 SimpleDB 中,但想法相同),它们使用 EntityRelationship 表对连接进行建模,并将相关数据位复制到这些表中。使用 DynamoDB,您可以充分利用范围键来实现标签、类别等...

此外,我使用属性跨越来克服 SimpleDB 中的属性大小限制(DynamoDB,同样可以完成)。多个属性,在提取后组合以重构整个记录。(范围键表在这里也会有帮助)

Simol (for C#) 对 SimpleDB (http://simol.codeplex.com) 有一个很好的实现,我知道项目所有者正在为 DynamoDB 进行类似的实现——您可以从该项目中获得一些见解.

于 2012-02-28T18:04:43.883 回答
1

如果有人在当天晚些时候遇到这个问题,那么最大项目大小现在是 400kb 而不是 64kb

于 2015-01-08T15:15:54.150 回答