Citus不支持按多列分发.但是,您可以创建一个复合类型和
partition your data by that composite type.
– 如果链接失效,下面将链接内容链接 –
在复合类型上进行散列分区的步骤
>在主节点和所有工作节点上创建类型:
CREATE TYPE new_composite_type as (project_key text, date text);
>创建用于检查相等性的函数,并将其与新类型的相等运算符相关联
CREATE FUNCTION equal_test_composite_type_function(new_composite_type, new_composite_type) RETURNS boolean
AS 'select $1.project_key = $2.project_key AND $1.date = $2.date;'
LANGUAGE SQL
IMMUTABLE
RETURNS NULL ON NULL INPUT;
-- ... use that function to create a custom equality operator...
CREATE OPERATOR = (
LEFTARG = new_composite_type,
RIGHTARG = new_composite_type,
PROCEDURE = equal_test_composite_type_function,
HASHES
);
>创建一个新的哈希函数.
注意:这只是一个简单的例子,可能无法提供良好的均匀哈希分布.有几个好的散列函数的例子可以在一个单独的C函数而不是SQL中实现