amazon dynamoDB 或 MySQL 用于在每行内存储大型数组

amazon dynamoDB 或 MySQL 用于在每行内存储大型数组

我正在尝试决定应该为我制作的应用程序使用哪个数据库。我倾向于使用 dynamoDB,因为它具有可扩展性,但后来我读到了文档其中写道:

项目大小限制为 64 KB

虽然看起来 MySQL 有类似的限制记录这里

此应用程序将在两个数组中存储大量数据,每个数组可能包含 10,000-100,000 个字符串。我估计这些字符串的长度大约为 20 个字符,因此数组的每个元素大约为 40 字节,每个数组大约为 4MB。

鉴于这种困境,您将使用亚马逊 AWS 上的什么数据库;或者如何绕过每行大小的限制?

答案1

每个表的列数有 4096 个硬性限制,但对于给定的表,实际最大值可能小于此值。确切的限制取决于几个相互作用的因素。

每个表(无论使用哪种存储引擎)的最大行大小为 65,535 字节。存储引擎可能会对此限制施加额外限制,从而减少有效最大行大小。

MySql 5.0 手册

因此,这两种 DBMS 都应允许您在每行中存放相同数量的数据。看来,这两种方法都无法满足您的需求或处理数据的方式。

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

答案2

在进一步阅读MySQL 存储要求页面上我注意到了这一部分:

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

答案3

对于 DynamoDB,建议您使用 Amazon S3 来存储较大的值。

其他选项包括 gzip 压缩内容,这将为您提供大约 200KB 的存储空间。

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

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

相关内容