【问题标题】:Storing the data to Azure storage, blob or table?将数据存储到 Azure 存储、blob 或表?
【发布时间】:2018-01-11 22:40:35
【问题描述】:

我有一个带有数据库的 Web 应用程序,其中消费数据存储在 SQL 数据库中。我想将超过 3 个月的数据数据合并到 SQL 数据库中,并将未合并的数据保存到存储中。数据不会经常被访问,因为整合的信息将在 SQL 中可用,这只是为了某些人认为会出错的目的。使用表存储还是blob存储更好?感谢您的建议。

数据将被单独访问或基于它们来自哪个建筑物。比如我有A楼,有人来想知道半年前一周或一天的详细消费情况。我将去存储并获取数据。 SQL 中的数据每 5 分钟存储一次。

【问题讨论】:

  • 您能否分享有关如何使用这些数据的更多详细信息。答案在很大程度上取决于此。请编辑您的问题并提供这些详细信息。
  • 现在清楚了吗?
  • 现在好多了。谢谢!
  • 您确定要引入一个复杂的过程来归档和取消归档数据吗?我建议您保留数据原样以便于访问,但使用弹性数据库将旧数据推送到冷(廉价)存储。成本更低。访问时需要零干预
  • 假设我永远不会使用这些数据,但我想知道如果出现这个问题会发生什么,因为现在他们说一些想法,但半年后他们可能会改变意见。暂时无法从服务器访问数据

标签: sql .net azure azure-storage


【解决方案1】:

您可以为此使用 blob 存储或表存储,但我更倾向于使用表存储来存储这些数据。

原因是您需要某种仅由表存储提供的查询功能。使用 Blob 存储,您需要在客户端下载所有相关数据,解析该数据以创建某种集合,然后查询该集合。使用表存储,您可以执行服务器端查询。

如果您要使用表存储,我的建议是使用date/time 值(具有日期精度)作为PartitionKey。这将使按日期/时间搜索数据的速度更快。

如果您要使用 blob 存储,我的建议是使用 Cool Storage 帐户来保存这些数据。由于您很少需要此数据,因此将其存储在 Cool Storage 帐户中会比常规存储帐户便宜。

【讨论】:

  • 我的第一个意见是使用 tbuilding 标识符作为分区键,将日期时间作为行键,您认为这样更好吗?
  • 您会一直查询tbuildingdatetime 吗?如果是这种情况,那么您可以采用您的方法。
  • 99% 是的,那么插入表存储呢?这两种可能性会有相同的表现吗?
  • 取决于单个分区中有多少数据。我仍然会使用PartitionKey 作为datetimeRowKey 作为tbuilding + some random value,因为这样做您将创建更多的分区,每个分区中的数据更少。因此搜索会更快。
猜你喜欢
  • 2019-04-18
  • 2021-03-19
  • 1970-01-01
  • 2023-03-07
  • 2016-08-30
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 2020-08-25
相关资源
最近更新 更多