Базы данных для удобства сравнения - PullRequest
0 голосов
/ 25 августа 2010

У нас есть приложение, в котором информация метаданных хранится в базе данных (некоторые таблицы с отношениями между ними).Метаданные можно редактировать через веб-приложение или напрямую манипулируя значениями в базе данных SQL Server.

Проблема : метаданные изменяются и должны быть объединены между различными средами (тестирование, подготовка, производство и т. Д.).Существуют инструменты (например, RedGate), которые помогают, но для сравнения баз данных, если используются автоматически сгенерированные идентификаторы, все еще достаточно много работы (как сейчас в нашей БД, и да, один из способов - использовать естественные ключи, чтобы упростить сравнение).

Однако наши метаданные могут храниться не обязательно в базе данных SQL - они могут храниться в виде документов в базах данных NOSQL (MongoDB, CouchDB, RavenDB) или даже в простых базах данных XML (может быть, Berkeley DB XML?).Сохранение в виде XML-файла, по-видимому, будет работать (так как проще сравнивать и объединять файлы, а не базы данных), но может не быть хорошим вариантом, поскольку требуются некоторые механизмы параллелизма, некоторая степень поддержки транзакций.Нам не нужна репликация на другие серверы, нет необходимости в высокой доступности и т. Д.

Требования для хранения данных:

  • какой-то ACID
  • Должен работать в Windows
  • Простое сравнение (двунаправленная синхронизация)
  • (необязательно) GUI для просмотра содержимого базы данных
  • (необязательно) экспорт в файл (JSON, XML))

Какие есть варианты?

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Зачем связывать хранилище с представлением, для которого вы выполняете различие?

Я бы сохранил все в SQL, но когда пришло время сравнивать, выберите все важные данные(не идентификаторы) в формат XML и использовать инструмент разностного XML (или формат csv и использовать простой текстовый компаратор).

0 голосов
/ 26 августа 2010

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

...