dynamodb的最大项目长度(64k)的实用解决scheme和no-sql缺乏表连接

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

我正在certificatedynanodb作为一个即将到来的应用程序的可行的解决scheme。 这是一个学习实验,熟悉dynamodb产品。 我的平台是amazon EC2(Linux),node.js和dynode库。

在no-sql的上下文中考虑一对多关系(例如标签,关键字,类别等)时,我的问题就出现了,无法连接表。 起初,它似乎是一个简单的事情:把它们存储为一个属性列表。 但是后来我读到了64KB的限制。

所以我的问题:

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

显然数字很简单,但“使用UTF8二进制编码的Unicode”string将是一个挑战。

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

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

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

我有几个实现(在SimpleDB中,但同样的想法),使用EntityRelationship表build模连接,与相关的数据位复制到这些表。 使用DynamoDB,您可以很好地使用范围键实现标签,类别等…

此外,我已经使用属性跨越来克服SimpleDB中的属性大小限制(DynamoDB,同样可以完成)。 提取多个属性后,重新组合整个logging。 (范围键表也将有所帮助)

Simol(用于C#)对SimpleDB(http://simol.codeplex.com)有很好的实现,并且我知道项目所有者正在为DynamoDB开发一个类似的实现 – 您可以从该项目中获得一些洞察。

如果有人今天晚些时候遇到这种情况,最大的项目大小现在是400kb,而不是64kb