ITPub博客

首页 > 数据库 > 国内数据库 > TDH社区版基础能力演示(一):数据库方言支持与CRUD能力

TDH社区版基础能力演示(一):数据库方言支持与CRUD能力

原创 国内数据库 作者:星环科技TDH社区版 时间:2025-06-09 11:40:40 0 删除 编辑

前言

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) 社区版感兴趣,并希望进一步了解或体验其强大的功能,请访问我们的官方网站前往获取最新版本的产品。

·  产品自助下载地址

·  产品安装教程手册

·  社区版安装视频

·  社区开发版安装视频

·  产品社区


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70046520/viewspace-3087033/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2025-05-26

  • 博文量
    10
  • 访问量
    13113