.NET Data Storage - база данных против одного файла

У меня есть приложение на C #, которое позволяет одному пользователю вводить информацию о клиентах и ​​сайтах вакансий. Информация очень простая.

  • Заказчик: имя, номер, адрес, адрес электронной почты, связанный сайт работы.
  • Место работы: имя, местоположение.

Вот мои спецификации, которые мне нужны для этой программы.

  • Нет ограничений на количество введенных данных .
  • Один пользователь на приложение. Нет одновременной активности или нескольких пользователей.
  • Разрешить экспорт пользовательских записей / данных во внешний файл, который может быть легко распространен между приложениями / пользователями.
  • Позволяет в пользовательских запросах отображать клиентов на основе различных комбинаций информации о клиентах / Информация о месте работы.
  • Данные никогда не будут просматриваться или обрабатываться за пределами приложения.
  • Программа будет работать почти всегда, свернутая до панели задач.
  • Время запуска не очень важно, однако я хотел бы, чтобы запросы были очень быстрыми.

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

6
задан John Saunders 18 August 2010 в 19:51
поделиться

6 ответов

Мне кажется, что база данных - это на все 100% то, что вам нужно. Он предлагает как хранилище данных, их извлечение (включая запросы), так и возможность экспорта данных в стандартный формат (либо прямо из базы данных, либо через ваше приложение).

Для легкой базы данных я предлагаю SQLite (произносится как «SQL Lite»;)). Вы можете найти в Google учебные пособия о том, как его настроить, а затем о том, как взаимодействовать с ним с помощью кода C #. Я также нашел ссылку на эту оболочку C # для SQLite, которая может сделать большую часть работы за вас!

3
ответ дан 8 December 2019 в 17:17
поделиться

Я предлагаю использовать SQLite. Вы можете найти его здесь: http://sqlite.org/ . Вы можете найти версию оболочки C # здесь: http://sqlite.phxsoftware.com/

SQLite очень легкий и имеет довольно мощные возможности для такого легковесного движка. Другой вариант, который вы можете изучить, - это Microsoft Access.

4
ответ дан 8 December 2019 в 17:17
поделиться

Как насчет SQLite? Похоже, он хорошо подходит для вашего приложения.

Вы можете использовать System.Data.SQLite в качестве обертки .NET.

3
ответ дан 8 December 2019 в 17:17
поделиться

Вы снова задаете неправильный вопрос :)

Лучший вопрос - «как мне создать приложение, которое позволяет мне изменить реализацию хранилища данных?»

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


Если у вас есть интерфейс репозитория, вы можете попробовать реализовать множество различных подходов:

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

Распространяемая база данных - SQLite или SQL Compact отлично работают; они предлагают множество преимуществ БД и не требуют установки

Локальная БД - SQL Express является хорошим промежуточным звеном между облегченной и полнофункциональной БД.Доступа при осторожном использовании может быть достаточно. Основным преимуществом является то, что он входит в состав MS Office (хотя и не устанавливается по умолчанию), и некоторым ИТ-группам удобнее устанавливать Access на компьютерах, чем SQL Express.

Полная БД - MySql, SQL Server, PostGreSQL и др.


Учитывая ваши особые требования, я бы посоветовал вам использовать плоский файл на основе XML с единственным условием, что вы согласны с тем, что использование памяти приложением напрямую зависит от размера файла (поскольку ваши данные text, даже с весом XML, потребуется много записей, чтобы стать очень большим).

Вот плюсы и минусы, перечисленные в соответствии с вашими требованиями:

Минусы

  • Нет ограничений на количество вводимых данных.
    • использование XML в памяти означало бы, что ваше приложение не будет масштабироваться. Он может легко обрабатывать файл данных размером 10 МБ, 100 МБ не должно быть проблемой (если в вашей системе мало ОЗУ), кроме того, вы должны серьезно спросить: «Могу ли я позволить себе столько памяти?».

Плюсы

  • Один пользователь на одно приложение. Нет одновременной активности или нескольких пользователей.
    • XML может быть прочитан в память и сохранен процессом (действительно, AppDomain). Он идеально подходит для однопользовательских сценариев, где параллелизм - очень узкая задача.
  • Разрешить экспорт пользовательских записей / данных во внешний файл, который можно легко совместно использовать между приложениями / пользователями.
    • XML идеально подходит для экспорта, а также легко импортируется в Excel, базы данных и т. Д.
  • Позволяет по запросам пользователей отображать клиентов на основе различных комбинаций информации о клиентах / информации о вакансиях.
    • Linq-to-XML - ваш друг: D
  • Данные никогда не будут просматриваться или обрабатываться вне приложения.
    • .... тогда сохранение ее полностью в памяти не вызывает никаких проблем
  • Программа будет работать почти всегда, свернувшись до панели задач.
    • поэтому загрузка XML при запуске и запись при выключении будут допустимы (если файл очень большой, это может занять некоторое время)
  • Время запуска не очень важно, однако я бы хотел, чтобы запросы выполнялись значительно быстрее
    • Чтение XML будет относительно медленным при запуске; но когда он загружается в память, его будет сложно превзойти. Любая конкретная БД потребует запуска механизма БД, выполнения вызовов взаимодействия / кросс-процессов / кросс-сети, загрузки результатов с диска (если они не кэшируются механизмом) и т. Д.
4
ответ дан 8 December 2019 в 17:17
поделиться

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

0
ответ дан 8 December 2019 в 17:17
поделиться

База данных подойдет. SQLite хорош, как уже упоминали другие.

Вы также можете использовать локальный экземпляр SQL Server Express , чтобы воспользоваться преимуществами улучшенной интеграции с другими частями стека разработки Microsoft (поскольку вы упоминаете C #).

Третий вариант - база данных документов, такая как Raven , которая может соответствовать звукам ваших данных.

править
Четвертый вариант - попробовать Lightswitch , когда бета-версия выйдет через несколько дней. (8-23-2010)
/ edit

Всегда будет ограничение на хранение данных (пустое место на жестком диске). Согласно Википедии, SQL Express ограничен 10 ГБ для SQL Server Express 2008 R2

0
ответ дан 8 December 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: