1

私の実際のプロジェクトでは、「ビッグデータ」の問題に没頭しています。書き込みよりも読み取りパフォーマンスが重要な大規模なデータベースを保存する必要があります (データの変更は最小限であり、制御されています)。

何百万ものレジスタがあり、各レジ​​スタには多くのキー/値情報があります。

noSQL データベースをテストしていますが、調査の結果、hstore が見つかりました。私は非常に優れた postgresql を知っていますが、このモジュールを知らなかったことを認めます。

hstore のパフォーマンスについて読んで感銘を受けましたが、疑問があります: テキストを値として格納することしかできないので、数値による検索は不可能ですか? もちろん、読み取り操作のパフォーマンスを維持する必要があります。たとえば、「X」の値が「10」より大きい登録者を検索します。

不可能な場合、代替手段はありますか?

ありがとう

4

2 に答える 2

2

はい、値をキャストすると数値を検索できます。

select k -> 'k'
from (values
    ('k => 11'::hstore),
    ('k => 010')
) h(k)
where (k -> 'k')::integer >= 10;
于 2013-07-30T11:41:02.397 に答える
1

hstoreクエリでキャストを使用することにより、任意のデータ型の意味的に正しい検索を行うことができますが、これにはいくつかのコストが伴います。

  • hstore に一般的な GiST インデックスを使用することはできません。代わりに、特定のタイプにキャストされた特定の hstore キーに特定のインデックスを作成する必要があります。

  • 行を処理するたびにすべての行をキャストするというオーバーヘッドが発生します。これは、テキストから整数へのキャストのようなものにとっては安っぽいですが、または配列にキャストtextしている場合numericは...それは痛いでしょう.

データがほぼ完全に自由形式のキー/値である場合、それを RDBMS に詰め込もうとするのはおそらく理想的ではありません。PostgreSQL 9.4 では、強化された JSON サポートによりこれが改善される可能性がありますが、それを言うのは少し時期尚早です。

于 2013-07-30T13:09:03.990 に答える