Apache Doris ODBC外表之Postgresql使用指南

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 希望Doris 2022年起飞,顺利从Apache 孵化器毕业成顶级项目,给大家带来更快、更稳定、生态更丰富的MPP OLAP分析型数据库产品。

今天是2022年阳历新年第一天,祝大家元旦快乐,这也是2022年第一篇文章,后续会给大家带来更多关于Doris的文章,同时也希望Doris 2022年起飞,顺利从Apache 孵化器毕业成顶级项目,给大家带来更快、更稳定、生态更丰富的MPP OLAP分析型数据库产品。


Apache Doris 社区 2022 年的总体规划,包括待开展或已开展、以及已完成但需要持续优化的功能、文档、社区建设等多方面,我们期待有更多的小伙伴参与进来讨论。同时也希望多多关注Doris,给Doris加Star


Apache Doris 2022 Roadmap


该使用指南之针对Ubuntu环境来进行测试的,Centos环境可以参考,但是不确保一定能成功。


1.软件环境


  1. 操作系统:ubuntu 18.04
  2. Apache Doris :0.15
  3. Postgresql数据库:PostgreSQL 12.9
  4. UnixODBC:2.3.4
  5. Mysql Connector ODBC :5.3.13、8.0.11、8.0.26


2.安装ODBC驱动


首先我们安装unixODBC驱动、这里直接给出驱动的下载地址及安装命令

sudo wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz 
tar -xvzf unixODBC-2.3.4.tar.gz 
cd unixODBC-2.3.4/
sudo ./configure --prefix=/usr/local/unixODBC-2.3.7 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
make
sudo make install

安装成功后,unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。


验证安装是否成功


# odbcinst -j
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

3.安装Postgresql数据库


Ubuntu的默认存储库包含Postgres软件包,因此您可以使用apt安装这些软件包。


安装之前先用apt更新一下本地软件包,然后,安装Postgres包和一个附加实用程序和功能的- managed包:

$ sudo apt update
$ sudo apt install postgresql postgresql-contrib

现在已经安装了该软件,我们可以了解它的工作原理以及它与您可能使用的类似数据库管理系统的不同之处。


3.1 使用PostgreSQL roles和数据库


默认情况下,Postgres使用称为“roles”的概念来处理身份验证和授权。在某些方面,这些类似于常规的Unix风格帐户,但Postgres不区分用户和组,而是更喜欢更灵活的术语“roles”。


安装后,Postgres设置为使用ident身份验证,这意味着它将Postgresroles与匹配的Unix / Linux系统帐户相关联。如果Postgres中存在roles,则具有相同名称的Unix / Linux用户名可以作为该roles登录。


安装过程创建了一个名为postgres的用户帐户,该帐户与默认的Postgresroles相关联。要使用Postgres,您可以登录该帐户。


有几种方法可以使用此帐户访问Postgres。


3.2 切换到postgres帐户


输入以下内容切换到服务器上的postgres帐户:

$ sudo -i -u postgres

您现在可以通过输入以下内容立即访问Postgres提示:

$ psql

这将使您进入PostgreSQL提示符,从此处您可以立即与数据库管理系统进行交互。

输入以下命令退出PostgreSQL提示符:

postgres=# \q

这将带您回到postgresLinux命令提示符。


3.3 在不切换帐户的情况下访问Postgres


您也可以让postgres帐户用sudo运行您想要的命令。


例如,在最后一个示例中,您被指示通过首先切换到postgres用户然后运行psql以打开Postgres提示来进入Postgres提示。您可以通过psqlpostgres用户身份运行单个命令来一步完成此操作sudo,如下所示:


$ sudo -u postgres psql

这将直接登录到Postgres,中间没有中间bashshell。


同样,您可以通过输入以下内容退出交互式Postgres会话:

postgres=# \q

许多用例需要多个Postgresroles。继续阅读以了解如何配置这些


3.4 创建用户,数据库及表


使用默认用户登录postgresql创建用户、创建数据库及完成授权


$ sudo -u postgres psql

创建数据库新用户,如 dbuser:


postgres=# CREATE USER dbuser WITH PASSWORD 'zhangfeng';

注意:


语句要以分号结尾。 密码要用单引号括起来。 创建用户数据库,你也可以通过你创建的用户登录进去以后创建数据库,如demo:


postgres=# CREATE DATABASE demo OWNER dbuser;

将demo数据库的所有权限都赋予dbuser:


postgres=# GRANT ALL PRIVILEGES ON DATABASE demo TO dbuser;

使用命令 \q 退出psql:


postgres=# \q

创建Linux普通用户,与刚才新建的数据库用户同名,如 dbuser:


$ sudo adduser dbuser
$ sudo passwd dbuser

以dbuser的身份连接数据库exampledb:


$ su - dbuser
Password: 
Last login: Wed Mar 1 11:52:07 CST 2017 on pts/

用我们创建的用户(dbuser)登录psql


# sudo -u dbuser psql -U dbuser -d demo
could not change directory to "/root": Permission denied
psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.
demo=> \d
                    List of relations
 Schema |           Name            |   Type   |  Owner
--------+---------------------------+----------+----------
 public | playground                | table    | postgres
 public | playground_1              | table    | dbuser
 public | playground_1_equip_id_seq | sequence | dbuser
 public | playground_equip_id_seq   | sequence | postgres
(4 rows)

创建表及插入数据


CREATE TABLE playground_test_odbc (
    equip_id serial PRIMARY KEY,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) ,
    install_date date
);

示例数据


