问题标签 [azure-table-storage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2523 浏览

azure - 将字符串字段转换为 Azure 表存储中的日期时间字段

我在 Azure 表中有一个字段,它以字符串格式保存日期时间。我想用 DateTime 字段替换它并转换字符串列中的值。解决这个问题的最佳方法是什么?

在 SQL 中,我会通过创建一个新列并运行更新语句来做到这一点......

0 投票
4 回答
13918 浏览

unit-testing - 如何在 .NET 中伪造 Azure 表存储以进行单元测试?

我正在开发一个使用 Azure 表存储的系统。在其他系统(例如,SQL、基于文件的等)中,我可以编写一个假的来测试我的数据持久性逻辑。但是,我看不到为 Azure 表服务创建假的简单方法。

我可以创建一个行为相同的新 IIS 项目,但这不是编写单元测试的好方法,它更像是一个集成测试。

有关如何对使用 Azure 表存储客户端的数据访问代码进行单元测试的任何想法?

0 投票
1 回答
278 浏览

twitter - 您将如何使用 Azure 表存储来处理类似 Twitter 的应用程序?

我正在考虑一个非常简单的类似 Twitter 的应用程序,我正在考虑仅支持 twits 和时间线。

但是我的脑袋,已经习惯了关系模型……无法在 Azure 表或 noSql 中想出一个合理的模型。基本上,我在想:

  • 用户可以将其他用户添加为好友。
  • 用户可以编写消息(最多 200 个字符)。
  • 消息总是按时间顺序显示,最新的在前。
  • 用户页面显示他最近的 20 条消息。
  • 主页(时间线)显示来自他和他的朋友的最后 20 条消息。

很简单:D

如果我将所有消息放在一个表中,并将 userId 作为分区键......一切都很简单,但是......我不认为该解决方案可以很好地扩展。但是其他解决方案使时间线页面非常复杂或非常低效,因为它不是要从您的每个朋友那里获取最新的 20 条消息,而是要从所有人那里获取最新的 20 条消息……这让我大吃一惊。可能是您有一个非常讨厌的朋友,而最近的 20 条消息来自他 :D

以 Azure 表格方式存储此信息的可扩展且有效的方法是什么?

提前致谢。

0 投票
1 回答
832 浏览

azure-storage - 在 Azure 中重复取决于日期时间的行键的概率是多少

是否有机会在这样构造的 Azure 表中重复 RowKey?

这是同样的问题:

在我们为 Ticks 获得新值之前,我的 webrole 会创建两条记录吗?

我想按时间倒序返回实体。该表预计不会不断添加新实体,但希望会有很多插入事务。

解决方案

好的,感谢 Mark Seeman,这是我遇到的解决方案:

string.Format("{0:d19}+{1}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks, Guid.NewGuid().ToString("N"))

使用 Guid,我确定不会重复行键。

0 投票
1 回答
1052 浏览

azure - 如何为已经具有唯一属性的表选择 Azure Table ParitionKey 和 RowKey

我的实体是一个键值对。90% 的时间我将根据键检索实体,但有 10% 的时间我还会进行反向查找,即我将按值搜索并获取键。

键和值都保证是唯一的,因此它们的组合也保证是唯一的。

使用 Key 作为 PartitionKey 和 Value 作为 RowKey 是否正确?

我相信这也将确保我的数据在服务器之间完美负载平衡,因为 ParitionKey 是唯一的。

上述决定有问题吗?在任何情况下,拥有硬编码的分区键是否可行?即所有行都有相同的分区键?并保持 RowKey 唯一?

0 投票
1 回答
662 浏览

azure-storage - 将实体插入多个 Azure 表存储分区(同一个表)并知道哪些插入失败(如果有)

我设置了一个 Azure Worker Role,用于从一些外部 Web 服务获取信息,将其解析为几种不同的实体类型,并将这些实体存储在 Azure 表存储中。至关重要的是,这些实体中的大多数(如果不是全部)都插入到表中它们自己的分区中。

我正在使用带有对 AddObject(EntityToBeInserted) 调用的 TableServiceContext 扩展类,以便在创建新实体时将它们附加到 tableservicecontext。目前,我随后调用 TableServiceContext.SaveChangesWithRetries(SaveChangesOptions.None) 将这些实体保存到各自分区中的表中。这一切都很好。

我的问题是:当它不能正常工作时会发生什么?我可以通过使它们的行键和分区键不唯一来导致 1+ 个实体不被保存,但是我围绕该行为捕获的错误消息并不表明哪个实体失败,只是存在错误其中之一。

我应该如何将实体从 Worker Role 保存到 Table Storage,其中每个实体都进入自己的分区(假设在其中一个保存调用中插入了 2-30 个实体),这样如果其中一个或多个插入失败,我会至少能够知道它是哪一个?这些操作对时间非常敏感,因此我不能遗憾地依赖长时间运行的重试选项来等待相关存储节点再次可用。

谢谢你,亚历克斯

0 投票
2 回答
467 浏览

azure - 开发存储中具有不同实体的 Azure 表?

仍在寻找这个问题的答案:

据我了解,Azure 存储表中的不同实体之间不存在任何结构或类型相似性的要求。但是开发存储呢?我最近读到这不是真的,因为开发存储需要一个模式,因为它使用 SQL Server Express 存储数据。

有人可以证实这一点。此外,如果是这种情况,那么我如何使用 Dev 存储对生产中的表中的不同实体进行建模?

提前致谢

0 投票
4 回答
3708 浏览

azure - Azure 表存储 - 我的表扫描速度有多快?

每个人都警告不要查询 Azure 表存储 (ATS) 中的 RowKey 或 PartitionKey 以外的任何内容,以免被迫进行表扫描。有一段时间,当我需要查询其他内容时,这使我无法尝试提出完全正确的 PK 和 RK 并在其他表中创建伪二级索引。

但是,我突然想到,当我认为合适的时候,我通常会在 SQL Server 中进行表扫描。

所以问题就变成了,我能以多快的速度对 Azure 表进行表扫描。这是一个以实体/秒为单位的常数,还是取决于记录大小等。如果您想要一个响应式应用程序,是否有一些经验法则来说明有多少记录太多而无法进行表扫描?

0 投票
2 回答
530 浏览

azure - Azure TableServiceContext 文件中有多个表还是一个表?

我正在创建一个使用大约 10 个 ttorage 表的 Azure 应用程序。我想采用最佳实践,但我不确定是否应该只有一个文件包含 dataservicecontext.cs 文件中的所有表,或者是否应该为每个表创建一个不同的文件。在我看来,这两种方式都能达到同样的效果。还有其他人对最佳实践有什么看法吗?

0 投票
6 回答
5917 浏览

visual-studio-2010 - Azure 表存储、WCF 服务和枚举

这是我的问题。定义订单的类有一个名为 的属性PaymentStatus,它的enum定义如下:

稍后,在类本身中,属性定义非常简单:

但是,如果我尝试将订单保存到 Azure 表存储,则会收到以下异常:

在这一点上,我认为使用enum是不可能的,但一个快速的谷歌搜索返回了这个:http ://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/7eb1a2ca-6c1b-4440-b40e-012db98ccb0a

此页面列出了两个答案,其中一个似乎忽略了这些问题,并建议enum在 Azure 存储中使用是可以的。

现在,我不需要将 存储enum在 Azure 表存储中,我也可以存储相应的int,但是,我确实需要在 WCF 服务中公开此属性。

我已经尝试使用该属性get并从存储set的 中返回,并通过使用my 上的事件从 Azure 中删除该属性,但是在触发该实体的事件之前我得到了该异常。enumintegerWritingEntityDataContext

在这一点上,我很茫然,我不知道我还能做些什么来将 WCF 中的这个属性enum作为int.