返回首页

gbase数据、南大通用产品文档:GBase8a动态游标示例

更新日期:2024年09月11日

示例1:查询语句是静态SQL 语句。
gbase> DELIMITER //
gbase> DROP PROCEDURE IF EXISTS docursor //
Query OK, 0 rows affected
gbase> CREATE PROCEDURE docursor()
BEGIN
DECLARE s_region VARCHAR(40);
DECLARE DONE INT DEFAULT(0);
DECLARE cur REF CURSOR;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur FOR SELECT DISTINCT c_region FROM ssbm.customer ORDER BY
c_region LIMIT 6;
REPEAT
FETCH cur
INTO s_region;
IF NOT done THEN
SELECT s_region;
END IF;
UNTIL DONE END REPEAT;
CLOSE cur;
END //

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1372
Query OK, 0 rows affected
gbase> DELIMITER ;
gbase> CALL docursor();
+----------+
| s_region |
+----------+
| AFRICA
|
+----------+
1 row in set
+----------+
| s_region |
+----------+
| AMERICA
|
+----------+
1 row in set
+----------+
| s_region |
+----------+
| ASIA
|
+----------+
1 row in set
+----------+
| s_region |
+----------+
| EUROPE
|
+----------+
1 row in set
+-------------+
| s_region
|
+-------------+
| MIDDLE EAST |
+-------------+
1 row in set
Query OK, 0 rows affected
示例2:OPEN 语句中的SELECT 语句包含由文本字符串或者内容为文本字符串
的用户变量。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1373
示例中所用的表及数据:
DROP TABLE t1;
CREATE TABLE t1 (i INT, j INT);
INSERT INTO t1 VALUES(1, 1);
INSERT INTO t1 VALUES (1, 1);
INSERT INTO t1 VALUES (2, 2);
INSERT INTO t1 VALUES (3, 3);
INSERT INTO t1 VALUES (4, 4);
SELECT * FROM t1;
创建存储过程:
gbase> DELIMITER //
gbase> CREATE PROCEDURE hunter.test_1()
BEGIN
DECLARE v VARCHAR(200);
DECLARE i INT DEFAULT (0);
DECLARE j INT DEFAULT (0);
DECLARE cur REF CURSOR;
SET v = 'SELECT * FROM hunter.t1';
SET @sql_str = v;
OPEN cur FOR @sql_str;
FETCH cur INTO i, j;
SELECT i, j;
CLOSE cur;
END //
Query OK, 0 rows affected
执行结果:
gbase> DELIMITER ;
gbase> CALL hunter.test_1();
+------+------+
| i
| j
|
+------+------+
|
1 |
1 |
+------+------+
1 row in set
Query OK, 0 rows affected
示例3:动态游标中的预处理语句包含动态SQL 语句。
gbase> DELIMITER //
gbase> CREATE PROCEDURE hunter.test_1()
BEGIN
DECLARE v VARCHAR(200);

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1374
SET v = 'SELECT * FROM hunter.t1 WHERE i = ? AND j = ?';
SET @sql_str = v;
SET @a = 1;
SET @b = 2;
PREPARE stmt FROM @sql_str;
EXECUTE stmt USING @a, @b;
END //
Query OK, 0 rows affected
gbase> DELIMITER ;
gbase> CALL hunter.test_1();
Empty set
Query OK, 0 rows affected

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1375

机架要求
在实际项目中,安装操作系统和 GBase UP 产品前,先进行硬件设备的物理部署,
一般包括,机柜,电源,主机,硬盘,网卡,交换机等物理设备,另外,物理设备
之间的通讯,需要依靠网络的部署。规划机架时需要遵循以下原则:

电源的高可用:两个机柜的电源是独立的,互不影响的,这样遵循了主机供电

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 31
高可用的原则;

交换机高可用:
每个机柜上配置了一台交换机,
两个机柜上共包含2 台交换机,

并且这两台交换机之间是互备的关系,当其中一台交换机发生故障,另一台交
换机立即提供服务,遵循了交换机高可用的原则;

节点机器的高可用性:图中的20 台主机,用于部署GBase UP 产品及Hadoop
生态。Hadoop 生态服务主机应遵循高可用部署原则(小规模集群部署HA 及
机架感知,大规模集群部署联邦+HA 及机架感知)
部署示例
在以下图中,
包含两个机柜
(机柜的电源要保证各自独立供电)

机柜中摆放GBase
UP 产品的节点主机、
Hadoop 生态的节点主机和应用服务器,
他们之间的网络通过
交换机进行通讯,为了保证网络的高效运行,实际项目中的业务网络也需要连接到
这两个互备的交换机上。

节点硬件要求
GBase UP 建议使用如下表配置的机器:
表 3-1 硬件配置表
硬件
最低配置
推荐配置

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 32
硬件
最低配置
推荐配置
处理器
2×4 核 2.0GHz
2×16 核 2.0GHz 或更多
内存
4GB
128GB 或更多
硬盘
SATA 7200 rpm, 100GB
SAS 10k rpm,1TB
光驱
CD-ROM
CD-ROM
配置磁盘RAID

将本地磁盘配置为RAID,操作系统会将多块物理磁盘视之为一个大硬盘,并
具有容错及冗余的功能;

磁盘RAID 还可以支持容量扩展,
只需要加入新的硬盘并执行一些简单的命令,
系统便可以实时利用这新加的容量;

GBase UP 推荐将主机的本地磁盘设置为RAID5(RAID5 设置参考附录配置磁
盘RAID)。RAID5 工作模式,至少需要3 块完全相同的物理磁盘。

Psycopg 是一种用于执行SQL 语句的Python API,
可以为数据库提供统一访问接口。

于此,应用程序可进行数据操作。Psycopg2 是对libpq 的封装,主要使用C 语言实现,既高
效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持COPY TO/COPY
FROM 功能。支持多种类型Python 开箱即用,适配PostgreSQL 数据类型;可以通过灵活的
对象适配系统进行扩展和定制适配。Psycopg2 兼容Unicode 和Python 3。
GBase 8c 数据库支持Psycopg2 特性,并且支持通过SSL 模式链接到Psycopg2。