問題タブ [jsonb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - JSON 型内の配列要素のクエリ
json
PostgreSQL 9.3で型をテストしようとしています。というテーブルに という
列がありjson
ます。JSON は次のようになります。data
reports
「objects」配列の「src」値に一致するすべてのレポートについてテーブルをクエリしたいと考えています。たとえば、一致するすべてのレポートについて DB にクエリを実行できます'src' = 'foo.png'
か? に一致するクエリを正常に作成しました"background"
:
しかし、"objects"
値の配列があるため、機能するものを書くことができないようです。一致するすべてのレポートについて DB にクエリを実行することは可能'src' = 'foo.png'
ですか? これらのソースを調べましたが、まだ取得できません:
- http://www.postgresql.org/docs/9.3/static/functions-json.html
- 新しい PostgreSQL JSON データ型内のフィールドを使用してクエリを実行するにはどうすればよいですか?
- http://michael.otacoo.com/postgresql-2/postgres-9-3-feature-highlight-json-operators/
私もこのようなことを試しましたが、役に立ちませんでした:
私はSQLの専門家ではないので、何が間違っているのかわかりません。
json - Postgresql JSONB が来ています。今何を使う?ストア?ジェイソン?EAV?
リレーショナル DB/NoSQL に関する研究討論を経て、私はデータ ストアとして PG を使用して前進するという結論に達しました。その決定の大きな部分は、JSONB が 9.4 に来るという発表でした。私の質問は、jsonb に移行したい (今すぐ使用することを意味します!) ことを知って、ゼロからアプリケーションを構築して、今何をすべきかということです。私にとっての DaaS オプションは、しばらくの間 9.3 を実行する予定です。
私が知っていることから、私が間違っている場合は修正してください.hstore列で多くのキーの多くのクエリを実行するため、hstoreはかなり高速に実行されます.プレーンjsonを使用する場合は.インデックス作成や GIN などを利用することはできません。ただし、json を使用したネストを利用することはできますが、クエリの実行は非常に遅くなり、ユーザーはイライラするでしょう。
では、現在のバージョンの hstore または json データ型、「古き良き」EAV、またはその他のバージョンを中心にアプリを構築する必要がありますか? DB とアプリ コードを特定の方法で構造化する必要がありますか? アドバイスをいただければ幸いです。PostgreSQL の次の公式リリースを待っているときに、他の人が同じ質問に直面する可能性があると確信しています。
私が構築したいアプリに関するいくつかの追加の詳細:
- 非常に関連性が高い (以下の 1 つの例外を除く)
- 強力なソーシャル ネットワークの側面 (グループ、友人、いい
ね!必要が生じます)
ご意見をお寄せいただきありがとうございます。
json - 空のオブジェクトのjson列を照会する方法は?
特定の json 列に空のオブジェクト{}
. これは、JSON 配列を使用する場合、またはオブジェクト内の特定のキーを探している場合に可能です。しかし、オブジェクトが空かどうかを知りたいだけです。これを行うオペレーターが見つからないようです。
sql - キーの数が増えると JSONB のパフォーマンスが低下する
postgresql で jsonb データ型のパフォーマンスをテストしています。各ドキュメントには、階層化されていない約 1500 個のキーがあります。ドキュメントがフラット化されます。テーブルとドキュメントは次のようになります。
サンプル文書は次のとおりです。
ご覧のとおり、ドキュメントには階層が含まれておらず、すべての値が整数です。ただし、一部は将来テキストになります。
- 行: 86,000
- 列: 2
- ドキュメント内のキー: 1500+
キーの特定の値を検索したり、パフォーマンスによってグループを実行したりすると、パフォーマンスが著しく低下します。このクエリ:
完了するまでに約 2 秒かかりました。jsonb ドキュメントのパフォーマンスを向上させる方法はありますか。
sql - Postgres jsonbで配列内の構造をクエリするための適切なインデックスは何ですか?
jsonb
Postgres 9.4 の Postgres フィールドに次のような値を保持して実験しています。
次のようなクエリを実行しています。
上記のようなクエリで使用するために、そのデータにインデックスを作成するにはどうすればよいですか? これは、それぞれがその列に最大 10 個のイベントを含む数百万行の妥当な設計に思えますか?
私がまだシーケンシャルスキャンを取得しているように見えることに注意してください。
私が推測しているのは、クエリで最初に行っていることは、データを json 配列要素に変換しているためです。
arrays - PostgreSQL 9.4はjsonb int配列を行番号付きのテーブルに展開します
postgresql 9.4 jsonb に頭を悩ませようとしていますが、次のことを行う方法を理解するのに助けが必要です。
次の例の jsonb が与えられます。
求む: "name3" 配列のみを、次のリターン シグネチャを持つテーブルとして返します。
したがって、結果のデータは次のようになります。
配列はゼロを除く任意の長さであり、'name3' が存在することが保証されていると仮定します。