C# 在Microsoft Azure中为用户帐户数据库设置分区和行键

C# 在Microsoft Azure中为用户帐户数据库设置分区和行键,c#,azure,azure-table-storage,azure-storage,C#,Azure,Azure Table Storage,Azure Storage,我现在只是在一个小问题上有点困惑。我想设置一个accounts表,其中所有注册用户数据都存在。此表将包含电子邮件、地址、密码的SRP值等内容 我遇到的一个小问题是如何设置行键和分区键?我曾考虑在分区键中包含区域,但是,如果用户更改了区域等,我将如何知道如何查询它,因为据我所知,您需要行和分区键来查询某些内容 如果您的用户名是固定的,并且无法更改,感谢您抽出宝贵的时间。然后,解决这个问题的一个简单方法(我解决它的方法)是将用户名的前两个或三个字符作为分区键。这样就可以对数据进行分区。搜索一些东西也

我现在只是在一个小问题上有点困惑。我想设置一个accounts表,其中所有注册用户数据都存在。此表将包含电子邮件、地址、密码的SRP值等内容

我遇到的一个小问题是如何设置行键和分区键?我曾考虑在分区键中包含区域,但是,如果用户更改了区域等,我将如何知道如何查询它,因为据我所知,您需要行和分区键来查询某些内容


如果您的用户名是固定的,并且无法更改,感谢您抽出宝贵的时间。然后,解决这个问题的一个简单方法(我解决它的方法)是将用户名的前两个或三个字符作为分区键。这样就可以对数据进行分区。搜索一些东西也很容易。比较PartitionKey和RowKey。如果用户的用户名错误。你可以马上告诉他们有什么不对。

表存储,你应该首先考虑你的查询和更新模式,然后设计基于这个的关键方案。p> 您需要查询用户名以外的任何内容吗?也许是电子邮件?如果是这样,您可能希望将其包含在密钥中

您是否需要批量更新多个用户?然后它们需要在同一个分区中


如果您一次只需要对一个用户进行操作,并且您将始终拥有要查询的用户名,那么只需对PartitionKey使用用户名即可

使用用户名是一个好主意,但我会更进一步,将PK设置为用户名,并将RK设置为空。分区不能太小,但可以太大。这不是一个好主意,你会扼杀分区的想法。多个分区将产生与一个分区和多个行键类似的结果。明智地划分!我在桌上存储方面的经验与此相矛盾。我曾经遇到过分区太大的问题,但没有一个分区太小的问题,Brian在回答中提出了警告。@knightpfhor我的建议来自我自己面临的问题。当然,您需要考虑这样一个事实,即您将如何进行查询。但是,正如Brian H.Prince所建议的那样,数百万个小分区和每个分区1行键并不是PK的好用途。