目的:通过PostgreSQL的fdw读取存储在oracle blob中的图片数据,与存储在PostgreSQL bytea中的图片数据进行人脸检测和对比,测试人脸对比耗时。
最终结论:此场景下每次人脸对比耗时1秒左右
主要步骤:安装oracle fdw extension -> 安装人脸对比的extension -> 编写sql调用测试
安装oracle fdw extension
需要先安装oracle客户端,再编译安装oracle fdw。
详见: https://my.oschina.net/liuyuanyuangogo/blog/500732?tdsourcetag=s_pctim_aiomsg
创建extension:
创建oracle server
创建user mapping
创建外部表
查询测试
安装人脸对比extension
具体实现不细说,调用规范如下,ai_face_compare的参数为bytea类型(存储图片二进制值),返回值为double(图片相似度):
CREATE FUNCTION ai_face_compare(bytea,bytea) RETURNS TEXT
AS '$libdir/ai_face_compare'
LANGUAGE C IMMUTABLE STRICT;
创建extension:
create extension ai_face_compare;
编写SQL测试调用
数据:
oracle数据库TEST.OTB表中的C1和C2分别存储两张图片的二进制值,
PostgreSQL数据库tb表中的c1和c2存储同样两张图片的二进制值
创建oracle 外部表:
调用人脸对比函数查看耗时: