Многопользовательская переносимая БД для C#

Рейтинг: 1Ответов: 1Опубликовано: 28.12.2014

Доброго времени суток. Ни как не могу определиться с базой данных для моего проекта. Гуглить уже сил нет, куча результатов и все не то, возможно неправильно формулирую запрос.

Требования проекта следующие:

  • .Net Framework 4.0 (требуется поддержка Windows XP)
  • запуск с любого носителя
  • БД находится на этом же носителе
  • возможность синхронизировать базы данных между несколькими пользователями с разными носителями
  • возможность программно создавать/добавлять таблицы в БД, а также столбцы таблиц
  • работа с БД без установки дополнительного ПО, то есть подойдут переносимые dll. Или, если уже существует встроенная в .Net Framework возможность работы с БД по перечисленным требованиям, пнуть меня ссылкой

Прошу сильно не пинать, уже больше года не занимался программированием. Теперь понадобилась прога для себя. А прежде чем начать, надо определиться с БД.

Дополнение

Немного дополню требования. Например, имеются несколько ПК соединенных по локальной сети. На всех ПК установлен мой проект, в каждом проекте своя БД (этот проект связан с авторемонтом с несколькими боксами/гаражами, назовем этот проект "Программа учета"), но все эти базы данных должны синхронизироваться. То есть приехал начальник в один гараж, вставил флэшку со своей "Программой учета" и синхронизировался с базой данных своих работников, потом поехал в другой гараж и сделал то же самое и т.д. Попав домой, посмотрел отчеты, сделал выводы. Соответственно, база данных на всех ПК во всех гаражах примерно будет одинаковой, а у начальника она будет самой полной, и данные об авто, однажды приехавшего в другой гараж, будут и на других ПК. Проблема вся в отсутствие интернета в гаражах, при наличии интернета многие вопросы бы отпали. А бывает даже, мне приходится с ноутбуком выезжать на ремонт, соответственно интернета на трассе вообще может не оказаться. А бывает какой то ПК/ноутбук выходит из строя из-за специфики работы, потому содержать сервер БД вообще никак... Саму программу я уже сделал больше года назад, но там вся база построена на XML файлах, т.к. работал я один. А теперь расширился... Также было бы предпочтительно, чтобы БД поддерживала многопользовательский режим, чтобы "Программа учета" работала с БД на другом ПК при наличии сети, а у себя в папке держала копию БД, и при отсутствии сети работала со своей БД. При появлении сети происходит синхронизация и далее опять с БД на другом ПК. Как то так...

Ответы

▲ 4Принят

Тут куча http://en.wikipedia.org/wiki/Embedded_database
Я бы остановился на sqlite или firebird в зависимости от потребностей.

UPD
Есть несколько вариантов реализации репликаций:

  • SymmetricDS поддерживает множество субд.
  • rqlite непосредственно для SQLite
  • How to do replication of Firebird databases непосредственно для Firebird (SymmetricDS тоже в списке)
  • Можно написать свой репликатор, особенно если изменений не много или они простые, скажем полная копия таблиц или вообще баз.

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