如何构造Azure表以保存用户消息

如何构造Azure表以保存用户消息,azure,azure-storage,Azure,Azure Storage,我仍在尝试正确使用Azure表的方法。我知道他们有一个分区键和一个行键,就是这样。其他一切都只是您保存在该行中的数据 用例 我的web应用程序获取用户上传的文件,将它们放入队列,然后让工作人员滚动处理队列并对这些文件进行分析 我想根据我们处理这些文件时发现的内容,将有关这些文件的消息放在Azure表中 然后,我计划在成员访问网页时调用AJAX以获取消息。如果用户单击消息或关闭消息,则我将从表中删除它。非常夸张 问题 我的问题是如何在我的Azure表中最好地存储这些消息 以下是我目前的想法: Pa

我仍在尝试正确使用Azure表的方法。我知道他们有一个分区键和一个行键,就是这样。其他一切都只是您保存在该行中的数据

用例
我的web应用程序获取用户上传的文件,将它们放入队列,然后让工作人员滚动处理队列并对这些文件进行分析

我想根据我们处理这些文件时发现的内容,将有关这些文件的消息放在Azure表中

然后,我计划在成员访问网页时调用AJAX以获取消息。如果用户单击消息或关闭消息,则我将从表中删除它。非常夸张

问题
我的问题是如何在我的Azure表中最好地存储这些消息

以下是我目前的想法:

PartionKey:成员ID
RowKey:???(不确定要吃什么)
列数据:包含任何链接和时间戳的消息数据。也可能是视图计数


我想不出我会在一个单独的索引中为行键添加什么。时间戳可以使我正确地排序消息,但我认为这不会带来太大的回报。

在考虑实际存储之前,您应该试着考虑您将拥有哪些实体。 听起来像这样:

用户实体 用户文件实体 文件消息实体

每个用户文件是否有一条FileMessage,或者是否可以有多条?听起来(根据您对删除逻辑的解释)每个文件只有一条FileMessage

如果到目前为止我的假设是正确的,如果是我,FileMessage表将具有以下结构: PartitionKey:userId RowKey:fileId(名称/url/etc) 其他栏目:如您所见


HTH

我发现,考虑分区键和行键选择的最佳方法是考虑数据访问模式。如果您的访问模式是让单个行/实体表示系统中有意义的内容。在您的例子中,is听起来像是唯一标识实体的userid/fileid。从中,您有三个选项:

  • 分区键的userid,行键的fileid
  • 分区键为常量,行键为userid和fileid的组合
  • 行键为常量,分区键为userid和fileid的组合
  • 关于这一点的决定是找出其他的访问模式。您是否要查询特定用户的所有文件?然后,您需要将userid作为分区或行键。如果您只会基于fileid/userid进行查询,那么这并不重要


    Erick

    我认为它是这样的:分区键是您想要将数据分离出来的方式,因此如果数据是相关的,那么您希望保持分区键不变。如果您正在处理大量数据,您可能希望使用分区键的日期。行键是索引,因此您将使用它来查询数据