我正在尝试确定我应该使用哪个数据库。 由于其可扩展性,我倾向于使用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