【发布时间】:2017-06-30 07:14:32
【问题描述】:
我搜索了将传感器输出数据存储在 azure 表存储中的最佳做法,但没有得到最佳答案。我目前正在开展一个项目,该项目包括将传感器数据存储到 azure 表存储。目前我使用分区键作为 Sensor ID 。每一秒我都在存储传感器输出。目前正在使用大约 100 个传感器。因此,想象一下每天都在存储大量数据。因此,当我按日期搜索特定传感器数据时,我的 Web 应用程序的性能变得很慢。有没有更好的方法来提高 Web 应用程序的性能?如何将传感器 ID 更改为日期作为分区键?代码在这里并不重要。我需要一个合乎逻辑的解决方案.. 可能这个问题会帮助很多正在处理这种情况的开发人员..
更新
每个传感器提供 10 个不同的输出和日期,即输出日期时间。因此它们位于每个传感器 ID 的同一行中。我正在使用日期范围和传感器 ID 获取传感器数据
分区键-传感器ID、RowKey-日期时间、10个输出列和输出日期
这是我的代码
var query = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, sensorID);
var dateFilter = TableQuery.CombineFilters(
TableQuery.GenerateFilterConditionForDate("outputdate", QueryComparisons.GreaterThanOrEqual, Convert.ToDateTime(from)),
TableOperators.And,
TableQuery.GenerateFilterConditionForDate("outputdate", QueryComparisons.LessThanOrEqual, Convert.ToDateTime(to))
);
query = TableQuery.CombineFilters(query, TableOperators.And, dateFilter);
var rangeQuery = new TableQuery<TotalizerTableEntity>().Where(query);
var entitys = table.ExecuteQuery(rangeQuery).OrderBy(j => j.date).ToList();
outputdate 表示输出生成时间。这是日期时间。所有输出都有相同的输出时间。
【问题讨论】:
-
请用以下内容更新您的问题:1) 选择
PartitionKey和RowKey的当前设计是什么,即表中存储的当前值是什么以及 2) 你打算如何查询数据?请列出所有可能的查询场景。谢谢! -
你使用什么行键?
-
行键是日期时间
-
SHADOWS....请使用所有详细信息更新您的问题,而不是将它们作为 cmets。
-
感谢您更新问题。但是它仍然不包括我要求的东西。您是否将传感器 ID 存储为 PartitionKey?当您获得输出(您提到的 10 个)时,它们是否都具有相同的日期/时间?您还没有回答您打算如何查询这些数据?是按传感器 ID 和日期/时间范围还是仅按日期/时间范围?请不要害羞,并提供尽可能多的细节:)。这将有助于我们为您提供一些替代方案。