私はちょうど C++ を学んでいて、QT をいじり始めたばかりで、ほとんどのアプリケーションがどのようにデータを保存するのか疑問に思っています。業界標準はありますか?それらは XML ファイル、テキスト ファイル、SQLite に保存されますか? 会計ソフトウェアが保存する必要があると言う機密データはどうですか? これのベストプラクティスが何であるかを学ぶことに興味があります。
ありがとう
この質問は広すぎます。唯一の答えは、特定のアプリケーションとデータの性質に依存し、C++で記述されているかどうかはほとんど関係がないということです。
たとえば、ユーザーが構成可能なアプリケーション設定は、多くの場合テキストファイルに保存されますが、Windowsでは通常レジストリに保存されます。会計アプリケーションは通常、データをある種のデータベースに保持します。
アプリケーションデータを保存するための良い方法はたくさんあります(シリアル化と呼びます)。
個人的には、より大きなデータセットの場合、オープンフォーマットを使用する方がデバッグがはるかに簡単だと思います。たとえば、XMLを使用する場合は、データを開いた形式で保存できるため、ファイルの破損の問題がある場合(つまり、クライアントが何らかの理由でファイルを開くことができない場合)、見つけやすくなります。機密データが含まれている場合は、キー暗号化を使用してファイルに書き込む前に、いつでも暗号化できます。たとえば、Microsoftは、独自の形式を使用してOfficeドキュメントでxmlを開くことをやめました。。*x拡張子(.docx、.xlsxなど)を使用します。これは、実際にはxmlファイルを含む単なる圧縮フォルダーです。
もちろん、バイナリシリアル化の使用は、現在、ほとんどのスタンドアロンアプリケーションの業界標準です。ほとんどの場合、それは彼らが使用しているアプリケーションフレームワーク(古いMFCなど)が原因です。最新のアプリケーションフレームワークのほとんどのシリアル化手法を見ると、XMLシリアル化は非常によくサポートされています。
標準的な方法はありませんが、複雑な構造化データを使用する場合は、SQLiteやMetakitなどの組み込みデータベースエンジン、またはBerkeleyDBファイルの使用を検討してください。XMLファイルもその役割を果たし、人間が読み書きできるようになります。環境設定では、INIファイルやWindowsレジストリなどを使用できます。要するに、それは本当にあなたの使用パターンに依存します。
これは一般的な質問です。多くの場合と同様に、正しい答えはアプリケーションとそのニーズによって異なります。
会計ソフトウェアの場合、ビジネス ドメインとエンド ユーザーを考慮する必要があります。たとえば、ソフトウェアを大企業に販売する場合は、何らかの形式のデータベースを使用してデータを保存することになるでしょう。それ以外の場合は、バイナリファイルで問題ありません。本当に偏執的である場合は、おそらく何らかの形式の暗号化が必要です。
「最善の方法」と言うとき、「良い」とはどういう意味かを定義する必要があります。
問題は、さまざまな要件が互いに矛盾しているため、すべてを同時に満たすことができないことです。
たとえば、1 つの要件が「データへの同時マルチユーザー アクセス」である場合、これはデータベース エンジンを使用することを提案しますが、それは「できるだけ小さく」および「サードパーティ ソフトウェアへの依存を最小限に抑える」ことと矛盾します。
要件が「ポータブル データ形式」である場合、これは XML を示唆していますが、これは「コンパクト」および「インデックス付き」と競合します。
それらは XML ファイル、テキスト ファイル、SQLite に保存されますか?
はい。
また、バイナリ ファイルとリレーショナル データベース。
他に何か?