Хранение базы данных на диске, лучшие практики - PullRequest
8 голосов
/ 31 июля 2010

Если вам кажется, что этот вопрос является общим, прошу прощения, я провел быстрый поиск по этому сайту и несколько поисков в Google и не смог найти удовлетворительного ответа.

Мой вопрос такой;

Я работаю разработчиком программного обеспечения всего 3-4 года. Это может показаться временем, достаточным для самостоятельного ответа на этот вопрос, однако за все время мне никогда не приходилось разрабатывать программное обеспечение, в котором основной объем хранилища данных не обязательно должен находиться в онлайновой базе данных. На этот раз, однако, моя последняя разработка требует, чтобы ее данные сохранялись только на диск.

Фактические данные очень легкие. В коде основным ресурсом будет класс с несколькими строковыми свойствами, которые должны быть сохранены. Мои первые мысли о простой сериализации. При закрытии приложения новые активы просто сериализуются и сохраняются на диске в виде файла. Я также думаю, что, возможно, для целей резервного копирования (или если это как-то лучший вариант для сериализованного класса) XML-файл будет уместным.

Я не могу думать о каких-либо явных недостатках любого из этих подходов, именно этот факт заставляет меня задать этот вопрос публично. По моему опыту, редко существует решение проблемы, в которой нет ее недостатков.

Ответы [ 4 ]

3 голосов
/ 31 июля 2010

Сериализация (двоичная или XML) подходит для небольшого количества данных.Проблема с этим подходом заключается в том, что вы получаете большие объемы данных (к которым вам может потребоваться запрос).

Если вы работаете на платформе Windows и нуждаетесь в подходящей базе данных, вы можете использовать встроенный механизм базы данных.что идет с окнами - ESENT .Это резервное хранилище Exchange, и RavenDB .

Здесь - библиотеки оболочки .NET для него.

ManagedEsent предоставляет управляемыедоступ к ESENT, встроенному ядру базы данных, родному для Windows.ManagedEsent использует esent.dll, которая является частью Microsoft Windows, поэтому нет дополнительных неуправляемых двоичных файлов для загрузки и установки.

1 голос
/ 31 июля 2010

Самое легкое решение, конечно, это использовать XML и сериализацию. Основным преимуществом этого является то, что он очень прост, требует небольшого кода и легко редактируется с помощью текстового редактора. Еще одним преимуществом этого является возможность иметь несколько файлов, и их будет легко перенести с ПК на ПК.

Вот хороший учебник по сериализации XML .

Однако, если ваше приложение будет много читать, записывать и изменять данные, и существует только один источник данных, было бы лучше использовать облегченную базу данных. Многим нравится SQLite , а я лично предпочитаю Firebird .

См. Этот вопрос об использовании SQLite с C # , а см. Здесь информацию об использовании Firebird с .net .

.
0 голосов
/ 31 июля 2010

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

Проверьте эту ссылку для оболочки C #: http://sqlite.phxsoftware.com/

Я также использую NHibernate и NHibernate.Linq для взаимодействия с данными, вы можете получить сборку обоих, которые совместимы здесь: http://www.dennisdoomen.net/2009/07/nhibernate-210-ga-with-linq-and-fluent.html

NHibernate.Linq позволяет вам использовать этот красивый синтаксис запросов Linq на вашем Sqlite db:

var onePiece = из s в сеансе. Linq () где s.Name == «One Piece» выбрать s;

0 голосов
/ 31 июля 2010

Другой вариант встроенной базы данных - Sql Server Compact Edition .Последняя версия этого - v4 , и, кажется, она значительно улучшена по сравнению с предыдущими версиями.

Функционально это эквивалентно использованию файла XML, или базы данных доступа, или даже простого старого текстового файла, в котором вам не нужно запускать службу Sql Server или устанавливать что-либо специальное на компьютерВаше приложение работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...