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

doris: PostgreSQL

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

使用须知​

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

  • PostgreSQL 11.x 或更高版本

  • PostgreSQL 数据库的 JDBC 驱动程序,您可以从 Maven 仓库下载最新或指定版本的 PostgreSQL JDBC 驱动程序。推荐使用 PostgreSQL JDBC Driver 42.5.x 及以上版本。

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

连接 PostgreSQL​

CREATE CATALOG postgresql PROPERTIES (
    "type"="jdbc",
    "user"="root",
    "password"="secret",
    "jdbc_url" = "jdbc:postgresql://example.net:5432/postgres",
    "driver_url" = "postgresql-42.5.6.jar",
    "driver_class" = "org.postgresql.Driver"
)

备注

jdbc_url 定义要传递给 PostgreSQL JDBC 驱动程序的连接信息和参数。 支持的 URL 的参数可在 PostgreSQL JDBC 驱动程序文档 中找到。

连接安全​

如果您使用数据源上安装的全局信任证书配置了 TLS,则可以通过将参数附加到在 jdbc_url 属性中设置的 JDBC 连接字符串来启用集群和数据源之间的 TLS。

例如,对于版本 42 的 PostgreSQL JDBC 驱动程序,通过将 ssl=true 参数添加到 jdbc_url 配置属性中启用 TLS:

"jdbc_url"="jdbc:postgresql://example.net:5432/database?ssl=true"

有关 TLS 配置选项的更多信息,请参阅 PostgreSQL JDBC 驱动程序文档。

层级映射​

映射 PostgreSQL 时,Doris 的一个 Database 对应于 PostgreSQL 中指定 database 下的一个 Schema(如示例中 jdbc_url 参数中 postgres 下的 schemas)。而 Doris 的 Database 下的 Table 则对应于 PostgreSQL 中,该 Schema 下的 Tables。即映射关系如下:

DorisPostgreSQL
CatalogDatabase
DatabaseSchema
TableTable

类型映射​

PostgreSQL 到 Doris 类型映射​

PostgreSQL TypeDoris TypeComment
booleanBOOLEAN
smallint/int2SMALLINT
integer/int4INT
bigint/int8BIGINT
decimal/numericDECIMAL
real/float4FLOAT
double precisionDOUBLE
smallserialSMALLINT
serialINT
bigserialBIGINT
charCHAR
varchar/textSTRING
timestamp/timestampzDATETIME
dateDATE
json/jsonbSTRING
timeSTRING
intervalSTRING
point/line/lseg/box/path/polygon/circleSTRING
cidr/inet/macaddrSTRING
bitBOOLEAN/STRING
uuidSTRING
OtherUNSUPPORTED

提示

  • 无精度 numeric 会被映射为 String 类型,进行数值计算时需要先转换为 DECIMAL 类型,且不支持回写。
  • 为了更好的读取与计算性能均衡,Doris 会将 JSON 类型映射为 STRING 类型。
  • Doris 不支持 BIT 类型,BIT 类型会在 BIT(1) 时被映射为 BOOLEAN,其他情况下映射为 STRING。
  • Doris 不支持 time 类型,TIME 类型会被映射为 STRING。

时间戳类型处理​

由于 Doris 不支持带时区的时间戳类型,所以在读取 PostgreSQL 的 timestampz 类型时,Doris 会将其映射为 DATETIME 类型,且会在读取时转换成本地时区的时间。

且由于在 JDBC 类型 Catalog 读取数据时,BE 的 Java 部分使用 JVM 时区。JVM 时区默认为 BE 部署机器的时区,这会影响 JDBC 读取数据时的时区转换。

为了确保时区一致性,建议在 be.conf 的 JAVA_OPTS 中设置 JVM 时区与 Doris session 的 time_zone 一致。

查询优化​

谓词下推​

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

行数限制​

如果在查询中带有 limit 关键字,Doris 会将 limit 下推到 PostgreSQL,以减少数据传输量。

转义字符​

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

相关文章:

  • c语言笔记 函数指针
  • K8S学习之基础九:k8s中pod的生命周期
  • Spark(5)host配置
  • 线上图片验证码性能优化base64编码
  • html播放本地音乐
  • 【HDLbits--FSM续(二)】
  • 游戏引擎学习第138天
  • R语言的基础命令及实例操作
  • sqlmap:从基础用法到漏洞利用实战
  • Zookeeper学习
  • 前端到AI,LangChain.Js(五)
  • DeepSeek V3 源码:从入门到放弃!
  • CInternetToolbar::_CommonHandleFileSysChange函数分析之CReBar::_IDToIndex函数的作用
  • Yocto Linux 量产 BSP 镜像定制
  • C++中避免重复虚函数的三大解决方案:以卡牌游戏开发为例
  • ArcGIS Pro:轻松制作地震动画,洞察灾害动态
  • Kubernetes全解析:从容器编排到云原生霸主
  • Arcgis中添加脚本工具箱
  • Java后端大厂高频面经——Java基础
  • *VulnHub-FristiLeaks:1.3暴力解法、细节解法,主打软硬都吃,隧道搭建、寻找exp、提权、只要你想没有做不到的姿势
  • 惠州网站建设/河南做网站的公司
  • 婚纱网站设计代码html/百度链接提交入口
  • 网站建设新闻 常识/北京做网站的公司有哪些
  • b2b网站推广方案怎么写/裂变营销五种模式十六种方法
  • 长沙专业网站建设/宁波优化关键词首页排名
  • 网站服务器租用价格一般多少钱?/百度快照