#.net #csv #persistence
#.net #csv #сохранение
Вопрос:
У меня есть два основных требования для сохранения моих данных:
- Сохраните его в чистом и расширяемом формате, таком как CSV.
- Следует ли быстро сохранять изменения в данных пользователем, чтобы избежать потери данных при подаче питания / фатальном сбое.
Первое требование исключает большинство баз данных, которые обычно превосходят второе.
Есть предложения о том, как это реализовать?
Мои данные в основном табличные, поэтому требований к сложности модели нет, а ожидаемый размер находится в пределах десятков / сотен тысяч записей.
Платформа .Net.
Комментарии:
1. CSV не является хорошим решением для сохранения чего-либо, особенно с текущими изменениями. Это формат передачи данных.
2. Также обратите внимание, что если все сделано «правильно», в CSV есть больше, чем кажется (на первый взгляд): пробелы, кавычки, встроенные кавычки, разрывы строк в полях, форматы чисел и дат и т.д. Достойный и надежный редактор / читатель CSV — это больше, чем
StringBuilder.Append()
и / илиString.Split()
. РЕДАКТИРОВАТЬ: Извините, я не имел в виду, что вы этого не знаете, но на всякий случай…3. Спасибо, что упомянули об этом. Я приобрел некоторый опыт разбора csv-файлов в наихудших условиях (unicode, отложенная загрузка, поля, содержащие трассировки стека и т.д.). Я нахожу, что LumenWorks csvreader делает это лучше всего и быстро.
Ответ №1:
Почему бы не сохранить это в базе данных, но не один столбец = одно значение, а одна строка = одно значение? Что-то вроде этого:
csvId | value | name?|
1 | "aaa" |
1 | "bbb" |
тогда он «расширяемый»
Комментарии:
1. Это жизнеспособный вариант, который я не рассматривал. Для простоты я хочу избегать баз данных, управление которыми зависит от сторонней библиотеки или которые нелегко переносимы (нет SQLServer, нет пользовательских решений для сериализации, таких как db4Objects и т.д.). Например, форматами csv / xml можно легко манипулировать и переносить на другие платформы. Csv имеет преимущество в том, что он более компактный и быстрее анализируется.
2. Что вы думаете об этом: загрузите все записи при запуске. При каждом изменении iser добавляйте всю запись в запущенный «журнал». При простаивании и / или при закрытии консолидируйте файл данных и файл журнала. Преимущества заключаются в быстрой загрузке (особенно если сначала загружается только n записей), быстрой сохраняемости изменений и простом формате csv. Недостатками является высокая цена консолидации.