我仍然试图了解使用Azure表的正确方法。我知道他们有一个分区键和一个行键,就是这样。其他所有内容都只是您保留在该行中的数据。
使用案例
我的网络应用程序获取用户上传的文件,将它们放入队列,然后让工作人员处理队列并对这些文件进行分析。
我想根据处理这些文件时发现的内容,将有关这些文件的消息放入Azure表中。
然后,我计划进行AJAX调用,以便在访问网页时获取成员消息。如果用户点击消息或关闭消息,那么我将从表中删除它。非常StackOverflowish。
问题
我的问题是如何在Azure表中最好地存储这些消息。
到目前为止,这是我的想法:
PartionKey :会员ID
RowKey :???(不知道该怎么办)
列数据:消息数据,包括任何链接和时间戳。也许一个观点也很重要。
我想不出我会把什么放在行键的单独索引中。时间戳可以正常工作,所以我可以正确地订购消息,但我认为我不会为此付出太大的代价。
答案 0 :(得分:2)
我发现最好考虑选择分区和行键是考虑数据访问模式。如果您的访问模式是单个行/实体表示系统中有意义的内容。在您的情况下,听起来像userid / fileid唯一标识实体。从这里,您有三个选择:
关于那里的决定是要弄清楚其他的访问模式。您是要查询特定用户的所有文件吗?那么你会希望userid作为分区或行键。如果您只是基于fileid / userid进行查询,那么这并不重要。
埃里克
答案 1 :(得分:0)
在考虑实际存储之前,您应该尝试考虑一下您将拥有哪些实体。 听起来像是这样的:
用户实体 UserFile实体 FileMessage实体
每个UserFile有一个FileMessage还是有多个?听起来(通过您对删除逻辑的解释)每个文件只有一个FileMessage。
如果到目前为止我的假设是正确的,如果是我的话,FileMessage表将具有以下结构: PartitionKey:userId RowKey:fileId(name / url / etc) 其他专栏:如您所见
HTH
答案 2 :(得分:0)
我认为它是:分区键是你想要打破数据的方式,所以如果数据是相关的,你想保持分区键相同。如果您正在使用大量数据执行某些操作,则可能需要使用类似于分区键的日期。行键是索引,因此您将使用它来查询数据。