Есть ли реализация базы данных с уведомлениями и ревизиями? - PullRequest
0 голосов
/ 13 июля 2009

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

Я хочу, чтобы данные приложения были постоянными даже во время редактирования, чтобы при сбое программы данные не терялись. Я знаю, что все базы данных предлагают это.

Кроме того, я хочу получить доступ к документу и редактировать его из нескольких потоков, процессов, возможно, даже с нескольких компьютеров.

Формат: вполне достаточно простой базы данных ключ / значение. SQL обычно нужно обернуть, и если я смогу избежать сильной зависимости ORM, это было бы великолепно.

Редакции: я хочу иметь возможность откатить изменения до первого изменения в документе, которое когда-либо было сделано, не только за один сеанс, но также между сеансами / запусками программы.

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

Я считаю эти требования довольно базовыми, основой для решения обычных сложных задач приложения редактирования: отмена / повтор, множественные просмотры одних и тех же данных. Таким образом, система баз данных должна быть легкой и нетребовательной.

Спасибо за ваши идеи заранее:)

Ответы [ 3 ]

1 голос
/ 13 июля 2009

Это может быть немного больше энергии, чем то, что вы просите, но вы обязательно должны взглянуть на CouchDB .

Это база данных документов, в которой «документ» определен как запись JSON. Все изменения в документах хранятся в виде ревизий, поэтому вы сразу получаете ревизии. Он имеет мощный движок представления на основе javascript для объединения всех необходимых вам данных из базы данных.

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

Еще один приятный бонус, который вы получите, - это простая и гибкая репликация вашей базы данных.

См. Полный список функций на их домашней странице

С минусовой стороны (в зависимости от вашей точки зрения) является тот факт, что она написана на Erlang и (насколько я знаю) работает как внешний процесс ...

Я ничего не знаю об уведомлениях - кажется, что если вы работаете с реплицированными базами данных, изменения мгновенно реплицируются / синхронизируются между базами данных. Кроме этого, я полагаю, у вас должна быть возможность развернуть собственную схему уведомлений ...

1 голос
/ 13 июля 2009

Berkeley DB - это нетребовательная, легковесная база данных значений ключей, которая поддерживает блокировки и транзакции. Для этого существуют привязки во многих языках программирования, включая C ++ и python. Вам придется самостоятельно вносить изменения и уведомления, но на самом деле это не так сложно.

0 голосов
/ 13 июля 2009

Проверьте ZODB. Он не имеет встроенных уведомлений, поэтому вам понадобится система обмена сообщениями (поскольку вы можете использовать отдельные компьютеры). Но он имеет транзакции, вы можете откатиться навсегда (если вы не упакуете базу данных, которая удаляет более ранние ревизии), вы можете получить к ней доступ напрямую как к интегрированной части приложения, или она может работать как клиент / сервер (с несколькими клиентами, конечно ), вы можете иметь автоматическое постоянство, нет ORM и т. д.

Хотя это в основном только для Python (основано на Pickles).

http://en.wikipedia.org/wiki/Zope_Object_Database

http://pypi.python.org/pypi/ZODB3

http://wiki.zope.org/ZODB/guide/index.html

http://wiki.zope.org/ZODB/Documentation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...