Apache Doris ODBC外表之Postgresql使用指南

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 希望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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
8天前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
7天前
|
存储 JSON 物联网
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
本文我们将聚焦企业最普遍使用的 JSON 数据,分别介绍业界传统方案以及 Apache Doris 半结构化数据存储分析的三种方案,并通过图表直观展示这些方案的优势与不足。同时,结合具体应用场景,分享不同需求场景下的使用方式,帮助用户快速选择最合适的 JSON 数据存储及分析方案。
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
|
14天前
|
SQL 消息中间件 Java
兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)
通过兼容 Connector 插件,Apache Doris 能够支持 Trino/Presto 可对接的所有数据源,而无需改动 Doris 的内核代码。
兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)
|
21天前
|
存储 消息中间件 运维
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
招联内部已有 40+ 个项目使用 Apache Doris ,拥有超百台集群节点,个别集群峰值 QPS 可达 10w+ 。通过应用 Doris ,招联金融在多场景中均有显著的收益,比如标签关联计算效率相较之前有 6 倍的提升,同等规模数据存储成本节省超 2/3,真正实现了降本提效。
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
|
15天前
|
存储 大数据 数据挖掘
【数据新纪元】Apache Doris:重塑实时分析性能,解锁大数据处理新速度,引爆数据价值潜能!
【9月更文挑战第5天】Apache Doris以其卓越的性能、灵活的架构和高效的数据处理能力,正在重塑实时分析的性能极限,解锁大数据处理的新速度,引爆数据价值的无限潜能。在未来的发展中,我们有理由相信Apache Doris将继续引领数据处理的潮流,为企业提供更快速、更准确、更智能的数据洞察和决策支持。让我们携手并进,共同探索数据新纪元的无限可能!
61 11
|
25天前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
31 1
|
23天前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
86 2
|
25天前
|
消息中间件 分布式计算 Hadoop
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
34 3
|
25天前
|
消息中间件 运维 Kafka
Apache Flink 实践问题之达到网卡的最大速度如何解决
Apache Flink 实践问题之达到网卡的最大速度如何解决
34 2
|
26天前
|
消息中间件 前端开发 Kafka
【Azure 事件中心】使用Apache Flink 连接 Event Hubs 出错 Kafka error: No resolvable bootstrap urls
【Azure 事件中心】使用Apache Flink 连接 Event Hubs 出错 Kafka error: No resolvable bootstrap urls

热门文章

最新文章

推荐镜像

更多