2

在您自己的观点中,您如何在 azure 中逻辑地设计表格?特别是当表可以与其他表具有一对多关系时。

这是给定的数据:

Given 是product表,其中PartitionKeyRowkey
wherePartitionKey用作IDOwner (the owner of the product) plus the category

i.e: hashedowneridstringtype_Cellphone

Rowkey作为unique id of the product.

i.e: S6102DXMA2  

那是azure table的现有设计,我必须在下面创建以下表格。而且由于我对如何在 azure 中反映它没有足够的想法,我不得不使用关系表来设计它:

产品可以有用户的评论。

----------------------------------------------------------------------------------
Review table

Fields:
    ReviewID    - long
    Title       - string
    Review      - string
    OwnerID     - long
    DatePosted  - Date
---------------------------------------------------------------------------------- 
ProductReview table

Fields:
    ProductID   - long
    ReviewID    - long
----------------------------------------------------------------------------------

用户可以对评论发表评论。

----------------------------------------------------------------------------------
Comment table

Fields:
    CommentID   - long
    Comment     - string
    OwnerID     - long
    CommentDate - date
    EmailUpdate - bool  
----------------------------------------------------------------------------------
    CommentReview table

Fields:
    ReviewID    - long
    CommentID   - long
----------------------------------------------------------------------------------  

用户可以对评论、评论和产品进行评分。

----------------------------------------------------------------------------------
Rating table

Fields:
    RatingID    - long
    Points      - double
    RatedDate   - date
    OwnerID     - long
----------------------------------------------------------------------------------
CommentRating table

Fields:
    CommentID   - long
    RatingID    - long
----------------------------------------------------------------------------------
ProductRating table

Fields:
    ProductID   - long
    RatingID    - long
----------------------------------------------------------------------------------  

在 azure 中设计表格时我应该考虑哪些事情?

4

1 回答 1

2

在 Azure 中设计存储表时,您应该考虑预期要针对该表运行的查询。您需要快速执行哪些查询,哪些查询可以减慢,它们执行的频率,它们需要扩展的程度等。

假设频繁查询是返回给定产品的按时间排序的评论列表,我将从构建评论表开始,如下所示:

Review table

PartitionKey: ProductID
RowKey: InvertedDatePosted+ReviewID

Fields:
    ReviewID    - long
    Title       - string
    Review      - string
    DatePosted  - Date
    OwnerID     - long

如果您按评级排序,那么您可能需要 RowKey 中的评级,如果您按评级或日期排序,那么您可能需要 2 个单独的评论表,一个按日期键入,另一个按评级键入。

鉴于表连接相对较慢,您应该尽量减少它们发生的频率。实现此目的的一种方法是对数据进行非规范化,例如,在每条评论中包括您的评论所有者名称和图像 url。这意味着获取评论列表的查询不必加入来获取评论者的详细信息,但是当评论者更改他的名字时更新会慢得多。

Review table

Fields:
    ReviewID    - long
    Title       - string
    Review      - string
    DatePosted  - Date
    OwnerID     - long
    OwnerName   - string
    OwnerImgUrl - string

作为替代方案,您可能还需要考虑使用围绕 ProductID 水平扩展的联合 Azure SQL 数据库。

于 2013-07-03T23:01:35.270 回答