2

MP3 を整理してタグ付けするための小さなユーティリティを作成しようとしています。

少量のデータを保存する最良の方法は何ですか。さらに重要なことは、クライアント/サーバー環境をインストールする必要のないデータベースが存在するかどうかです。ライブラリを含めるだけで問題ありませんか?

XMLを使えばいいのですが、ファイルサイズが大きくなって扱いづらくなるのが心配です。

ありがとう

編集: 言語を決めていません。プラットフォームとは無関係に決定したかったのです。どちらかを選択する必要があるとすれば、おそらく .NET、2 番目に Java、3 番目に C++ です。

申し訳ありませんが、これは Windows アプリ用です。

4

8 に答える 8

3

Windows では、組み込みの esent データベース エンジンを使用できます。C++ から使用できる API があります

http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx

C# コードから使用できるマネージド相互運用レイヤーもあります。

http://www.codeplex.com/ManagedEsent

于 2008-12-27T18:50:02.577 に答える
2

どの言語/プラットフォームについて話しているのですか?

Java の世界では、HSQLDBH2、またはJavaDB (別名 Derby) などの組み込みデータベースを使用することを好みます。

これらはインストールする必要がなく、「実際の」DBMS から慣れ親しんだ簡単なアクセスを提供します。

C/Python/Unixy の世界では、 SQLiteがその分野で熱い競争相手です。

于 2008-12-22T22:39:12.057 に答える
2

もう 1 つのオプションは、さまざまな形式の Berkeley データベース (たとえば、db3、db4、SleepyCatなど) です。

于 2008-12-22T22:43:39.070 に答える
1

Prevaylerを見てみましょう- これはシリアライゼーションの永続化フレームワーク (人間がデータを読み取りたい場合は xstream などを使用します) であり、非常に高速で、注釈を必要とせず、「動作する」だけです。基本情報:

  • 自動ロールバックを提供しないため、より厳密なトランザクション パターンが課せられます。
    • (システムの現在の状態で)トランザクションが成功することを確認します-たとえば、今は意味がありますか?
    • [トランザクションがキューに追加されます]、および保存されます (電源リセットなどのため)
    • トランザクションが実行され、オブジェクト構造に適用されます。
  • 1 秒あたり数千件のトランザクションの書き込み
  • 1 秒あたり 100,000 件のトランザクションの読み取り

私はあまり使用していませんが、小さなプロジェクトで使用するのは非常に優れています (シリアライズ可能なオブジェクトを永続化するはとても良いことです)。

ああ、「あなたが実行しているプラ​​ットフォームは何ですか?」と言う人は皆そうですが、Prevayler (Java) にはかなりの数のプラットフォームへのポートがありますが、適切なリストを見つけることができません :(. 約 5- 7 ですが、.NET しか覚えられません。

于 2008-12-22T23:15:43.980 に答える
1

サーバーのインストールや手間をかけずにリレーショナル DB の苦痛を味わいたい場合は、SQLITE 。

多くのテキスト シリアライゼーション形式の 1 つを使用します。個人的には、YAML 1.1が最も強力 (参照オブジェクト グラフの組み込みサポート) であり、人間による読み取り/変更が最も簡単であると考えています (解析は面倒です。PyYAMLJYamlなどのライブラリ、または.NET libarayを使用します)。

それ以外の場合は、XML または JSON が適切なファイル形式です。

どちらの形式を使用する場合でも、ディスクの使用量が気になる場合は、ファイルを圧縮してください。メモリ内の使用が心配な場合は、シリアル化形式がどのように重要かわかりません...

于 2008-12-22T22:39:33.023 に答える
1

プログラムが動作している間にすべてをメモリに保存することを計画している場合は、基本的な load() および save() 関数を使用してファイルにシリアル化することで問題なく、DB に完全に書き込むよりも苦痛が少なくなります。

Java では、標準のシリアライゼーションを使用して実行できます (または、XML との間でシリアライズして、人間が読み取ったり編集したりできるようにすることができます)。

オブジェクトを保存して復元するだけなので、メモリ使用量にはまったく影響しません。トランザクションやランダムアクセス、クエリなど、すべての優れた機能が得られないだけです。

于 2008-12-22T23:40:08.690 に答える
0

xml、json、.ini ファイル、テキスト ファイルも使用できます。

于 2008-12-22T22:42:10.227 に答える
0

SQL のようなデータベース (SQLLite など) をお勧めします。今日の要件からすると、完全な SQL データベースはばかげているように見えるかもしれません。しかし、この「小さなプロジェクト」が何年にもわたってどれだけ成長するかはわかりません。SQLエンジンが必要なところまで成長したとき、Javaオブジェクトをシリアライズしたり、JSON形式で保存したりしなくてもよかったと思うでしょう。

于 2008-12-23T21:11:48.863 に答える