我正在创建一个拍卖网站。像大多数创建网站的人一样,我希望有一天我会遇到一个数据库服务器需要处理太多用户的问题。 Asp.net mvc是我的前端。我正在使用ravendb作为我的后端。到目前为止,我已经做了很多工作来实现我的网站。我有一些页面允许用户发布待售的新商品,我正在进行搜索。对ravendb查询,“搜索”和分页功能的方式非常满意。非常好!
下一步。是时候计划扩展了。 ravendb文档似乎提出的显而易见的解决方案是使用Raven中功能强大的非常简单,直观的sharding。所以我开始根据用户邮政编码分割我的数据集。这对我来说是明显的分片键,因为我计划让我的用户只关心他们附近的物品。大!完成!太简单!当我需要通过调整我的自定义ShardResolutionStrategy来添加更多服务器时,我甚至可以调整我的着色策略。
现在我们来到我的问题/问题。我显然希望能够从我的分片中返回分页结果集。因此,我一直在研究专注于此而不考虑排序。在阅读中,我基本上没有提出MergeQueryResults上的几句短句。我知道这是一个非常先进/复杂的问题,但这是一个常见的情况,我不得不相信有人在那里做了分片和分页。可以指出一些关于如何以智能方式使用MergeQueryResults的示例或文档吗?
修改
为了缩小我的问题,我真的只是在寻找一个示例或一些文档,说明如何使用raven db对分片数据集进行分页。我不在乎这个例子是什么,只是一些东西。无论是那个还是承认Ravendb不是解决这类问题的好工具。停止戏弄“这很难”。我很清楚这一点。
第二次编辑
我还将进一步阐明我的问题,即我正试图在Ravendb上进行分页和分片。以下是我对阅读谷歌小组帖子,评论和回复的理解。这肯定是错的,但我似乎无法找到关于这个问题的任何内容。可以说我的页面大小是50.如果我想从跨3个服务器分片的集合返回第5页,raven db的默认行为是从每个3个服务器返回所有5个页面(不仅仅是第5页的结果)。即50 * 5页* 3服务器= 750结果,这些结果全部返回给客户进行进一步处理,以确定哪些结果实际上是第5页。显然,更高的页码,更多的服务器意味着如果你试图这是真的不切实际使用分片进行水平缩放。我的理解是否正确?有没有办法使用我不知道的索引或X功能来限制结果集?