Лучший способ хранить данные в C ++ - PullRequest
1 голос
/ 14 мая 2009

Я только изучаю C ++, только начал возиться с QT, и я сижу здесь, размышляя, как большинство приложений сохраняют данные? Есть ли отраслевой стандарт? Они хранят это в файле XML, текстовом файле, SQLite? Как насчет конфиденциальных данных, которые, по словам бухгалтерского программного обеспечения, необходимо сохранить? Мне просто интересно узнать, каковы лучшие практики для этого.

Спасибо

Ответы [ 7 ]

6 голосов
/ 14 мая 2009

Этот вопрос слишком широкий. Единственный ответ - это зависит от природы конкретного приложения и данных, а также от того, написано ли оно на C ++ или нет.

Например, настраиваемые пользователем параметры приложения часто хранятся в текстовых файлах, но в Windows они обычно хранятся в реестре. Бухгалтерские приложения обычно хранят свои данные в какой-либо базе данных.

3 голосов
/ 14 мая 2009

Существует много хороших способов хранения данных приложения (назовите это сериализацией).

Лично я считаю, что для больших наборов данных использование открытого формата намного проще для отладки. Например, если вы работаете с XML, вы можете хранить свои данные в открытой форме, так что если у вас есть проблемы с повреждением файла (то есть клиент не может открыть ваш файл по какой-то причине), его легче найти. Если у вас есть конфиденциальные данные, вы всегда можете зашифровать их перед записью в файл с использованием шифрования ключа. Например, Microsoft отказалась от использования закрытого формата для открытия XML в своих офисных документах. Они используют расширение * .x (.docx, .xlsx и т. Д.). Это действительно просто сжатая папка с XML-файлами.

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

2 голосов
/ 14 мая 2009

Сначала вам нужно уточнить, какие данные вы хотите сохранить.

Если вы просто хотите сохранить некоторые настройки приложения, используйте QSettings , чтобы сохранить настройки в INI-файле или реестре.

Если это намного больше, чем просто некоторые настройки приложения, перейдите к XML файлам или SQL .

1 голос
/ 14 мая 2009

Когда вы говорите «лучший путь», вам нужно определить, что вы подразумеваете под «хорошим».

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

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

Если требованием является «переносимый формат данных», то здесь предлагается XML, но это конфликтует с «компактным» и «индексированным».

1 голос
/ 14 мая 2009

Это общий вопрос. Как и многие вещи, правильный ответ зависит от вашего приложения и его потребностей.

  • Большинство настольных приложений сохраняют данные конечного пользователя в файл (например, Word и Excel). Формат зависит от вас: XML, двоичный файл и т. Д. И если вы сможете сериализовать / десериализовать объекты в файл, это, вероятно, облегчит вашу жизнь.
  • Внутренние данные приложения, такие как файлы конфигурации или временные данные, могут быть сохранены в файл XML или в облегченную локальную базу данных, такую ​​как SQLite
  • Часто «корпоративные» приложения, используемые внутри компании, сохраняют свои данные в серверной базе данных, такой как SQL Server или Oracle. Таким образом, все данные предприятия сохраняются в едином центральном местоположении. И тогда он доступен для отчетности и т. Д.

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

1 голос
/ 14 мая 2009

Стандартной практики не существует, однако, если вы хотите использовать сложные структурированные данные, рассмотрите возможность использования встроенного механизма базы данных, такого как SQLite или Metakit, или файлов Berkeley DB. XML-файлы также могут выполнять эту работу и быть удобочитаемыми для чтения / записи. Предпочтения могут использовать INI-файлы или реестр Windows, и так далее. Короче говоря, это действительно зависит от вашего шаблона использования.

0 голосов
/ 14 мая 2009

Они хранят его в XML-файле, текстовом файле, SQLite?

Да.
Также бинарные файлы и реляционные базы данных.
Что-нибудь еще?

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