亚马逊dynamoDB或MySQL的每行内存储大型数组

我正在尝试确定我应该使用哪个数据库。 由于其可扩展性,我倾向于使用dynamoDB,但后来我在文档中读到:

项目大小上有64 KB的限制

尽pipe看起来MySQL似乎在这里有类似的限制

这个应用程序将存储大量数据在两个数组中,每个数组可以包含10,000-100,000个string。 我估计这些string每个都会有20个字符左右的长度,所以每个元素的数组大约是40个字节,而每个数组的大小可能在4MB左右。

鉴于这种困境,您将使用亚马逊AWS上的哪个数据库; 或者你将如何避免每行的大小限制?

每个表格有4096列的硬限制,但对于给定的表格,有效最大值可能会更小。 确切的限制取决于几个相互作用的因素。

每个表(不pipe存储引擎)的最大行大小为65,535字节。 存储引擎可能会对此限制添加其他约束,从而减less有效的最大行大小。

MySql 5.0手册

所以DBMS应该允许你在每一行里面有相同数量的数据。 看起来不足以满足您的需求或处理数据的方式。

无论如何,你不应该在每一行中存储这么多的数据,你最好单独存储每个string,并使用其他表来引用它们。

在进一步阅读MySQL存储需求页面之后,我注意到了这一部分:

即使存储引擎能够支持更大的行,表的内部表示的最大行大小也是65,535字节。 这个数字不包括BLOB或TEXT列 ,它们只占这个大小的9到12个字节。 对于BLOB和TEXT数据,信息内部存储在与行缓冲区不同的内存区域中。

使用DynamoDBbuild议您使用Amazon S3存储更大的值。

其他选项包括gzip压缩的内容,这将给你约200KB的存储空间。

请参阅下面的Matt Woods幻灯片:

http://www.slideshare.net/AmazonWebServices/building-applications-with-dynamodb