我的建议是为您的项目使用 Azure 表存储。它“脏”便宜,并且能够存储大量数据。
提出具体要求:
立即保存每秒生成的所有数据,最好在一个请求中保存。
您可以使用Entity Group Transactions
将数据存储在一个请求中。有一些限制,所以我建议你阅读一下。
即使在数值模拟运行期间也能够读取任何存储的数据(使用例如 javascript)。
由于 Windows Azure 表存储是基于 REST 的服务,因此您也可以使用 JavaScript 来获取数据,尽管我实际上建议使用Shared Access Signatures
它来查询数据,因为它更安全。
将温度、压力、速度等分开。我想在一个通话中阅读所有压力,而无需阅读速度等。
在全局级别上,存储应拆分为项目,项目应包含温度“文件”、压力“文件”等,每个“文件”应包含一系列数字。
这就是事情变得有趣的地方。基本上,您要做的是对数据进行非规范化,而 Azure 表存储就是为此而生的。你所说的“文件”,我称之为“表”。所以会有“温度”表和“压力”表等等。我推荐的方法是当您第一次收集数据时将数据保存在 Windows Azure 队列中的消息中,然后让另一个进程(可能是工作角色)拉出此消息并通过转换所需的数据将数据推送到不同的表中对于每张桌子。
它应该很便宜。
Windows Azure 表存储很便宜。基本上,您需要为存储的数据量、针对服务执行的事务数量以及流出数据中心的数据付费。请访问Windows Azure 定价页面了解更多详细信息。
我不需要任何高级功能->它应该或多或少地表现为文件系统中的文件
Azure 表存储本质上是一个基于键值对的数据存储,因此它相对易于使用。
警告词
Azure 表存储与您的常规 SQL 表有点不同,因为您没有在表上创建额外索引(称为二级索引)的奢侈。您只能在表上获得一个索引(在 PartitionKey/RowKey 上)。因此,通过考虑如何从表中读回数据,您必须非常明智地选择“PartitionKey/RowKey”值,这一点非常重要。
您可能会发现这些链接很有用:
http://blogs.msdn.com/b/windowsazurestorage/archive/2012/11/04/windows-azure-s-flat-network-storage-and-2012-scalability-targets.aspx
http://blogs.msdn.com/b/windowsazurestorage/archive/2010/11/06/how-to-get-most-out-of-windows-azure-tables.aspx
http://channel9.msdn.com/Events/Build/2012/4-004
Azure表存储分区设计