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

数据库 创建于:06-13 23:48

前言

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

原文地址:https://my.oschina.net/u/9393335/blog/18613142

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

TDH社区版家族