Хранилище таблиц Azure: лучший способ настроить раздел и ключ строки для данных комментариев?

Я очень новичок в хранилище таблиц Azure, и концепция ключа секции по-прежнему является областью, в которой я еще не уверен, правильно ли я действую. Ниже предложено мое решение для хранения данных комментариев к сообщениям в блоге. Я все прокомментировал, поэтому надеюсь, что мои мысли понятны из кода.

  • Ключ строки и раздела выглядит нормально?
  • Действительно ли мне нужно поле с именем «CommentId»? (В примере, который я видел, не было определенного поля идентификатора, как в традиционном хранилище 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; }
}

person BenjiFB    schedule 14.03.2014    source источник


Ответы (1)


Ваш дизайн выглядит хорошо, я думаю. Это зависит от того, как вы собираетесь их извлекать. В вашем примере у вас есть система блогов, поэтому я предположил, что вам нужно получить только свой блог со всеми его комментариями (а также подкомментариями), тогда вы можете использовать идентификатор блога в качестве ключа раздела и получить все комментарии в одном запросе, и это также убедитесь, что все комментарии в одном и том же блоге хранятся в одном кластере данных в центре обработки данных Azure с максимальной производительностью.

Если вам нужно больше производительности, я хотел бы предложить вам также сохранить имя автора, чтобы уменьшить операцию соединения на уровне вашего приложения.

person Shaun Xu    schedule 14.03.2014
comment
Спасибо, Шон. Не могли бы вы уточнить для меня, это моя ответственность за создание CommentId в то время, когда я создаю объект Comment? - person BenjiFB; 14.03.2014