kingbase cube 扩展插件使用

1 插件 cube 简介

这个模块实现了一种数据类型 cube 来表示多维立方体。

• 插件名为 cube

• 插件版本 V1.4

2 插件 cube 加载方式

create extension cube;

3 插件 cube 的参数配置

无需配置任何参数

4 插件 cube 的使用方法

1)外部表示

在下表展示了 cube 类型有效的外部表示。x、y 等表示浮点数。

一个立方体的对角录入的顺序无关紧要。如果需要创建一种统一的“左下—右上”的内部表示,cube 函数会自 动地交换值。当角重合时,cube 只存储一个角和一个“is point”标志,这样避免浪费空间。 输入中的空白空间会被忽略,因此 [(x),(y)] 与 [ ( x ), ( y ) ] 相同。

2)精度

值在内部被存储为 64 位浮点数。这意味着超过 16 位有效位的数字将被截断。

3)操作符

标量排序操作符(= 等)除了用来排序之外没有什么实际用途。这些操作符首先比较第一个坐标,如果它 们相等再比较第二个坐标等等。它们主要为支持 cube 的 b-树索引操作符类而存在,这类操作符对支持 cube 列上的 UNIQUE 约束等很有用。

cube 模块也为 cube 值提供了一个 GiST 索引操作符类。cube GiST 索引可以被用于在 WHERE 子句中通过 =、 &&、@> 以及 、 和 来查找最近邻。

例如,3-D 点 (0.5, 0.5, 0.5) 的最近邻可以用下面的查询很快地找到:

create table test (c cube);

insert into test values(cube(array[2,2,2])),(cube(array[3,3,3]));

SELECT c FROM test ORDER BY c cube(array[0.5,0.5,0.5]) LIMIT 1;

c

-----------

(2, 2, 2)

(1 row)

也可以用这种方式使用 ~> 操作符来高效地检索通过选定坐标排序后的前几个值。例如,可以用下面的查询得到 通过第一个坐标(左下角)升序排列后的前几个立方体:

SELECT c FROM test ORDER BY c ~> 1 LIMIT 5;

c

-----------

(2, 2, 2)

(3, 3, 3)

(2 rows)

以及得到通过右上角第一个坐标降序排列后的二维立方体:

SELECT c FROM test ORDER BY c ~> 3 DESC LIMIT 5;

c

-----------

(3, 3, 3)

(2, 2, 2)

(2 rows)

4)函数

 

5)默认值

以下为并操作:

select cube_union('(0,5,2),(2,3,1)', '0');

cube_union

-------------------

(0, 0, 0),(2, 5, 2)

(1 row)

以下为交操作:

select cube_inter('(0,-1),(1,1)', '(-2),(2)');

cube_inter

-------------

(0, 0),(1, 0)

(1 row)

在所有不同维度立方体的二元操作中,我假定低纬度的那一个要做笛卡尔投影,即为字符串表示中被省略的坐标 取零。上面的例子等同于:

 cube_union('(0,5,2),(2,3,1)','(0,0,0),(0,0,0)');

cube_inter('(0,-1),(1,1)','(-2,0),(2,0)');

下列包含谓词使用点语法,不过实际上第二个参数在内部被表示为一个盒体。这种语法让我们不必定义一种单独 的点类型以及用于(盒体, 点)谓词的函数。

select cube_contains('(0,0),(1,1)', '0.5,0.5');

cube_contains

--------------

t

(1 row)

 注意: 用法的例子可见回归测试 sql/cube.sql。为了不容易出问题,对于立方体的维度数有 100 的限制。如果你想要 更大的立方体,可以在 cubedata.h 中修改。

5)插件 cube 的卸载方法

drop extension cube;

6)插件 cube 升级方法

cube 扩展插件通常随着 KingbaseES 安装包一并升级。通常情况下用户无须单独升级些插件。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值