2010-08-19 1 views
1

Я не знаю, есть ли какое-то конкретное имя для этого, но я разрабатываю приложение, поддерживаемое базой данных, в которой строки должны быть неизменяемыми (не уверен, что этот термин применим здесь, но он наиболее близок к описанию того, что Мне нужно). То есть вместо изменения данных, хранящихся в строке, новая строка будет вставлена ​​с тем же id, но с другим первичным ключом. Были бы некоторые метаданные, хранящиеся в строке, которые указывали бы, какая из них самая последняя строка для этого id, и была ли запись с этим id «удалена». Я хотел бы использовать ORM, в котором я мог бы использовать обычные инструкции insert, update, delete, но сделал бы все это в фоновом режиме. Поскольку я не знаю, какую терминологию использовать, мне сложно найти решение, используя отличный, всезнающий Google. Существует ли ORM, как это, или мне нужно будет создать один или изменить существующий? Любые советы приветствуются.ORM для неразрушающей системы?

ответ

1

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

1

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

0

Терминология для вашего поиска обычно называется копированием на запись.

По иронии судьбы многие базы данных, такие как Postgresql (MVCC) и SqlServer (Snapshot), выполняют некоторую форму COW, но по соображениям производительности и ACID.

Из того, что я собираю, вы, вероятно, ищете характеристики управления версиями, и хотя я не знаю никаких ORM или RDBMS, поддерживающих такое поведение, существует множество репозиториев контента. Примером может служить реализация JCR (JSR 170), такая как JackRabbit.

В противном случае я рекомендую вам посмотреть, как работает Wiki-программное обеспечение, использующее RDBMS (как правило, два столбца с индексом id и version).