1
に私はテーブルcitus 5.2Postgresのクラスタ(citus):範囲クエリ、ネストされたjsonb列
を使用してクラスタとして構成postgresの9.5.4を使用していますが、コマンドの下に使用してシャードてきました。
SELECT master_create_distributed_table('mytest', 'id', 'hash');
SELECT master_create_worker_shards('mytest', 16, 1);
jsonb列に格納されたサンプルのJSONデータの下から、私は、これは、1つのユーザのレコードのサンプルです
o['mid'] > 7000
に一致するレコードを検索したいと思います。そのようなユーザーは何百万人もいるでしょう。
{ "uid": 14105529, "o": [
{
"mid": 6551,
"ac": 1913,
"ip": "144.36.233.44",
"adw": 5,
"at": 133000,
"ad": 151015,
"aid": 0
},
{
"mid": 7552,
"ac": 1913,
"ip": "144.36.233.44",
"adw": 5,
"at": 133000,
"ad": 151015,
"aid": 0
},
{
"mid": 7553,
"ac": 1913,
"ip": "144.36.233.44",
"adw": 5,
"at": 133000,
"ad": 151015,
"aid": 0
} ]
}
以下のクエリはエラーをスローします。ここでは、非シャード化されたテーブルで実行されます。
select count(1) from mytest,jsonb_array_elements(data->'l') where (value->>'e')::bigint>7000;
ERROR: cannot perform distributed planning on this query
DETAIL: Complex table expressions are currently unsupported