暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

AntDB-M的扩展功能,性能提升和热更新轻松搞定四

北陌 2024-03-11
32

AntDB-M的扩展功能,性能提升和热更新轻松搞定DBC-AntDB数据库团队

 

AntDB-M的基本功能包括提供各种各样的内置函数,比如数值类型函数SUM,字符型函数STRCMP,日期时间型函数ADDDATE等,这些内置的函数给使用者提供了处理基本数据类型的能力,增强了AntDB-M的功能。

AntDB-M的内置函数作为基本功能,提供了开箱即用的使用体验。如果我们把业务的某些功能写成函数,就像内置函数一样,这样就可以把业务直接嵌入到了数据库中,成为了数据库能力的一部分。 对于业务来说,直接调用这些函数就完成了业务逻辑的处理,对于数据库产品来说,扩展了数据库的功能。这种扩展功能叫做UDF(用户自定义函数)。

AntDB-M支持通过UDF的形式来扩展数据库功能。对于UDF的实现和使用要遵循下面的约束:

l UDF要使用C/C++语言实现

l UDF接受字符串,整型,浮点型的值作为参数,也可以返回这些类型的值。对于复杂自定义数据类型,可以序列化为字符串

l UDF要编译成动态库,即目标系统要支持动态库

l UDF使用CREATE/DROP FUNCTION进行函数创建和删除

l UDF使用时,要先创建


一个简单类型的UDF至少需要实现下面三个函数:

l 初始化函数:

这个函数的作用包括:

检查传入主函数的参数个数

检查传入主函数的参数类型

如果主函数内部,需要分配内存,可以在这里进行分配

指定返回值的信息

 

l 主函数:

这个函数的作用包括:

实现具体的功能。

 

l 销毁函数:

这个函数的作用包括:

释放初始化函数内分配的内存

其它清理工作

 

下面通过实现一个UDF来说明三个函数的具体实现:

假设我们要实现一个UDF,这个UDF的功能是对输入的两个参数进行相加,UDF的名字叫做My_SUM。

初始化函数:

my_bool My_SUM_init(UDF_INIT *initid, UDF_ARGS *args, char *message)

{

//参数类型校验

if(args->arg_type[0] != INT_RESULT || args->arg_type[1] != INT_RESULT)

{

strcpy(message,"My_SUM() requires a integer and an integer");

     return 1;

}

else

{

return 0;

}

}

 

主函数:

long long My_SUM(UDF_INIT *initid, UDF_ARGS *args,char *is_null, char *error)

{

//实现具体的功能

long long left_val = *((long long*) args->args[0]);

long long right_val = *((long long*) args->args[1]);

return left_val + right_val;

}


销毁函数:

void My_SUM_deinit(UDF_INIT *initid)

{

//清理工作

}

 

假设编译生成的动态库名字是:my_sum_udf.so。

 

使用CREATE FUNCTION命令创建函数:

CREATE FUNCTION My_SUM RETURNS INTEGER SONAME 'my_sum_udf.so';

 

使用UDF:

SELECT My_SUM(10,15);

 

使用DROP FUNCTION命令删除函数:

DROP FUNCTION My_SUM;

 

AntDB-M的扩展功能主要有以下几个优点:

1.性能提升
应用通过JDBC等驱动程序访问数据库,要经过多次网络交互才能操作一次事务中访问的数据,并且一次查询要经过SQL解析,SQL优化,生成执行计划,执行计划访问引擎接口才能访问到数据;使用UDF只要调用一次就可以了,UDF通过简单的SQL解析,就直接在存储引擎内进行数据访问,跳过SQL层的其它处理过程。


图1:普通查询执行过程

 


图2:UDF执行过程

 

2.热升级

业务功能封装成UDF编译成动态库,可以动态进行加载和卸载。如果业务功能需要进行升级,不需要停掉数据库,只要卸载在使用中的动态库,加载新的动态库就可以了。这样降低了升级的时间和风险。

 


图3:热升级示例图

 

 

关于AntDB数据库

AntDB数据库始于2008年,是亚信科技自主研发的分布式关系型数据库品牌,AntDB-M是面向高性能内存型数据库,是AntDB的子产品之一,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行近15年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论