当前位置: 首页 > news >正文

doris: Oracle

Apache Doris JDBC Catalog 支持通过标准 JDBC 接口连接 Oracle 数据库。本文档介绍如何配置 Oracle 数据库连接。

使用须知​

要连接到 Oracle 数据库,您需要

  • Oracle 19c, 18c, 12c, 11g 或 10g。

  • Oracle 数据库的 JDBC 驱动程序,您可以从 Maven 仓库下载 Ojdbc8 及以上版本的 Oracle JDBC 驱动程序。

  • Apache Doris 每个 FE 和 BE 节点和 Oracle 服务器之间的网络连接,默认端口为 1521。

连接 Oracle​

CREATE CATALOG oracle PROPERTIES ("type"="jdbc","user"="root","password"="secret","jdbc_url" = "jdbc:oracle:thin:@example.net:1521:orcl","driver_url" = "ojdbc8.jar","driver_class" = "oracle.jdbc.driver.OracleDriver"
)

备注

jdbc_url 定义要传递给 JDBC 驱动程序的连接信息和参数。 使用 Oracle JDBC Thin 驱动程序时,URL 的语法可能会有所不同,具体取决于您的 Oracle 配置。 例如,如果您要连接到 Oracle SID 或 Oracle 服务名称,则连接 URL 会有所不同。 有关更多信息,请参阅 Oracle 数据库 JDBC 驱动程序文档。 以上示例 URL 连接到名为orcl的 Oracle SID。

层级映射​

映射 Oracle 时,Apache Doris 的一个 Database 对应于 Oracle 中的一个 User。而 Apache Doris 的 Database 下的 Table 则对应于 Oracle 中,该 User 下的有权限访问的 Table。即映射关系如下:

Apache DorisOracle
CatalogDatabase
DatabaseUser
TableTable

类型映射​

Oracle 到 Apache Doris 类型映射​

Oracle TypeApache Doris TypeComment
number(p) / number(p,0)TINYINT/SMALLINT/INT/BIGINT/LARGEINTDoris 会根据 p 的大小来选择对应的类型:p < 3 -> TINYINTp < 5 -> SMALLINTp < 10 -> INTp < 19 -> BIGINTp > 19 -> LARGEINT
number(p,s), [ if(s>0 && p>s) ]DECIMAL(p,s)
number(p,s), [ if(s>0 && p < s) ]DECIMAL(s,s)
number(p,s), [ if(s<0) ]TINYINT/SMALLINT/INT/BIGINT/LARGEINTs<0 的情况下,Doris 会将 p 设置为 p+|s|,并进行和 number(p) / number(p,0) 一样的映射
numberDoris 目前不支持未指定 p 和 s 的 oracle 类型
decimalDECIMAL
float/realDOUBLE
DATEDATETIME
TIMESTAMPDATETIME
CHAR/NCHARSTRING
VARCHAR2/NVARCHAR2STRING
LONG/ RAW/ LONG RAW/ INTERVALSTRING
OtherUNSUPPORTED

查询优化​

谓词下推​

  1. 当执行类似于 where dt = '2022-01-01' 这样的查询时,Apache Doris 能够将这些过滤条件下推到外部数据源,从而直接在数据源层面排除不符合条件的数据,减少了不必要的数据获取和传输。这大大提高了查询性能,同时也降低了对外部数据源的负载。

  2. 当变量 enable_ext_func_pred_pushdown 设置为 true,会将 where 之后的函数条件也下推到外部数据源。

    目前支持下推到 Oracle 的函数有:

    Function
    NVL

行数限制​

如果在查询中带有 limit 关键字,Apache Doris 会将 limit 转义为 Oracle 的 rownum 语法,以减少数据传输量。

转义字符​

Apache Doris 会在下发到 Oracle 的查询语句中,自动在字段名与表名上加上转义符:(""),以避免字段名与表名与 Oracle 内部关键字冲突。

http://www.lryc.cn/news/547742.html

相关文章:

  • Android14 OTA差分包升级报Package is for source build
  • 双向选择排序算法
  • Node.js setImmediate 教程
  • MyBatis @Param 注解详解:多参数传递与正确使用方式
  • Spring实战spring-ai运行
  • STL:C++的超级工具箱(一)
  • leetcode349 两个数组的交集
  • 快速生成viso流程图图片形式
  • 鸿蒙Android4个脚有脚线
  • 【NetTopologySuite类库】geojson和shp互转,和自定义对象互转
  • 【哇! C++】类和对象(三) - 构造函数和析构函数
  • Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(一)
  • 浅谈汽车系统电压优缺点分析
  • Springboot基础篇(4):自动配置原理
  • Dify 开源大语言模型应用开发平台使用(一)
  • 机器学习深度学习基本概念:logistic regression和softmax
  • OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()
  • Git - 补充工作中常用的一些命令
  • 使用Python的requests库调用API并处理JSON响应的详细步骤
  • Mybatis如何通过databaseId属性支持不同数据库的不同语法
  • android edittext 防止输入多个小数点或负号
  • windows部署spleeter 版本2.4.0:分离音频的人声和背景音乐
  • 深度学习、宽度学习、持续学习与终身学习:全面解析与其在大模型方面的应用
  • 【量化科普】Arbitrage,套利
  • 删除已加入 .gitignore却仍被git追踪的文件
  • pytest框架 核心知识的系统复习
  • Spring Cloud Alibaba学习 5- Seata入门使用
  • WebAssembly技术及应用了解
  • Deepseek中的MoE架构的改造:动态可变参数激活的MoE混合专家架构(DVPA-MoE)的考虑
  • NodeJS学习笔记