【问题标题】:How to structure a Azure Table to hold user messages如何构建 Azure 表来保存用户消息
【发布时间】:2012-02-02 03:11:19
【问题描述】:

我仍在努力了解使用 Azure Tables 的正确方法。我知道他们有一个分区键和一个行键,就是这样。其他所有内容都只是您保留在该行中的数据。

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

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

然后,我计划在成员访问网页时进行 AJAX 调用以获取成员消息。如果用户单击消息或关闭消息,那么我会将其从表中删除。非常 StackOverflowish。

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

到目前为止,这是我的想法:

PartionKey:MemberID
RowKey:???(不确定有什么)
列数据:消息数据包括任何链接和时间戳。也可能是观看次数。

我想不出我会在行键的单独索引中放入什么。时间戳可以正常工作,因此我可以正确地订购消息,但我认为我不会因此而物有所值。

【问题讨论】:

    标签: azure azure-storage


    【解决方案1】:

    我发现考虑选择分区和行键的最佳方法是考虑数据访问模式。如果您的访问模式是让单个行/实体代表系统中有意义的东西。在您的情况下,听起来像 userid/fileid 唯一地标识了实体。由此,您有三个选择:

    1. 分区键的用户ID,行键的文件ID
    2. 分区键为常数值,行键为 userid 和 fileid 的组合
    3. 行键为常数值,分区键为 userid 和 fileid 的组合

    那里的决定是找出其他访问模式。您是否要查询特定用户的所有文件?然后你会希望用户 ID 作为分区或行键。如果您只基于 fileid/userid 进行查询,那么这并不重要。

    埃里克

    【讨论】:

      【解决方案2】:

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

      用户实体 用户文件实体 FileMessage 实体

      每个 UserFile 有一个 FileMessage 还是可以有多个?听起来(根据您对删除逻辑的解释)每个文件只有一个 FileMessage。

      如果到目前为止我的假设是正确的并且是我的话,FileMessage 表将具有以下结构: 分区键:用户 ID RowKey:fileId(名称/url/等) 其他栏目:如你所见

      HTH

      【讨论】:

        【解决方案3】:

        我认为它是:Partition Key 是您想要拆分数据的方式,因此如果数据相关,您希望保持分区键相同。如果您正在处理大量数据,您可能希望使用分区键的日期。 Row Key 是索引,因此您将使用它来查询数据。

        【讨论】:

          猜你喜欢
          • 2015-09-19
          • 1970-01-01
          • 1970-01-01
          • 2012-10-11
          • 2020-12-23
          • 2014-01-22
          • 2020-04-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多