ネットワーク上のファイルにデータを保存する最良の方法は何ですか。後でプログラムによって再度読み込まれます。プログラムのターゲット プラットフォームは Linux (Fedora) ですが、Windows (XP) マシンにファイルを書き出す必要があります。
これは C++ で行う必要があり、多数の書き込み/読み取りイベントが発生するため効率的である必要があり、データは簡単に読み戻せるように書き出す必要があります。
ファイル全体が読み戻されていない可能性があります。ファイル内の特定のデータ ブロックを検索して読み戻す必要があります。
単純なバイナリ ストリーム ライタでよいでしょうか。データをどのように保存する必要がありますか? - XML?
他に心配することはありますか?
更新:明確にするために、ここにピーターチェンのポイントに対するいくつかの回答があります
どうか明らかにしてください:
* ブロックを追加するだけですか、それとも削除/更新する必要がありますか?
ファイルの末尾に追加するだけで済みますが、ファイル全体を検索して、ファイル内の任意の場所から取得する必要があります
*** are all blocks of the same size?**
いいえ、データのサイズはさまざまです。フリー テキストのコメント (ここの投稿など) もあれば、特定のオブジェクトのようなデータ (パラメーターのセット) もあります。
*** is it necessary to be a single file?**
いいえ、しかし望ましい
*** by which criteria do you need to locate blocks?**
データ型別およびタイムスタンプ別。たとえば、フリー テキストなどの他のデータの中で、特定のパラメータ セットを定期的に書き出す場合、特定の日付/時刻でこれらのパラメータの値を見つけたいので、その時刻を検索する必要があります。その日付に最も近いパラメータを書き出して、読み返しました。
*** must the data be readable for other applications?**
いいえ。
*** do you need concurrent access?**
はい、読みながら書き続けているかもしれません。ただし、一度に 1 つの書き込みのみを行う必要があります。
*** Amount of data (per block / total) - kilo, mega, giga, tera?**
書き込みごとのデータ量は少なくなります...バイト数からクーペ百バイトまで-合計で数百キロバイト、数メガバイトを超えることはありません。(まだ未定です)
**> これらすべてが必要な場合、自分で作成するのは難しいでしょう。
データベースを使用することをお勧めします。それよりも少ない量が必要な場合は、お勧めできるように指定してください。**
データベースはシステムを過度に複雑にするため、残念ながらそれはオプションではありません。