3

私の現在のプロジェクトでは、小さなデータベースをディスクに保存する必要があります。これは、プログラムが実行されると読み取られ、一度書き込まれます。

私は perl の DBM 機能を調べましたが、私が理解していることから、ディスクに直接書き込まれるすべての読み取りと書き込みで、ディスクに格納されるハッシュを提供するだけであると理解しています。

私の質問は次のとおりです。Storableまたは関連するモジュールを使用して、ファイル I/O オーバーヘッドをはるかに抑えて同じ (永続的なハッシュ) を達成できないでしょうか? (ハッシュが大きすぎてメモリに簡単に収まることはありません)

よろしくニック

4

2 に答える 2

2

SQLiteは、シンプルなオンディスク データベースの標準になりつつあります。Perl では、 DBD::SQLiteを使用するだけで準備完了です。

于 2011-12-30T16:24:30.353 に答える
1

以前の回答は実際の質問に実際には答えていないため、「はい、できます」...次の注意事項があります。

  • Storable は、同時アクセスにはあまり適していません。
  • 独自の「アトミック」更新をロールする必要があります (つまり、tmp ファイルに書き込み、名前を変更する必要があります)。
  • パフォーマンスが実際に問題にならない場合は、Data::Dumper を使用することもできます (結果のファイルは人間が読める形式になります)。
  • コンテンツを CSV に分割できます。

私は、ファイルにアクセスするタスクが 1 つしかない場合に Dumper をよく使用します。必要に応じて内容を読み取り/変更する方法を提供してくれます。

于 2013-03-06T05:14:05.720 に答える