Является ли база данных правильным выбором для хранения данных для моего приложения C#?

StackOverflow https://stackoverflow.com/questions/3514284

  •  29-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Спасибо, OC

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

Если вы реализуете свои функции хранения в репозитории 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top