- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名自由职业者,目前正在开发我的一款游戏,并尝试使用 Azure 表服务在 Azure 表中记录我的用户移动。该游戏基于纸牌。
流程是这样的:
许多用户(UserId)将在一张 table (TableId)上玩。 table 上的每个游戏都会有一个唯一的 GameId。每个游戏中可能有多个具有唯一 DealId 的交易。同一张 table 上可以有多个具有相同 gameId 的交易。此外,每个用户在单个游戏中都会有相同的 DealId。
获胜者是在玩家多次机会后决定的。
问题:
我可以将 TableId 作为 PartitionKey,但我不确定为 RowKey 选择什么,因为 TableId 和 RowKey 的组合(GameId/UserId/DealId)在表中应该是唯一的。我可以有这样的条目:
TableId GameId DealId UserId 时间戳1 201 300 123451 201 300 12567
也许我能做的是创建 4 个 Azure 表,如下所示,但我做了很多重复工作;另外,我将无法触发点查询,如 https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/#guidelines-for-table-design 中所述。
GameLogsByTableId——这会将 TableId 作为 PartitionKey,将 GUID 作为 RowKeyGameLogsByGameId -- 这会将 GameId 作为 PartitionKey,将 GUID 作为 RowKeyGameLogsByUserId -- 这会将 UserId 作为 PartitionKey,将 GUID 作为 RowKeyGameLogsByDealId -- 这会将 DealId 作为 PartitionKey,将 GUID 作为 RowKey
请问有什么想法吗?
TableId、GameId、DealId、UserId 格式较长。
我想查询数据,以便
最佳答案
根据我迄今为止对 Azure Tables 的了解,我相信您的方向是正确的。
但是有一些事情我想提一下:
您可以使用单个表来存储所有数据
尽管这种方法在逻辑上很好地分离了数据,但您实际上并不需要使用单独的表来存储每种类型的数据。如果需要,您可以将它们存储在一个表中。如果您使用单个表,由于这些 id(游戏、表、用户和交易)是数字,我建议为值添加适当的前缀,以便您可以很好地识别它们。例如,当指定表示游戏 Id 的 PartitionKey 时,您可以在该值前添加 G|
前缀,以便您知道它是游戏 Id,例如G|101
。
用 0
预先填充您的 Id 值,使它们的字符串长度相等您提到您的 id 值很长。但是 PartitionKey
值是 string
类型。我建议预先填充这些值,使它们的长度相等。例如,将 Game Id 存储为 PartitionKey 而不是将其存储为 1
、2
、103
等时,请将它们存储为 00000000001
,00000000002
,00000000103
。这样,当您列出所有 Id 时,它们将按正确的顺序排序。如果不进行预填充,您将得到的结果为 1, 10, 11, 12....19, 20。
您将失去交易支持
由于您使用的是多个表(甚至是具有不同 PartitionKeys 的单个表),因此您将无法使用 Azure 表中提供的实体批量事务
,并且所有插入都需要按照以下方式完成原子操作。由于每个操作都是网络调用,并且可能会失败,因此您可能希望通过幂等后台进程来执行此操作,该进程将继续尝试将数据插入到多个表中,直到成功为止。
我建议您创建一个基于其他值的复合 RowKey
,而不是 RowKey
的 Guid
这更适用于更新场景。由于更新需要 PartitionKey
和 RowKey
,因此我建议使用由其他值组合创建的 RowKey
。例如,如果您使用 TableId
作为 GameLogsByTableId
的 PartitionKey,我建议使用其他值创建 RowKey
,例如U|[UserId]|D|[DealId]|G|[GameId]
。这样,当您获取要更新的记录时,您会自动知道如何创建 RowKey
,而不是首先从表中获取数据。
分区扫描
我查看了您的查询要求,几乎所有这些要求都会导致分区扫描
。为了避免这种情况,我建议保留更多的数据副本。例如,请考虑查询要求中的 #3 和 #4。在这种情况下,您需要扫描用户的整个分区,以查找有关游戏 ID 和交易 ID 的信息。因此,请为表服务仅返回延续 token 的情况做好准备。
关于azure - 关于Azure表设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35547761/
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
.NET 框架:4.5.1 我在 Blend for visual studio 2015 中遇到一个奇怪的错误,我找不到它的来源。 如果我在 VS 中打开我的 WPF 解决方案,它会加载并运行良好。
我经常遇到这样的问题,与 Hierarchical RESTful URL design 非常相似 假设该服务仅提供用户上传文档。 POST, GET /accounts PUT, DELETE /a
在 Rails 应用程序中,我使用 devise 来管理我的用户,而我用来销毁 session 的链接不再有效。它正在工作,现在我添加了事件管理员,但没有。 我的链接是 :delete, :clas
我已经坚持了超过 24 小时,试图按照此处发布的其他解决方案进行操作,但我无法使其正常工作。我是 Rails 新手,需要帮助! 我想让我的/users/edit 页面正常工作,以便我可以简单地更改用户
Devise 在以下情况下不会使用户超时: 用户登录,关闭选项卡,然后在超时 + X 分钟内重新访问该 URL。用户仍处于登录状态。 如果选项卡已打开并且稍后刷新/单击,则超时可以正常工作。这意味着
我想使用这样的 slider 我希望该 slider 根据提供给它的值进行相应调整。到目前为止,我只能应用具有渐变效果的背景,但无法获得这种效果。请通过提供样式代码来帮助我。
您应该为每种方法创建一个请求/响应对象,还是应该为每个服务创建一个? 如果我在所有方法中使用它,我的服务请求对象中将只有 5 个不同的东西,因为我对几乎所有方法使用相同的输入。 响应对象将只有一个字典
我正在尝试在 REST 中对实体的附件进行建模。假设一个缺陷实体可以附加多个附件。每个附件都有描述和一些其他属性(上次修改时间、文件大小...)。附件本身是任何格式的文件(jpeg、doc ...)
我有以下表格: Blogs { BlogName } BlogPosts { BlogName, PostTitle } 博客文章同时建模一个实体和一个关系,根据 6nf(根据第三个宣言)这是无效的。
如果 A 类与 B、C 和 D 类中的每一个都有唯一的交互,那么交互的代码应该在 A 中还是在 B、C 和 D 中? 我正在编写一个小游戏,其中许多对象可以与其他对象进行独特的交互。例如,EMP点击
关于如何记住我与 Omniauth 一起工作似乎有些困惑。 根据这个wiki ,您需要在 OmniauthCallbacksController 中包含以下内容: remember_me(user)
设计问题: 使用 非线程安全 组件(集合,API,...)在/带有 多线程成分 ... 例子 : 组件 1 :多线程套接字服务器谁向消息处理程序发送消息... 组件 2 :非线程安全 消息处理程序 谁
我们目前正在设计一个 RESTful 应用程序。我们决定使用 XML 作为我们的基本表示。 我有以下关于在 XML 中设计/建模应用程序数据的问题。 在 XML 中进行数据建模的方法有哪些?从头开始然
我正在设计一个新的 XSD 来从业务合作伙伴那里获取积分信息。对于每笔交易,合作伙伴必须提供至少一种积分类型的积分值。我有以下几点:
设计支持多个版本的 API 的最佳方法是什么。我如何确保即使我的数据架构发生更改(微小更改),我的 api 的使用者也不会受到影响?任何引用架构、指南都非常有用。 最佳答案 Mark Nottingh
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
我想用 php 创建一个网站,其工作方式与 https://www.bitcoins.lc/ 相同。确实,就每个页面上具有相同布局但内容会随着您更改链接/页面而改变而言,我如何在 php 中使用lay
我有一个关于编写 Swing UI 的问题。如果我想制作一个带有某些选项的软件,例如在第一个框架上,我有三个按钮(新建、选项、退出)。 现在,如果用户单击新按钮,我想将框架中的整个内容更改为其他内容。
我正在尝试找出并学习将应用程序拥有的一堆Docker容器移至Kubernetes的模式和最佳实践。诸如Pod设计,服务,部署之类的东西。例如,我可以创建一个其中包含单个Web和应用程序容器的Pod,但
我是一名优秀的程序员,十分优秀!