旨在处理 Windows Azure Table 存储帐户中的多参数详细信息
Design to Handle multi-parameter details in Windows Azure Table Storage Accounts
我正在设计一个 Web 应用程序 - 仪表板 - 以显示来自 Table 存储的 UI 上的数据\图表。
我们现在有大约 20 个参数预计会进入 Table 存储 - 每个参数都有一个相关的值、质量和 time_Received 与之相关联。
此应用的构建方式应使其在有
时能更好地适应
新参数进入存储Table
涉及新客户端 - 这意味着存储帐户可能不同,但使用相同的应用程序可以针对不同的参数集为另一个客户端执行类似的activity
我的查询
选项1
我是否应该为每个参数设置一个 table(列 - 值、质量、Time_Received、PartitionKey、RowKey、时间戳)
用不同的 Table 名字说 Param1_Table, Param2_Table ...
或者
选项2
我应该有一个 table,所有参数值都在同一个 table 中吗(相同的列 = Value、Quality、Time_Received、PartitionKey、RowKey)- 这可以用 PartitionKey(如 param_!_PK,param2_PK...)和 rowKey
区分
应用的预期行为
并非所有参数都需要(或允许)用户订阅
系统应该以灵活的方式运行,用户应该可以选择 select\deselect 显示参数。
因此,在某个时间点,配置的系统应该显示 Table 存储中所选参数详细信息的 data\Graph。
在 Azure Table 服务中,PartitionKey 和 RowKey 值被索引以创建一个聚集索引,可以实现快速查找,而 Azure Table 服务不允许我们创建任何二级索引。所以建议大家充分利用PartitionKey和RowKey。我们可以使用这两列来存储我们需要经常查询的数据。
例如,如果您只为所有参数创建一个 table,则可以将参数名称保存为 PartitionKey,将参数值保存为 RowKey。如果为每个参数创建一个 table,则可以将参数值保存为 PartitionKey,将质量保存为 RowKey。为每个参数创建一个 table 将使一个额外的列(质量)被索引。
为每个参数创建一个 table 的其他好处
多个 table 可帮助您从逻辑上组织您的实体,它可以帮助您使用访问控制列表管理对数据的访问,并且您可以使用单个存储操作删除整个 table .
为所有参数创建一个table的优势
您可以在一次查询中获取交叉参数数据。如果您需要跨实体类型的原子事务,则需要将这些多个实体类型存储在同一 table 中的同一分区中。
根据您的描述,为每个参数创建一个 table 将更适合您的场景。
In this case as u have mentioned if I give param value as PartitionKey(PK) and quality as RowKey(RK) at point of time wont it be likely to have a duplicate? being that =>Expected value for Parameter_Value will be in a number range =>Expected value of quality is Good, Bad ... Is it so?
将参数值设置为 PR 只是一个演示,它向您展示了选择一个 table 或多个 table 之间的区别。
选择哪一列作为PK和RK取决于这些列的值组合是否唯一以及将使用什么查询语句从您的table中查询数据。由于 PK 和 RK 被索引,根据 PK 和 RK 的查询将被高效地执行。例如,table经常按参数值查询,time_Received,如果这些列的值组合是唯一的,则最好将这些列设置为PK和RK。
我正在设计一个 Web 应用程序 - 仪表板 - 以显示来自 Table 存储的 UI 上的数据\图表。
我们现在有大约 20 个参数预计会进入 Table 存储 - 每个参数都有一个相关的值、质量和 time_Received 与之相关联。
此应用的构建方式应使其在有
时能更好地适应新参数进入存储Table
涉及新客户端 - 这意味着存储帐户可能不同,但使用相同的应用程序可以针对不同的参数集为另一个客户端执行类似的activity
我的查询
选项1
我是否应该为每个参数设置一个 table(列 - 值、质量、Time_Received、PartitionKey、RowKey、时间戳) 用不同的 Table 名字说 Param1_Table, Param2_Table ... 或者
选项2
我应该有一个 table,所有参数值都在同一个 table 中吗(相同的列 = Value、Quality、Time_Received、PartitionKey、RowKey)- 这可以用 PartitionKey(如 param_!_PK,param2_PK...)和 rowKey
区分应用的预期行为
并非所有参数都需要(或允许)用户订阅 系统应该以灵活的方式运行,用户应该可以选择 select\deselect 显示参数。 因此,在某个时间点,配置的系统应该显示 Table 存储中所选参数详细信息的 data\Graph。
在 Azure Table 服务中,PartitionKey 和 RowKey 值被索引以创建一个聚集索引,可以实现快速查找,而 Azure Table 服务不允许我们创建任何二级索引。所以建议大家充分利用PartitionKey和RowKey。我们可以使用这两列来存储我们需要经常查询的数据。
例如,如果您只为所有参数创建一个 table,则可以将参数名称保存为 PartitionKey,将参数值保存为 RowKey。如果为每个参数创建一个 table,则可以将参数值保存为 PartitionKey,将质量保存为 RowKey。为每个参数创建一个 table 将使一个额外的列(质量)被索引。
为每个参数创建一个 table 的其他好处
多个 table 可帮助您从逻辑上组织您的实体,它可以帮助您使用访问控制列表管理对数据的访问,并且您可以使用单个存储操作删除整个 table .
为所有参数创建一个table的优势
您可以在一次查询中获取交叉参数数据。如果您需要跨实体类型的原子事务,则需要将这些多个实体类型存储在同一 table 中的同一分区中。
根据您的描述,为每个参数创建一个 table 将更适合您的场景。
In this case as u have mentioned if I give param value as PartitionKey(PK) and quality as RowKey(RK) at point of time wont it be likely to have a duplicate? being that =>Expected value for Parameter_Value will be in a number range =>Expected value of quality is Good, Bad ... Is it so?
将参数值设置为 PR 只是一个演示,它向您展示了选择一个 table 或多个 table 之间的区别。
选择哪一列作为PK和RK取决于这些列的值组合是否唯一以及将使用什么查询语句从您的table中查询数据。由于 PK 和 RK 被索引,根据 PK 和 RK 的查询将被高效地执行。例如,table经常按参数值查询,time_Received,如果这些列的值组合是唯一的,则最好将这些列设置为PK和RK。