存储/访问Web应用程序的大型整数数组的最佳解决方案

时间:2013-11-10 17:44:29

标签: sql design-patterns database-design nosql amazon-dynamodb

我有一个Web应用程序(Java后端),它处理从包含许多传感器的硬件平台上传的大量原始数据。

目前上传原始数据并将数据解压缩并存储为Postgresql数据库中的“文本”字段,以允许用户登录并生成数据的各种图表/图表(使用JS图表库客户端)

示例字符串......

[45,23,45,32,56,75,34 ...

阵列通常包含~300,000个值,但这可能高达1,000,000,具体取决于传感器记录的时间长度,因此存储的字符串大小可能是几百千字节

目前这似乎工作正常,因为每天只有大约200个上传,但是当我看到应用程序的可扩展性和备份数据的能力时,我正在寻找存储此数据的替代方案

对我来说,DynamoDB看起来是一个很好的选择,因为我可以继续在我的SQL表中存储上传详细信息,只保存一个要调用的URL端点来检索数组....但后来我发现项目大小有限至64kb

我确信有一百万种方法可以做到这一点我想把它告诉SO社区,听听其他人推荐的内容,无论是网络服务还是本地存储....考虑性能,可扩展性,可维护性等等......

提前致谢!

更新:

只是为了澄清上面显示的数据只是'Y'值,因为它是时间采样的X值被视为数组中的位置....所以我不认为存储作为元组会有任何好处

4 个答案:

答案 0 :(得分:0)

您可以尝试Couchbase和ElasticSearch的元组。 Couchbase是非常快速的面向文档的NoSql数据库。 CB的数千次插入操作是正常的。物品尺寸限制为20MB。 “获取”操作的性能是几万。有一个缺点,你只能通过id查询数据(有“视图”,但我认为将它们调整到绘图将太困难了)。补偿这种缺陷可能是ElasticSearch,它可以非常快速地执行任何查询。 Couchbase和ElasticSearch中的格式数据是json文档。

答案 1 :(得分:0)

我刚遇到Google Cloud Datastore,它允许我存储单项Strings高达1Mb(未编入索引),似乎是Dynamo的一个很好的替代品

答案 2 :(得分:0)

如果您希望存储此类字符串,则可能需要使用S3(包含1个对象) 数组字符串),在这种情况下,您将通过启用存储桶来启用“备份” 版本

答案 3 :(得分:0)

可能您应该使用RedisSSDB,两者都旨在存储大型数据列表(数组)。这两个数据库之间的区别在于Redis只是内存(备份磁盘),但SSDB是基于磁盘的,并使用内存作为缓存。