2009-06-04 5 views
-3

キーを扱う他のデータ構造対ハッシュテーブルの使用、値のペアがありますが、私は本当に多くの用途があるかどうかを知りたいですハッシュテーブルと、例えば辞書のようなキーの値のペアを扱うことができる他の任意のデータ構造を使用することは、どのような条件で有益なのでしょうか。、私はセッション変数を追跡するためにそれらを使用している人々の聞いたことが

例えば、セッション値をハッシュテーブルに入れてから、Sessionオブジェクトにハッシュテーブルを置くことについて聞いたことがあります。私はちょうどどんな利益があったのか知りたかっただけです。
- パフォーマンスは向上していますか? - 同じ名前の変数をセッションに入れる他の開発者から保護されていますか?

が編集されました。

+2

ハッシュテーブルはキー/値のペアを格納するために使用されるので、ハッシュテーブルを使用することができるようなものが必要な場合は.... – inspite

+0

あなたは非常に貧しい、文字列は何を使用していますか?あなたがモデリングしているものに依存して、まったく役に立たないかもしれません。 – annakata

+0

フィードバックに感謝します。 – nialljsmith

答えて

8

あなたが解決策ではなく、他の方法で回避に一致するように問題を探している主な理由は、答えるのが難しい質問です。私は私の2セントを投げます。

セッション変数は、現在のユーザーのセッションに関する情報を格納します。それらはキーでアクセスされるため、ハッシュテーブルと同じように動作します。それらはハッシュテーブルとして(部分的に)カバーの下で実装されるかもしれません - 私は知らない。

セッション変数について注意すべき重要なことは、彼らは、Webアプリケーションはステートレスであるという事実から、抽象化していることです。実際には、セッションに値を保存し、ページを返すと、その値が(通常はメモリまたはデータベースに)どこかに保存されます。その人から次に要求が来ると、変数がリロードされます。

ハッシュテーブルは、主に、ルックアップキーを使用して多数のオブジェクトまたは値に高速アクセスするのに便利です。 Webはステートレスなので、セッションは1人のユーザーに限定されているため、ハッシュテーブルの使用量はそれほど多くありません。大規模なコレクション内のデータにすばやくアクセスする必要がある場合は、リクエストの最後にハッシュテーブル全体を格納し、リクエストの開始時にリロードしてアイテムにすばやくアクセスできるようにすることは効率的ではありませんリソースの使用。

1

は、例えば、ほとんどのウェブサイトを駆動するバックエンドデータベースは、(インデックスの形で)テーブルに埋め込まれた複数のハッシュテーブルを持っている、あなたはハッシュテーブルによって何を意味するかによって異なります。セッション変数を使用してユーザーIDにデータを割り当てることも考えられます。ハッシュテーブルの使用例はたくさんあります。

+3

ハッシュテーブルはディスク上のデータ構造としてうまく機能しないため、実際にはDBインデックスは通常ハッシュベースではありません。 DBは通常、何らかの種類のBツリーを使用しますが、結合ではしばしば一時的なハッシュベースのインデックスを使用します。 –

1

私が現在開発中のフレームワークでは、多くのソケット要求が発生します。

各ソケット要求は、Hashtableに見上げた/保存される、クライアントの識別子が含まれています。

私はこのルートを下ることを選択した理由は、私は今のままにすることができるようになりますハッシュテーブルを介して利用可能なパフォーマンス、柔軟性、である - そして後に微調整。あなたがしたい場合

:)

11

その家の建設にハンマーを使用することが何であるかを尋ねるようなもの...それは、単純なその最大のuにどこ釘を配置するために、単にキー/値のペアをハッシュテーブル: )

0

Wikipedia's definition of a hash tableの使い方をお読みください。

本質的に、ハッシュテーブルは特定のキーを特定の値にマッピングする方法です。したがって、セッション変数の場合は、変数をキーとして使用し、ユーザーのIDを値として使用できます。これにより、特定のセッションで取られたすべてのアクションを特定のユーザー(そのセッションにログインしているユーザー)にマッピングし、アクションをそのユーザーに帰属させることができます。再び、Wikipediaにはmore information on sessionsがあります。

+0

私はハッシュテーブルが – nialljsmith

+0

であることを知っています。それが事実なら、おそらくこの質問をしていないでしょうか?彼らが何であるかを理解すれば、なぜそれらを使用する(または使用しない)のかは明らかです。 –

1

「辞書」と「ハッシュテーブル」は、抽象化の2つの異なるレベルにあります。辞書とは、任意の型のキーを値にマッピングするものです。ハッシュテーブルは辞書を実装する1つの方法です。

「hash [table]」は、Perlの%ハッシュなど、「辞書」の同義語として使用されることがあります。

ハッシュテーブルのパフォーマンス特性を使用する場合は、ハッシュテーブルを使用します。ほとんどの場合、あなたは気にしないで、プログラミング言語の実装の詳細として残すだけです。あなた(償却無作為化予定)O(1)最悪のケースを持っているハッシュテーブルを実装することができますが、多くの実装は、それを達成するためにすべての作業とパフォーマンスオーバーヘッドを経由しません

注意。あなたの入力が(良い)セッショントークンの例のように、入力が暗号化ハッシュまたは完全にランダムである場合には気にする必要はないので、ハッシュテーブルは任意の辞書を実装するハッシュテーブルと比較してオーバーヘッドが少ない可能性があります。

関連する問題