DBM データベース (Berkeley や GDBM など) を使用する場合、長い文字列を少なくしてデータを保存するのと、短い文字列を多く使用してデータを保存するのとではどちらが良いですか? どちらの方法でも簡単にデータを構造化できます。私はパフォーマンスの意味で「より良い」ものを探していますが、他の意味にも興味があります。
3 に答える
Berkeley DBまたはその他のDBM実装では、キーと値のペアごとにオーバーヘッドが発生します。数百万のk/vペアを処理している場合は、オーバーヘッドが重要になります。そうでない場合は、ノイズが発生するため、プログラマーにとって最も簡単なものを選択し、データベースにデータを処理させる必要があります。オーバーヘッドとアクセス時間もアクセス方法によって異なります。ハッシュテーブルとBツリーは、まったく異なるアルゴリズムの動物です。データにキーに依存するキーの順序付けまたはアクセスパターンがある程度ある場合は、99%の確率でBツリーが最適です。
あなたは素晴らしいデザインの質問をしていると思いますが、誰もがあなたに完璧な答えを与えるためには、あなたが扱うデータの量、アクセスパターン、および他の多くの要因についてもっと多くを知る必要があると思います。
データを頻繁に検索または変更する場合は、短い文字列の数を増やすとパフォーマンスが向上します。
つまり、これらの長い文字列の 1 つの部分文字列を検索したり、文字列の途中にある値を頻繁に変更したりしたくありません。
この質問は、完全に一般的な方法で答えるのが本当に難しいと思います。ここには非常に多くの変数があるため、いくつかの一般的なシナリオを実際にテストして、最適な答えを決定する必要があります。
考慮すべきいくつかの要因:
- より大きな文字列には部分文字列検索が必要ですか?
- データに対してどのような検索を実行しますか?
最終的には、一般的に、最も正規化されたスキーマを生成するアプローチを採用する方が適切です。最適化はそこから開始できます。データベースによっては、パフォーマンスのためだけに基礎となるスキーマを再構築するよりも優れた代替手段がおそらくあります。