0%

SequoiaDB-PostgreSql实例操作与事务

创建域、集合空间和集合

进入 SequoiaDB Shell,在 SequoiaDB 巨杉数据库引擎中创建 company 集合空间、 employee 集合和 manager 集合。

1)使用 Linux 命令进入 SequoiaDB Shell 命令行;

1
sdb

2)使用 JavaScript 语法,连接协调节点,获取数据库连接;

1
var db = new Sdb("localhost", 11810);

3)创建 company_domain 数据域;

1
db.createDomain("company_domain", [ "group1", "group2", "group3" ], { AutoSplit: true } );

4)创建 company 集合空间;

1
db.createCS("company", { Domain: "company_domain" } );

5)创建 employee 集合;

1
db.company.createCL("employee", { "ShardingKey": { "empno": 1 }, "ShardingType": "hash", "ReplSize": -1, "Compressed": true, "CompressionType": "lzw", "AutoSplit": true, "EnsureShardingIndex": false } );

6)创建 manager 集合;

1
db.company.createCL("manager", { "ShardingKey": { "empno": 1 }, "ShardingType": "hash", "ReplSize": -1, "Compressed": true, "CompressionType": "lzw", "AutoSplit": true, "EnsureShardingIndex": false } );

7)退出 SequoiaDB Shell;

1
quit;

创建数据库

在 SequoiaSQL-PostgreSQL 实例中创建 company 数据库,为接下来验证 PostgreSQL 语法特性做准备。

1)在 PostgreSQL 实例创建数据库 company;

1
/opt/sequoiasql/postgresql/bin/sdb_sql_ctl createdb company myinst

2)查看数据库;

1
/opt/sequoiasql/postgresql/bin/psql -l

操作截图:

图片描述

配置 PostgreSQL 实例

在 PostgreSQL 实例中加载 SequoiaDB 的连接驱动并配置连接参数。

加载 SequoiaDB 连接驱动

1)登录到 PostgreSQL 实例 Shell;

1
/opt/sequoiasql/postgresql/bin/psql -p 5432 company

2)加载 SequoiaDB 连接驱动;

1
CREATE EXTENSION sdb_fdw;

配置与 SequoiaDB 连接参数

在 PostgreSQL 实例中配置 SequoiaDB 连接参数:

1
2
3
4
5
6
7
8
9
10
CREATE SERVER sdb_server FOREIGN DATA WRAPPER sdb_fdw 
OPTIONS
(
address '127.0.0.1',
service '11810',
user '',
password '',
preferedinstance 'A',
transaction 'on'
);

实例与数据引擎中集合关联

将 PostgreSQL 实例中的外部表并与 SequoiaDB 中的集合空间、集合关联。

1)创建 employee 表;

1
2
3
4
5
6
7
8
CREATE FOREIGN TABLE employee 
(
empno INTEGER,
ename TEXT,
age INTEGER
)
SERVER sdb_server
OPTIONS ( collectionspace 'company', collection 'employee', decimal 'on' );

2)创建 manager 表;

1
2
3
4
5
6
7
CREATE FOREIGN TABLE manager 
(
empno INTEGER,
department TEXT
)
SERVER sdb_server
OPTIONS ( collectionspace 'company', collection 'manager', decimal 'on' );

基本数据操作

SequoiaDB 巨杉数据库的 PostgreSQL 实例支持完整的 CRUD 数据基本操作。

1)验证基本的数据写入操作;

1
2
3
INSERT INTO employee VALUES (1, 'Jacky', 36);
INSERT INTO employee VALUES (2, 'Alice', 18);
INSERT INTO manager VALUES (1, 'Sales Department');

2)验证单表查询与排序;

1
SELECT * FROM employee ORDER BY empno ASC LIMIT 1;

3)验证两表关联功能;

1
SELECT * FROM employee, manager WHERE employee.empno = manager.empno;

4)验证数据更新能力;

1
UPDATE employee SET ename = 'Bob' WHERE empno = 1;

5)查看数据结果;

1
SELECT * FROM employee;

6)验证数据删除能力;

1
DELETE FROM employee WHERE empno = 2;

7)查看数据结果并确认 empno 为 2 的记录被删除;

1
SELECT * FROM employee;

事务操作

SequoiaDB 巨杉数据库的 PostgreSQL 数据库实例支持完整的事务操作能力,本小节将验证其回滚与提交能力。

验证回滚能力

1)开始事务;

1
BEGIN;

2)写入数据;

1
INSERT INTO manager VALUES (2, 'Product Department');

3)回滚事务操作;

1
ROLLBACK;

4)查询写入数据,确保刚才写入的数据被撤销;

1
SELECT * FROM manager WHERE empno = 2;

验证提交能力

1)开始事务;

1
BEGIN;

2)写入数据;

1
INSERT INTO manager VALUES (2, 'Product Department');

3)提交事务;

1
COMMIT;

4)查询写入数据,确保之前写入的数据被正确提交;

1
SELECT * FROM manager WHERE empno = 2;

事务管理

本小节将讲解如何查看并关闭 PostgreSQL 的事务功能,关闭后需要重新进入实例的 Shell 命令行。

1)查看 PostgreSQL 是否打开事务功能;

1
\des+ sdb_server;

操作截图:

图片描述

操作截图中 transaction 的参数值为 on,说明 PostgreSQL 的事务功能已经打开。

2)关闭 PostgreSQL 事务功能;

1
ALTER SERVER sdb_server OPTIONS ( SET transaction 'off' );

3)退出 PostgreSQL 实例 Shell ;

1
\q

4)登录到 PostgreSQL 实例 Shell,使事务功能关闭设置生效;

1
/opt/sequoiasql/postgresql/bin/psql -p 5432 company

5)开始事务;

1
BEGIN;

6)写入数据;

1
INSERT INTO manager VALUES (3, 'Finance Department');

7)回滚事务操作;

1
ROLLBACK;

8)查询写入数据,验证事务功能是否已经关闭;

1
SELECT * FROM manager WHERE empno = 3;

操作截图:

图片描述

如操作截图显示,是能够查询到刚刚写入的数据,说明 PostgreSQL 的事务功能已经关闭,数据库没有执行回滚操作。

创建视图

SequoiaDB 巨杉数据库支持标准的 PostgreSQL 视图功能。本小节将验证其对标准 PostgreSQL 视图能力的支持。

1)创建视图;

1
2
3
4
5
6
7
CREATE VIEW manager_view AS
SELECT
e.ename, m.department
FROM
employee AS e, manager AS m
WHERE
e.empno = m.empno;

2)查询视图数据;

1
SELECT * FROM manager_view;

创建自定义函数

SequoiaDB 巨杉数据库支持标准的 PostgreSQL 自定义函数功能。本小节将验证其对标准 PostgreSQL 自定义函数能力的支持。

1)创建自定义函数;

1
2
3
4
5
6
7
8
CREATE OR REPLACE FUNCTION totalRecords () RETURNS INTEGER AS $total$
DECLARE
total INTEGER;
BEGIN
SELECT COUNT(*) INTO total FROM employee;
RETURN total;
END;
$total$ language plpgsql;

2)调用函数;

1
SELECT totalRecords();

3)退出 PostgreSQL Shell;

1
\q
-------------本文结束感谢您的阅读-------------