Является ли база данных правильным выбором для хранения данных для моего приложения C #? - PullRequest
2 голосов
/ 18 августа 2010

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

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

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

Направьте меня в правильном направлении, пожалуйста!

Спасибо, OC

РЕДАКТИРОВАТЬ: один важный фактор, который я забыл включить, - это необходимость разрешить одному пользователю сохранять все введенные им записи и экспортировать их во внешний файл, который может быть легко распространен между приложениями / пользователями .

Ответы [ 4 ]

5 голосов
/ 18 августа 2010

Не зная больше о том, что делает ваше конкретное приложение, нам (нам) трудно сказать, является ли база данных правильным выбором. Однако есть некоторые практические правила, которые вы можете использовать, чтобы помочь принять решение.

База данных может быть хорошим выбором, когда:

  • Данные могут использоваться несколькими пользователями.
  • Если возможна одновременная активность, которая должна быть правильно сохранена.
  • Если собранные данные не нужно сразу загружать в память.
  • Когда вы хотите иметь возможность запрашивать данные или сообщать о них сложными способами.
  • Если вы хотите обеспечить прозрачность данных, которые хранятся с использованием стандартных инструментов.
  • Когда изменения в основном локализованы, а не требуют восстановления всего хранилища данных.
  • Когда ваши данные поддаются реляционному (а не, скажем, иерархическому представлению).

База данных может быть не лучшим выбором, если:

  • Вы обслуживаете только одного пользователя.
  • Параллельная активность незначительна, и вся модель данных должна быть воссоздана при сохранении изменений.
  • Когда данных будет очень мало, и они будут загружены в память сразу.
  • Когда ваши данные являются иерархическими или их трудно реляционно моделировать.
  • Когда ваше приложение ориентировано на документы, и документы (файлы) будут отправляться другим пользователям.
  • При наличии значительного количества двоичных данных, вкрапленных в данные, которые вы храните.
  • Если вы хотите избежать зависимостей от сторонних инструментов или сервисов.
  • Когда структура вашей модели данных может часто меняться.

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

Во многих средах (например, в iPhone) существует встроенный слой базы данных, доступный непосредственно на платформе. Существуют также инструменты (например, NSCoreData), которые помогают преодолеть несоответствие импеданса объектно-реляционного моделирования (ORM). В таких случаях может иметь смысл использовать базу данных для очень простого хранения данных.

Существует также ряд постоянных данных с открытым исходным кодом (NHiberante, DB4O и другие), которые помогают упростить использование базы данных в качестве постоянного хранилища ... которое, если вы можете использовать их, может сместить уравнение в пользу используя базу данных.

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

Одним из важных соображений является то, будут ли пользователи делиться данными, которые они создают / потребляют, используя ваше приложение. Если ваше приложение больше ориентировано на документы (например, Word, Excel, Powerpoint), тогда модель сериализации на основе файлов может быть более подходящей. Если данные вашего приложения не будут переданы - тогда база данных может иметь смысл.

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

4 голосов
/ 18 августа 2010

Полноценная база данных клиент / сервер, такая как MySQL или SQL Server, вероятно, будет излишней для одного пользователя.Но вы, вероятно, получите некоторую пользу от встроенного / основанного на файлах механизма, такого как SQLite или SQL Server CE , особенно если вы хотите сделать больше с данными, чем просто искать одинзаписи по ID.Если бы вы хранили хранилище данных самостоятельно, вам пришлось бы писать множество кода, чтобы получить записи, отвечающие определенным критериям, и я почти гарантирую, что вы не добьетесь такого же успеха в этом, как люди, которые зарабатывают на жизнь.

2 голосов
/ 18 августа 2010

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

Подумайте о своих данных, это сложно? Если бы вы на самом деле создавали базу данных, насколько большой она была бы с точки зрения объектов, а не количества строк ... сколько таблиц и т. Д ...

Подумайте о будущем, хотя, как я полагаю, его будет только один пользователь, объем данных будет увеличиваться, и сколько данных будет сохраняться каждый раз?

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

Помните, что всегда есть SQL Compact Edition, если вы хотите ограничить свои ресурсы.

1 голос
/ 18 августа 2010

Если вы реализуете свои функции хранения в хранилище 1) 2), вы можете начать с сохранения в файлах, а затем перейти к хранилищу базы данных, если позже обнаружите необходимость сделать это

1) http://martinfowler.com/eaaCatalog/repository.html
2) https://web.archive.org/web/20110503184234/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/10/08/the-repository-pattern.aspx

...