INSERT INTO playground_test_odbc (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
INSERT INTO playground_test_odbc (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

执行结果

demo=> CREATE TABLE playground_test_odbc (
demo(>     equip_id serial PRIMARY KEY,
demo(>     type varchar (50) NOT NULL,
demo(>     color varchar (25) NOT NULL,
demo(>     location varchar(25) ,
demo(>     install_date date
demo(> );
CREATE TABLE
demo=> INSERT INTO playground_test_odbc (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
INSERT 0 1
demo=> INSERT INTO playground_test_odbc (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');
INSERT 0 1

4.安装Postgresql ODBC驱动


这里我们下载是和数据版本相对于的驱动程序


wget https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-12.02.0000.tar.gz
tar zxvf psqlodbc-12.02.0000.tar.gz
cd psqlodbc-12.02.0000
./configure --without-libpq   (注:由于本机未安装postgresql,故使用without-libpq选项) 
./configure
make
make install

如果在编译过程中出现下面的错误


configure: error: libpq library version >= 9.2 is required

这是因为缺少libpq的包,需要进行安装,执行下面的命令


apt-get install libpq-dev

安装成功,默认驱动放在/usr/local/lib/psqlodbcw.so下


5.验证ODBC驱动是否成功


5.1 配置注册Postgresql ODBC驱动


编辑/etc/odbcinst.ini,加入下面的内容


[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/local/lib/psqlodbcw.so
Driver64 = /usr/local/lib/psqlodbcw.so
Setup = /usr/lib/libodbc.so    ##注意这里是在第二节安装的unixODBC的so文件路径
Setup64 = /usr/lib/libodbc.so
FileUsage = 1

5.2 配置PG 数据源


编辑/etc/odbc.ini


加入下面内容

[PostgresDB]
Driver = PostgreSQL    ###这里的名称和odbcinst.ini里配置的名称一致
Description = Postgres DSN
Servername = localhost
Database = demo
Username = dbuser
Password = zhangfeng
Port = 5432
ReadOnly = No

其他的是你的Postgresql地址及刚才创建的用户、密码、数据库、端口等


5.3 验证是否成功


isql -v PostgresDB dbuser zhangfeng
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

注意这里的PostgresDB是我们在odbc.ini里定义的名称,这里显示ODBC正常


6.Apache Doris PG外表验证


6.1 修改配置


修改BE节点conf/odbcinst.ini文件,加入刚才/etc/odbcinst.ini添加的一样内容,并删除原先的PostgreSQL配置

[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/local/lib/psqlodbcw.so
Driver64 = /usr/local/lib/psqlodbcw.so
Setup = /usr/lib/libodbc.so
Setup64 = /usr/lib/libodbc.so
FileUsage = 1

6.2 验证


创建PG ODBC Resource


CREATE EXTERNAL RESOURCE `pg_12`
 PROPERTIES (
"host" = "localhost",
 "port" = "5432",
 "user" = "dbuser",
 "password" = "zhangfeng",
 "database" = "demo",
 "table" = "playground_test_odbc",
 "driver" = "PostgreSQL",  
 "odbc_type" = "postgresql",
 "type" = "odbc_catalog"
 );

创建ODBC外表

CREATE EXTERNAL TABLE `playground_odbc_12` (
    equip_id int NOT NULL,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) ,
    install_date date
) ENGINE=ODBC
COMMENT "ODBC"
PROPERTIES (
"odbc_catalog_resource" = "pg_12", 
"database" = "demo",
"table" = "playground_test_odbc"
);

在Doris下执行查询:

ysql> show tables;
+--------------------+
| Tables_in_demo     |
+--------------------+
| playground_odbc_12 |
| test_odbc_5        |
| test_odbc_8        |
| test_odbc_8_0_26   |
| test_odbc_mysql    |
| test_odbc_mysql_8  |
+--------------------+
6 rows in set (0.00 sec)
mysql> select * from playground_odbc_12;
+----------+-------+--------+-----------+--------------+
| equip_id | type  | color  | location  | install_date |
+----------+-------+--------+-----------+--------------+
|        1 | slide | blue   | south     | 2017-04-28   |
|        2 | swing | yellow | northwest | 2018-08-16   |
+----------+-------+--------+-----------+--------------+
2 rows in set (0.01 sec)

OK,一切正常,相对Mysql PG的ODBC驱动更简单一些,只要你的PG版本和ODBC驱动版本对应上问题都不大。




相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
4天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
5天前
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
|
5天前
|
SQL DataWorks 关系型数据库
阿里云 DataWorks 正式支持 SelectDB & Apache Doris 数据源,实现 MySQL 整库实时同步
阿里云数据库 SelectDB 版是阿里云与飞轮科技联合基于 Apache Doris 内核打造的现代化数据仓库,支持大规模实时数据上的极速查询分析。通过实时、统一、弹性、开放的核心能力,能够为企业提供高性价比、简单易用、安全稳定、低成本的实时大数据分析支持。SelectDB 具备世界领先的实时分析能力,能够实现秒级的数据实时导入与同步,在宽表、复杂多表关联、高并发点查等不同场景下,提供超越一众国际知名的同类产品的优秀性能,多次登顶 ClickBench 全球数据库分析性能排行榜。
|
27天前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
22天前
|
存储 小程序 Apache
10月26日@杭州,飞轮科技 x 阿里云举办 Apache Doris Meetup,探索保险、游戏、制造及电信领域数据仓库建设实践
10月26日,由飞轮科技与阿里云联手发起的 Apache Doris 杭州站 Meetup 即将开启!
47 0
|
3月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
44 1
|
20天前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
491 13
Apache Flink 2.0-preview released
|
24天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
54 3
|
2月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
3月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
203 2

推荐镜像

更多