nomsdb 和gundb 有什么区别

Tim*_*ter 3 javascript database git gun

据我了解,这两个数据库似乎遵循几乎相同的原则。两者都支持离线场景、去中心化且具有灵活的数据模型。我看到的唯一真正的区别是 noms 实现了 git 的一些想法,并允许自定义合并操作,而 Gun 实现了自动冲突解决。

这是唯一的区别还是我错过了什么?

mar*_*dal 5

主要区别在于,一种味道鲜美,而另一种则不应放入口中。;) 开玩笑:

(1) noms 总是存储整个修订历史记录,就像前面提到的 git 一样。当使用枪时,这是可选的。

(2) 它们都具有“开箱即用”的“正常工作”数据同步/合并功能,都可以支持 DAG 和 Merkle 树。枪的做法如下:http://gun.js.org/distributed/matters.html

(3) 对于操作问题,gun 还支持可以在自动算法之上构建的自定义合并算法。

(4) 我知道枪可以支持非有向或非无环图,即具有循环引用和双向关系的图。我不确定 noms 是否可以,或者我确信你可以,但如果这有效,是否是一流/简单的功能。

(5) noms 设计文档称它是“有效的 CA”(相对于 CAP 定理),这表明它不应该与离线优先的对等点一起使用。然而,我很确定他们的意思是,noms 是 AP(离线优先),并且因为数据永远不会变异/更改(只能附加,如 Datomic),所以它具有类似 C 的属性(但是您如何访问数据)作为开发者不一定是C)。这是枪的观点:https://github.com/amark/gun/wiki/CAP-Theorem

总之,从我有限的概述来看,它们似乎很相似,两者都可以做对方可以做的事情,但可能会稍微容易一些:

(A) 如果您正在构建自己的区块链、审计日志或进行会计/银行业务,那么 noms 会更容易。

(B) 如果您正在构建游戏、社交网络、移动应用程序或物联网网络,那么枪会更容易。