Apache Jackrabbit OAK - 按节点路径跨集群分片 DocumentNodeStore

Apache Jackrabbit OAK - Sharding DocumentNodeStore across cluster by node path

我正在努力寻找足够的文档和示例,以通过按路径对节点存储进行分片来在集群环境中构建和使用 Jackrabbit OAK。 我知道这是可能的,因为在一些地方有参考,但信息很少,而且 OAK 或 NodeStore API 不够直观,无法找到此功能。

查看此 PDF 中的幻灯片 17,其中列出了各种分片策略。 http://events.linuxfoundation.org/sites/events/files/slides/the%20architecture%20of%20Oak.pdf

我的用例是我需要多个远程服务器,所有这些服务器都 运行 相同的 Jackrabbit OAK 应用程序,该应用程序使用由 MongoDB 支持的 DocumentNodeStore 来存储节点和 blob。我最终想要的是将我的部分数据分片(或分区)到这些由整个节点结构中的不同路径组织的远程服务器。

例如:

服务器 (A)
负责在/a/*

存储内容

服务器 (B)
负责在/b/*

存储内容

如果服务器 (A) 想要读取或写入 /b/* 处的内容,它可以使用正常的 JCR 或 OAK API 访问该路径上的节点,这应该完全将用户从网络详细信息和与服务器的连接 (B) MongoDB.

是否有与此用例相关的可靠文档?如果没有,学习这个的最好方法是什么?我可以花一整天的时间浏览 OAK 源代码,但最好有文档。

Oak 的 Mongodb 实现此时没有分片策略。问题本质上归结为这样一个事实,即 Oak 存储的 Mongo 文档中的 _id 不会将文档跨分片放置,这样来自同一子树的节点可能会落在同一分片实例上。已经有一些关于添加分片键来处理用例的讨论,但讨论没有取得太大进展,因为此时我们还没有看到需要分片的引人注目的用例。

也就是说,afaik,您可以设置一个分片实例并相应地提供 mongouri。我上面所说的很可能不会像您想要的那样很好地扩展。此外,我们还没有看到非分片设置无法处理的设置。

我知道它没有回答你的问题,但也许这表明你找不到太多关于这个话题的话题。