Javascript 如何实现git-like;“分支”;在Node.js中的MongoDB数据库上
我还有一个相关的问题(),但我也想知道如何更普遍地实现这个系统 基本上,我正在考虑创建一个“数据编辑器”应用程序,在这里我构建了一系列不同类型的表单,在一个通用的MongoDB文档中构建各种嵌套JSON(带有数组字段、嵌套数组字段等)。假设我最终在这个MongoDB集合中拥有100万个深度嵌套的JSON文档(或者很多集合,我还没有决定)。也就是说,有1000人同时编辑这些JSON字段(“路径”我会称之为路径,用于到达JSON文档中的深度嵌套值)。高层次的问题是我如何使它像Git一样工作 更具体地说,我脑海中想象的问题可以通过对数据进行分支和创建“拉请求”来解决。通过这种方式,人们基本上可以创建整个数据库的一个新分支(就像创建整个repo的git分支),然后编辑他们想要的任何内容。然后,使用我试图弄明白的diffing算法(如上链接),我们可以简单地基于“初始分支状态”和“最终分支状态”创建diff。然后,PR将由一个JSON“路径”列表及其相应的值组成,这些值可以被批准并“合并”到“主”MongoDB数据库中 你到底是如何开始设计这个的Javascript 如何实现git-like;“分支”;在Node.js中的MongoDB数据库上,javascript,json,mongodb,git,diff,Javascript,Json,Mongodb,Git,Diff,我还有一个相关的问题(),但我也想知道如何更普遍地实现这个系统 基本上,我正在考虑创建一个“数据编辑器”应用程序,在这里我构建了一系列不同类型的表单,在一个通用的MongoDB文档中构建各种嵌套JSON(带有数组字段、嵌套数组字段等)。假设我最终在这个MongoDB集合中拥有100万个深度嵌套的JSON文档(或者很多集合,我还没有决定)。也就是说,有1000人同时编辑这些JSON字段(“路径”我会称之为路径,用于到达JSON文档中的深度嵌套值)。高层次的问题是我如何使它像Git一样工作 更具体地
- 从理论上讲,您将如何实现完整的MongoDB数据库“分支”从字面上“克隆”数据库和每条记录是不现实的,因为数据库可能有几GB,而且太大,无法高效(从时间和金钱角度)克隆。这种系统中的分支实际上是什么样子的
问题是,人称2的PR在人1的中间得到批准,编辑相似的数据。他们的视图现在将被更改,因为主数据库将使用他们没有执行的新数据进行更新。我如何防止这种情况您将如何真正地分支数据库??我认为您正在潜入时态数据的世界,因此开始绘制时间线可能会有很大帮助 时间: 有效期:
[------------)
[------------------------------------->
持续有效期:
[------------)
[------------------------------------->
已创建文档A,且最新版本无限期有效:
[------------------------------------->
文件A分叉:
[------------------------------------->
User A Fork: |---------------------->
Doc A再次分叉:
[------------------------------------->
User A Fork: |---------------------->
User B Fork: |--------------->
用户A合并分叉:
[----------------------------)[------->
User A Fork: |-------------^
User B Fork: |--------------->
用户B拥有上一有效期的单据a副本。根据您希望应用程序的行为方式,只要有活动的fork,就可以保留旧版本的文档。根据历史记录要求,您可以删除任何有效期未持续且没有活动分支的文档。特别是关于有效状态的第2章和第5章
我从未使用过它,但也许可以查看源代码以获取更多想法。您不会分支数据库。您应该像git等一样创建一个合适的磁盘上数据存储系统。