Какую БД использовать для приложения Windows? - PullRequest
3 голосов
/ 02 апреля 2009

Я разрабатываю небольшое приложение для Windows в .net. Какую БД мне следует использовать?

Структура БД

Таблица 1: Не более 3 полей: 50+ записей (Добавить, Удалить)

Таблица 2: Не более 10 полей: 10-20 записей (Добавить, Удалить)

Я думал об использовании XMLDatabase, но некоторые говорят, что не рекомендуется его использовать. Каковы причины этого? Если можно использовать XML-файлы в качестве базы данных, можете ли вы предложить некоторые учебные пособия или рекомендации? Я работал с файлами XML раньше. Есть ли что-то другое, когда дело доходит до использования его в качестве БД?

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

Итак, если я использую сервер SQL, как я могу развернуть его на другом компьютере? Как я могу добавить его в установочный файл?

Обновление: спасибо за ответы. Я собираюсь на SQLite и вот учебник о SQLite и .net, если кто-то заинтересован.

Ответы [ 10 ]

12 голосов
/ 02 апреля 2009

SQLite - хороший способ для небольших приложений. Это быстро, компетентно и занимает мало места.

Для .Net есть отличная управляемая библиотека SQLite, которую я использовал в предыдущих проектах:

http://sqlite.phxsoftware.com/

Редактировать:

Учитывая выбор между SQLite и SQL Server Compact, вы почти всегда захотите использовать SQLite, если вам не нужны некоторые расширенные функциональные возможности, которые SQLite не поддерживает.

[Я исправлен в отношении размера установки SQL Server Compact Edition. В прошлый раз, когда я смотрел на это, это было намного более неблагоприятно. Может быть, так же хорошо, как сейчас.]

4 голосов
/ 02 апреля 2009

Исходя из того, что вы упомянули, я либо посмотрю на SQLite, либо на SQL Server Compact Edition.

Рекомендация для Compact Edition такова, что процесс SQL Server не выполняется постоянно. Компактная версия запускается только во время работы приложения.

Обновление

Когда дело доходит до размера между ними, размер SQLite составляет чуть менее 1 мегабайта. Выпуск SQL Server Compact составляет 1,8 МБ (см. Документ MS для подтверждения).

3 голосов
/ 02 апреля 2009

Хорошо ... так как ваш прогнозируемый размер базы данных очень мал, быстрое и грязное решение (более быстрое, чем грязное IMHO) состояло бы в том, чтобы поддерживать ваши данные в XML (или сериализовать / десериализовать коллекции объектов в XML) и выполнять запросы с помощью LINQ. Это быстро и работает. плюс нет движка БД для распространения с вашим приложением.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: имейте в виду, что если IFF ваши требования к данным остаются небольшими (и предполагается, что его один пользователь). Как только несколько пользователей одновременно бьют ваши данные, или размер данных увеличивается, или вам нужны функции, которые наиболее эффективны при использовании какой-либо СУБД, это быстрое и грязное решение исчезает, и вскоре ваше приложение рухнет под тяжестью всех дополнительный код, который вам нужно будет испечь, чтобы все это заработало. =)

2 голосов
/ 02 апреля 2009

Джон Сондерс упомянул SQL Server Express. Справедливости ради, есть также Oracle Express и DB2 Express. Их соответствующие списки функций практически идентичны. Все бесплатно по крайней мере для личного использования.

2 голосов
/ 02 апреля 2009

Если вы используете SQL Server, есть функция, которая позволяет генерировать сценарий для создания всей базы данных. Выполнение скрипта после того, как задана правильная строка соединения, довольно легко сделать с помощью обычных классов .NET Sql (SqlConnection и т. Д.).

Однако для такой простой модели данных SQL Server может оказаться излишним. Вы должны исследовать другие меньшие БД, такие как SQLite.

2 голосов
/ 02 апреля 2009

Что-то маленькое, например, SQLite, или вы можете сойти с рук, просто используя встроенную базу данных SQLServer Express в своем приложении.

1 голос
/ 02 апреля 2009

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

Мне кажется, что мы говорим только о 100 записях с максимум 10 полями на одну запись. Это может быть легко обработано из постоянных данных XML и обработано в памяти. Я согласен с NoCarrier относительно возможного использования LINQ для запроса.

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

0 голосов
/ 02 апреля 2009

Таблица 1: Не более 3 полей: 50+ записи (Добавить, Удалить)

Таблица 2: Не более 10 полей: 10-20 записей (Добавить, Удалить)

Если ваши записи имеют приличный размер (вы не хотите хранить фильмы или что-то подобное в вашем приложении, не так ли?), Я бы посоветовал при запуске читать текстовые или XML-файлы и хранить все в объем памяти. Время от времени вы можете сбрасывать свои буферы на диск.

Я не знаю других ваших требований (а как насчет параллелизма?), Но imho реальная СУБД может быть излишней для вашей проблемы, и sqlite (которой я большой поклонник) может не быть решением (опять же, параллелизм, это не одно сильных сторон).

0 голосов
/ 02 апреля 2009

Я согласен с XML в качестве решения для источника данных. Есть хорошая книга по XML: Нет бессмысленной разработки XML с PHP . Вы можете легко перевести PHP в ASP.NET. Есть также бесплатные электронные книги для XML и ASP.NET.

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

0 голосов
/ 02 апреля 2009

Просмотр SQL Server Express или SQL Server Compact Edition.

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