Azure表存储:为注释数据配置分区和行键的最佳方式



我对Azure表存储非常陌生,分区键的概念仍然是一个我还没有信心知道我是否正确进行的领域。下面是我提出的存储博客帖子评论数据的解决方案。我已经注释了所有内容,所以我希望我的想法是基于代码的自我解释。

  • 行和分区键看起来ok吗?
  • 我真的需要一个名为"CommentId"的字段吗?(在我看到的例子中,似乎没有一个特定的ID字段,就像在传统的SQL存储中一样。)
  • 表的作用域应该是什么?(我目前设想一个表,用于所有博客文章的所有评论。)

谢谢你的想法,我可能没有考虑到…

public class CommentEntity : TableEntity
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="CommentId">Unique identifier for the comment</param>
    /// <param name="ReferencedBlogPostId">Identifier representing the post which this comment references</param>
    public CommentEntity(int CommentId, int ReferencedBlogPostId)
    {
        this.PartitionKey = ReferencedBlogPostId.ToString();
        this.RowKey = CommentId.ToString();
    }
    public CommentEntity() { }
   // public int CommentId { get; set; } (Moved to above constructor)
    // public int ReferencedBlogPostId { get; set; } (Moved to constructor)
    //If this is in reply to another comment, reference that CommentId here
    public int ParentCommentId { get; set; }
    //Time that the post was made
    public DateTime PostedTime { get; set; }
    //An Id value representing the author of the comment in another datastore
    public int AuthorId { get; set; }
}

我觉得你的设计看起来不错。这取决于你如何找回它们。在您的示例中,您有一个博客系统,因此我假设您需要单独检索您的博客及其所有评论(以及子评论),那么您可以将博客id作为分区键并在一个查询中检索所有评论,并且它还确保同一博客下的所有评论都存储在azure数据中心的相同数据集群中,具有最大的性能。

如果您需要更高的性能,我建议您也存储作者名称,以减少应用程序层中的连接操作

相关内容

  • 没有找到相关文章

最新更新