这是Azure表中分区和行键的正确选择吗?

Rya*_*yan 2 database-design azure

我有一个存储用户在线状态的表.

columns(userid, IsOnline,date)
Run Code Online (Sandbox Code Playgroud)

如果用户在线,则Isonline bool标志为true,如果它脱机,则IsOnline bool为false.通过这种方式,我可以看到用户在哪个时间和哪个时间在线.

是否可以选择partitionKey:userId,Rowkey:事件的日期和时间

用户不能同时打开和关闭,因此rowkey应该是唯一的.我喜欢它,它将用户的所有数据保存在同一个分区上.还选择日期作为rowId使排序更有效?

Igo*_*rek 7

UserId是PartitionKey的一个很好的策略

关于RowKey,我建议使用格式化为最大位数的"DateTime.MaxValue.Ticks - dateOfEvent.Ticks".

这将使您的RowKey始终按降序排列,从而允许您选择用户的最新状态,而无需从所有分区获取数据

  • Azure Table Storage的工作方式是在检索数据时不能更改排序.它以递增的PK/RK方式存储.要检索的第一行是给定PK的最小RK.如果想要找出用户的最新状态并且RK是以ASC顺序存储的时间戳,则第一行将是最早的状态,因此数据的使用者必须在找到最新状态之前检索所有行.这有帮助吗? (2认同)