2009-04-04 16 views
1

ディスクに保存される連想配列としてSQLiteを使いたいです。ディスクバックアップ連想配列のSqlite?

これは良い考えですか?インデックス=「someindexデシベルから

選択値のようなものに変換する必要があります

データベース[「someindex」]:私はSQLに私のような何かをするたびに解析することが心配です'これはSQL内部言語に変換する必要があります。

+0

値の大きさはどれくらいですか?彼らはタイプされているのか、それともストリングだけですか? – jmucchiello

+0

私は今のところ文字列を使う予定です。 – Unknown

答えて

5

SQLオーバーヘッドが心配で、単純な連想配列だけが必要な場合は、GDBMやBerkeley DBのようなdbmの関係が良い選択でしょうか?それは本当にあなたの実際の問題に依存します> SQL

+0

しかしそれらはgpl – Unknown

+0

ですGPLが問題であれば、おそらくPDB(http://www.mission-base.com/peter/source/) - 私はライブラリを自分で使っていませんが、LGPLと思われます。 – andri

1

は、変数<を行くための簡単な方法のためのsqliteのパラメータをチェックしてください。問題文は非常に汎用的で、ハッシュテーブルのサイズに大きく依存します。

小さなハッシュテーブルの場合、実際にはテキストファイルを好むかもしれないが(デバッグに便利)一度読んだり書いたりするつもりだ。

あなたのハッシュテーブルがある場合は、たとえば、25meg SQLiteのより小さく、おそらくSQLiteのは、連想配列をベースディスクとしてはかなり高速である必要があります

1

あなたのためにうまく動作します。 prepared statementsを使用することを忘れないでください。これは、一度SQLを解析して何度も呼び出すためにコンパイルします。彼らはSQL injection attacksに対しても安全です。あなたがそうするなら、あなたはSQLiteからかなり良いパフォーマンスを得るべきです。

単純なディスクベースの連想配列の別のオプションは、ファイルシステムです。これは非常に普及しているディスクベースの連想配列です。ファイルシステム上にディレクトリを作成し、エントリごとに1つのキーを使用します。数百を超えるファイルを必要とする場合は、ディレクトリのファイル数を適度に少なくするために、キーの2文字の接頭辞ごとに1つのディレクトリを作成します。あなたの鍵がファイル名として安全でない場合は、SHA-1やSHA-256などでハッシュします。