Есть ли лучшая база данных, чем Git (с сериализуемыми, неизменяемыми, версиями деревьев)?

Представьте структуру данных за Git. Это похоже на конфлюэнтную постоянную структуру данных, за исключением использования хеш-ссылок вместо традиционных указателей.

Мне нужна структура данных Git, за исключением без какого-либо рабочего дерева и материала индекса. И было бы миллионы веток, каждый из которых отслеживал несколько других локальных веток. Записи и слияния будут происходить несколько тысяч раз в минуту на разных потоках. Потяжки появлялись каждую секунду.

Между libgit2 и jgit я может использовать подсистему хранения данных Git.

Но я использую правильный инструмент для работы? Есть ли БД с функциями Git, но быстрее/более параллельное/масштабируемое/меньше несоответствие импеданса? Запись в кеш-память будет чрезвычайно полезна.

Задача:

A совместно отредактированная игра. Каждый игрок имеет свою собственную ветку, и каждое изменение, которое они вносят в игровой мир, применяется только к их версии. Изменения объединяются обратно в "ведущую" ветку доверенными пользователями. Данные и исходный код часто связаны друг с другом, требуя те же функции ветвления и объединения.

Ответ 1

Datomic обеспечивает постоянное хранение данных и встроенное понятие времени.

Основные разработчики даже создали образец приложение, которое реализует репозиторий git в базе данных

Ответ 2

Хотя части индекса/рабочей копии git можно легко отделить, git не предназначен для слияний или коммитов со скоростью тысяч в секунду на одной машине. Основной код не является даже потокобезопасным, по большей части. Скорее всего, вам понадобится создать новую систему для ваших данных (вы все равно можете использовать git для кода, конечно же, а также можете посмотреть в генерацию git обязуется представлять ваши данные при необходимости и т.д.).

Ответ 3

Посмотрите, как github работает на условиях совместной работы между проектами и между ними. Ключевым моментом является то, что многие пользователи предпочитают копировать, использовать и реплицировать содержимое файлов других, так что репозиторий github core может выполнять агрегацию.

Если у вас нет такого повторного использования, то философия git, вероятно, не соответствует вашим потребностям. Задача состоит в том, чтобы идентифицировать ваши точки соответствия импеданса и продвигать его трудно. Многие люди не понимают, почему git работает, а "нормальный" VCS не работает (то есть, почему/когда работал VCS в старом стиле, в первую очередь?) - подскажите рисунки Kaolin и linen для RMS Titanic). git работает, потому что он начинается с современных возможностей компьютера.

Ответ 4

JGit может использовать JDBC, HBase, Cassandra, Bigtable и многое другое, и это потокобезопасно.