Мне нужно выбрать постоянное хранилище для моего приложения, и поэтому я должен решить, следует ли выбирать локальную базу данных (в SQL Server Compact 3.5 Database) или XML-файл. В основном, приложение должно очень часто обновлять некоторые данные в таблице: каждая строка этой таблицы состоит из GUID (в качестве первичного ключа), двух столбцов DateTime
, двух столбцов TimeSpan
и четырех столбцов double
.Должен ли я использовать локальную базу данных или файл XML?
Эта таблица может состоять из тысяч строк, и некоторые из этих строк (около 10%) обновляются очень часто, где каждое обновление состоит из следующих операций:
- извлечение текущих значений Связанные с GUID;
- сравнить эти значения с некоторыми данными для получения новые значения;
- перезаписать текущие значения новыми значениями.
Строки, которые обновляются (выше 10%), не всегда одинаковы, но они могут постепенно меняться во время выполнения программы.
Если я сохраню эту таблицу в файле XML, как только приложение запустится, уровень доступа к данным загрузит данные из файла XML в Dictionary<Guid, ...>
, чтобы получить лучшую производительность. Затем, когда приложение завершается, файл XML перезаписывается данными, обновленными в словаре, потому что я считаю, что нет возможности обновлять определенные части XML-файла. Это тот подход, который я использую в настоящее время.
- Каковы преимущества использования локальной базы данных вместо XML-файла? Я считаю, что если я использую локальную базу данных, я мог бы обойтись без
Dictionary<Guid, ...>
, тогда уровень доступа к данным был бы проще. - Какие недостатки могут иметь локальную базу данных, чем текущий подход на основе «XML/Dictionary»?
Что произойдет, если пользователь откроет ваше приложение на несколько часов, и APP завершится с ошибками до того, как будет сохранен XML? – Rippo
@Rippo: все обновления будут потеряны. Но если я делаю регулярные обновления (перезаписи) файла, меньшее количество обновлений будет потеряно. – enzom83
Определите «очень часто» - это довольно ключевой бит информации ... – Murph