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