В чем разница между nomsdb и gundb

#javascript #database #git #gun

#javascript #База данных #git #пистолет

Вопрос:

Насколько я понимаю, эти две базы данных, похоже, следуют почти одним и тем же принципам. Оба поддерживают автономные сценарии, децентрализованы и имеют гибкую модель данных. Единственное реальное различие, которое я вижу, заключается в том, что noms реализует некоторые идеи из git и тем самым позволяет выполнять пользовательские операции слияния, тогда как gun реализует автоматическое разрешение конфликтов.

Это единственное различие или я что-то упускаю?

Комментарии:

1. Могу ли я предложить кому-либо с достаточными привилегиями добавить тег noms? Спасибо

Ответ №1:

Основное отличие заключается в том, что один вкусный, а другой не стоит класть в рот. 😉 Шутки в сторону:

(1) noms всегда хранит всю историю изменений, как упоминалось в git. В то время как с gun это необязательно.

(2) Они оба имеют синхронизацию / слияние данных «просто работает» «из коробки», оба могут поддерживать базы данных и деревья Merkle. Вот как это делает gun: http://gun.js.org/distributed/matters.html .

(3) На вопрос ops, gun также поддерживает пользовательские алгоритмы слияния, которые могут быть построены поверх автоматического.

(4) Я знаю, что gun может поддерживать ненаправленные или неациклические графы, то есть графы, которые имеют циклические ссылки и двунаправленные отношения. Я не уверен, может ли noms, или я уверен, что вы можете, но если это работает, это первоклассная / простая функция или нет.

(5) в документе noms design говорится, что это «эффективный CA» (в отношении теоремы CAP), что указывает на то, что его не следует использовать с одноранговыми узлами, работающими в автономном режиме. Однако я почти уверен, что они подразумевают, что noms — это точка доступа (сначала в автономном режиме), и поскольку данные никогда не мутируют / изменяются (могут быть добавлены только, например, Datomic), они имеют свойства, подобные C (однако то, как вы получаете доступ к данным как разработчик, не обязательно C). Вот мнение пистолета: https://github.com/amark/gun/wiki/CAP-Theorem

В заключение, из моего ограниченного обзора кажется, что они похожи, оба могут делать то, что может делать другой, но это может быть немного проще:

(A) Если вы создаете свой собственный блокчейн, журнал аудита или ведете бухгалтерский / банковский учет, тогда noms будет проще.

(Б) Если вы создаете игру, социальную сеть, мобильное приложение или сеть Интернета вещей, тогда gun было бы проще.

Ответ №2:

NOMS — это так называемая база данных, адресуемая к контенту (например, Camlistore), содержащая структурированные данные в виде базы данных Merkle DAG. Он предоставляет вероятностные B-деревья в качестве механизма индексации. Из-за этой структуры многие проблемы синхронизации / слияния данных работают «из коробки». Я не совсем уверен во внутренней структуре Gun, но я знаю, что для согласования используется набор алгоритмов слияния, таких как операционное преобразование.

GunDB реализован на Javascript. Хотя NOMS имеет реализацию на JS (а в Attic Labs работают инженеры с очень серьезным опытом работы в JS), проблемы с реализацией приводят к отказу от поддержки JS на стороне клиента. Видишь, как я ною на https://github.com/attic-labs/noms/issues/3120

Мне было бы очень любопытно услышать от других, которые пробовали оба.

Ответ №3:

обе базы данных используют почти одни и те же принципы. оба поддерживают автономные сценарии, децентрализованы и имеют гибкую модель данных. noms реализует некоторые идеи из git и тем самым позволяет выполнять пользовательские операции слияния, а gun реализует автоматическое разрешение конфликтов.

Комментарии:

1. забавно, что ответ — это вопрос.