前言
TDH社区版产品配备了星环科技自主研发的、具备极强竞争力和高度成熟的关系型分析引擎——Inceptor。该引擎不仅在性能与扩展性方面表现出色,同时实现了对传统关系型数据库语法的高度兼容,支持包括 Oracle、DB2 和 Teradata 等主流数据库方言,能够帮助用户平滑迁移已有业务系统,降低改造成本。
此外,Inceptor 支持完整的 PL/SQL 存储过程功能,为复杂业务逻辑的实现提供了强大支持,进一步增强了其在企业级数据分析场景中的适用性。在基础的数据操作方面,Inceptor 完全支持 CRUD(创建 Create、读取 Read、更新 Update、删除 Delete)操作,并提供对 MERGE 等高级数据操作语句的支持,满足多样化的数据处理需求。通过这些能力,Inceptor 不仅可以作为传统关系型数据库的替代方案,也能够在大数据环境下提供高效、可靠、兼容性强的查询与分析能力,适用于各类数据分析场景。
SQL兼容性能力演示
下面的示例将以orc事务表为例,数据内容仅用作演示,具体建表过程中需要注意的实现以及其他细节请参考Inceptor开发者指南。
!set plsqlUseSlash true
DROP PROCEDURE IF EXISTS merge_from_increment;
SET transaction.type = inceptor;
CREATE OR REPLACE PROCEDURE merge_from_increment(var_in IN NUMBER, var_out OUT NUMBER) IS
BEGIN
BEGIN TRANSACTION;
DBMS_OUTPUT.PUT_LINE('启动 merge_from_increment: ' || var_in);
-- 变量赋值
var_out := var_in + 10;
-- 插入初始员工数据
INSERT INTO ce_demo.employee VALUES (1, 'Tom', 2000, 1, '2014-3-20', '公司创始人');
INSERT INTO ce_demo.employee VALUES (2, 'Jack', 6000, 0, '2015-6-1', '一个好人');
INSERT INTO ce_demo.employee VALUES (3, 'Lucy', 1500, 0, '2017-6-1', '麻烦制造者');
INSERT INTO ce_demo.employee VALUES (4, '离职', 1500, 0, '2017-6-2', '待删除');
INSERT INTO ce_demo.employee(id, name, salary, bouns, enroll_time, note)
VALUES (5, '', 10000, 0, '2017-8-28', '空ID');
-- 更新员工备注
UPDATE ce_demo.employee SET note = '干得好!' WHERE id = 2;
-- 删除特定员工记录
DELETE FROM ce_demo.employee WHERE id = 4;
-- 插入增量数据
INSERT INTO ce_demo.employee_increment VALUES (2, NULL, 6500, 1);
INSERT INTO ce_demo.employee_increment VALUES (3, '离职', 0, 0);
INSERT INTO ce_demo.employee_increment VALUES (4, 'Rob', 12000, 0);
INSERT INTO ce_demo.employee_increment(id, salary, bouns) VALUES ('', 10000, 0);
-- 使用 MERGE 语句合并主表与增量表
MERGE INTO ce_demo.employee dest
USING ce_demo.employee_increment src
ON (dest.id = src.id)
WHEN MATCHED THEN
UPDATE SET
name = CASE WHEN src.name IS NULL THEN dest.name ELSE src.name END,
salary = CASE WHEN src.salary IS NULL THEN dest.salary ELSE src.salary END,
bouns = CASE WHEN src.bouns IS NULL THEN dest.bouns ELSE src.bouns END
WHEN NOT MATCHED THEN
INSERT (id, name, salary, bouns, enroll_time, note)
VALUES (src.id, src.name, src.salary, src.bouns, SYSDATE, '欢迎新员工!');
-- 删除离职员工
DELETE FROM ce_demo.employee WHERE name = '离职';
-- 提交事务
COMMIT;
-- 输出完成信息
DBMS_OUTPUT.PUT_LINE('update_from_increment 完成.');
END merge_from_increment;
/
-- 调用存储过程,执行涨薪操作
SET transaction.type = inceptor;
DECLARE
v_out NUMBER;
BEGIN
merge_from_increment(1, v_out);
DBMS_OUTPUT.PUT_LINE('out merge_from_increment: ' || v_out);
END;
/
-- 查询员工表以验证数据更新结果
SELECT * FROM ce_demo.employee;
-- 如需再次运行,请先清空相关表数据
DELETE FROM ce_demo.employee_increment WHERE 1 = 1;
DELETE FROM ce_demo.employee WHERE 1 = 1;
通过上述示例,您可以清晰地看到 Inceptor 在 SQL 兼容性、事务控制以及复杂逻辑处理方面的强大能力。无论是传统数据库的迁移适配,还是大数据环境下高性能查询与分析,Inceptor 都能提供稳定、高效的解决方案。如果您对 Transwarp Data Hub (TDH) 社区版感兴趣,并希望进一步了解或体验其强大的功能,请访问我们的官方网站前往获取最新版本的产品。