kylin-v10sp2-Babelfish for PostgreSQL

2024-06-20 22:36

本文主要是介绍kylin-v10sp2-Babelfish for PostgreSQL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境准备

x86_linux_kylin v10 sp2

1、依赖

yum makecache
yum install -y uuid-devel

2、源代码

下载支持babelfish的pg,也是babelfish社区维护更新

cd /opt#pg源码,支持babelfish版
git clone https://github.com/babelfish-for-postgresql/postgresql_modified_for_babelfish.git#babelfish扩展
git clone https://github.com/babelfish-for-postgresql/babelfish_extensions.git

git clone https://github.com/babelfish-for-postgresql/postgresql_modified_for_babelfish.git

git clone https://github.com/babelfish-for-postgresql/babelfish_extensions.git

 3、安装cmake和antlr

babelfishpg_tsql需要antlr,建议安装和babelfish编译相同的版本,antlr-4.9.2

3.1、utfcpp(antlr依赖)可以连接外网忽略此步

cd /usr/src/
wget https://github.com/nemtrif/utfcpp/archive/refs/tags/v3.1.1.tar.gz
tar -xvf v3.1.1.tar.gz
cd utfcpp-3.1.1
cmake -B bin -DUTF8_TESTS=OFF
cmake --build bin --config Debug
cmake --install bin --config Debug#环境变量  暂时未测试
export UTFCPP_HOME=/usr/local/utfcpp-3.1.1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include

3.2、安装antlr

cd /opt
wget https://codeload.github.com/antlr/antlr4/zip/refs/tags/4.9.3
unzip 4.9.3
cd antlr4-4.9.3/runtime/Cpp
mkdir build && cd build
EXTENSIONS_SOURCE_CODE_PATH=/opt/babelfish_extensions
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/antlr-4.9.3 \
-DANTLR_JAR_LOCATION=/opt/babelfish_extensions/contrib/babelfishpg_tsql/antlr/thirdparty/antlr/antlr-4.9.3-complete.jar#修改git源  https://github.com/antlr/antlr4/pull/3192
#git config --global url.https://github.com/.insteadOf git://github.com/
make -j4
make install

4、编译babelfish的pg


#创建安装目录
INSTALLATION_PATH=/usr/local/pgsql 
mkdir $INSTALLATION_PATH#构建配置
cd /opt/postgresql_modified_for_babelfish./configure CFLAGS="-ggdb" \
--prefix=$INSTALLATION_PATH \
--enable-debug \
--with-libxml \
--with-uuid=ossp \
--with-icu \
--with-extra-version="Babelfish for PostgreSQL"#编译pg
make -j4 && make install   #编译pg扩展
cd contrib 
make -j4 && make install#copy antlr
cp /usr/local/antlr-4.9.3/lib/libantlr4-runtime.so /usr/local/pgsql/lib/
cp /usr/local/antlr-4.9.3/lib/libantlr4-runtime.so.4.9.3 /usr/local/pgsql/lib/

5、构建安装babelfish扩展

设置临时环境变量 

export PG_CONFIG=$INSTALLATION_PATH/bin/pg_config
export PG_SRC=/opt/postgresql_modified_for_babelfish
export cmake=/usr/local/cmake-3.21.1/bin/cmake#antlr
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/antlr-4.9.3/include/antlr4-runtime
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/antlr-4.9.3/lib

编译

#babelfishpg_money
cd /opt/babelfish_extensions/contrib/babelfishpg_money
make
make install#babelfishpg_common
cd /opt/babelfish_extensions/contrib/babelfishpg_common
make 
make install#babelfishpg_tds
cd /opt/babelfish_extensions/contrib/babelfishpg_tds
make 
make install#babelfishpg_tsql
cd /opt/babelfish_extensions/contrib/babelfishpg_tsql
make
make install

编辑babelfishpg_tsql可能出现的错误:

/usr/bin/ld: src/pl_comp-2.o:/opt/babelfish_extensions/contrib/babelfishpg_tsql/src/pl_comp-2.c:27: multiple definition of `pltsql_curr_compile_body_lineno'; src/pl_comp.o:/opt/babelfish_extensions/contrib/babelfishpg_tsql/src/pl_comp.c:65: first defined here
/usr/bin/ld: src/backend_parser/gram-backend.o:(.bss+0x20): multiple definition of `pgtsql_base_yydebug'; src/backend_parser/parser.o:(.bss+0x0): first defined here

参考官方PR修改记录Could not compile extensions with LLVM · Issue #2423 · babelfish-for-postgresql/babelfish_extensions (github.com)

不知道什么原因代码没有合并到分支,修改后即可通过编译。

6、创建postgres用户,修改pg配置

6.1、创建用户

useradd postgres -m

6.2、环境变量

vi /home/postgres/.bash_profile
export INSTALLATION_PATH=/usr/local/pgsql
export PGHOME=$INSTALLATION_PATH
export PGDATA=$PGHOME/data
export PATH=$PGHOME/bin:$PATH
source /home/postgres/.bash_profile

6.3、修改配置

初始化 

initdb

修改auto.conf 

vi /usr/local/pgsql/data/postgresql.auto.conf
listen_addresses = '*'
port = 5432
shared_preload_libraries = 'babelfishpg_tds'

修改hba.conf 

vi data/pg_hba.confhost    all             all             0.0.0.0/0                md5

启动 

pg_ctl start[postgres@baidu pgsql]$ psql
psql (16.3Babelfish for PostgreSQL)
Type "help" for help.postgres=# select version();version
----------------------------------------------------------------------------------------------------------------------------------PostgreSQL 16.3Babelfish for PostgreSQL on x86_64-pc-linux-gnu, compiled by gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1), 64-bit
(1 row)

7、创建扩展

migration_mode有2种模式,在single-db的情况下,MS SQL数据库被映射到PostgreSQL中的模式。在multi-db情况下,可使用多个数据库。

--创建用户
create user testuser superuser password 'testuser';
--创建目标库
create database testdb owner testuser;
--切换到新库
\c testdb--创建 Babelfish 扩展
create extension if not exists "babelfishpg_tds" cascade;--设置 Babelfish 数据库名称
alter system set babelfishpg_tsql.database_name = 'testdb';--设置数据库迁移模式---支持多数据库模式
alter database testdb set babelfishpg_tsql.migration_mode = 'multi-db';--重新加载 PostgreSQL 配置,使之前的配置生效
select pg_reload_conf();--初始化 Babelfish,设置必要的系统对象和配置
call sys.initialize_babelfish('testuser');

注意:一旦初始化成功,比如想删掉用户之类的,需要tsql 或 sqlcmd,通过发送sql的方式连接pg删除。

8、使用tsql测试

#安装tsql
yum install freetds -y[root@baidu /]# tsql -S localhost -U testuser -P testuser;
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Changed database context to 'master'.
1> select version();
2> go
version
Babelfish for PostgreSQL with SQL Server Compatibility - 12.0.2000.8
Jun 19 2024 15:51:16
Copyright (c) Amazon Web Services
PostgreSQL 16.3Babelfish for PostgreSQL on x86_64-pc-linux-gnu (Babelfish 4.3.0)
(1 row affected)
1> exit

这篇关于kylin-v10sp2-Babelfish for PostgreSQL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079452

相关文章

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

PostgreSQL入门介绍

一、PostgreSQL 背景及主要功能介绍 1、背景 PG数据库,全称为PostgreSQL数据库,是一款开源的关系型数据库管理系统(RDBMS)。其起源可以追溯到20世纪80年代末和90年代初,由加拿大的计算机科学家Michael Stonebraker及其团队在加州大学伯克利分校启动。该项目旨在创建一个强大的、开源的关系型数据库管理系统,作为早期关系型数据库系统Ingres的继承者。Mi

PostgreSQL索引介绍

梦中彩虹   博客园首页新随笔联系管理 随笔 - 131  文章 - 1  评论 - 14 PostgreSQL索引介绍 INDEX 索引是增强数据库性能的常用方法。索引使得数据库在查找和检索数据库的特定行的时候比没有索引快的多。但索引也增加了整个数据库系统的开销,所以应该合理使用。 介绍 假设我们有一个类似这样的表: CREATE TABLE test1 (id integ

PostgreSQL分区表(partitioning)应用实例详解

https://www.jb51.net/article/97937.htm   PostgreSQL分区表(partitioning)应用实例详解  更新时间:2016年11月22日 10:25:58   作者:小灯光环    我要评论   这篇文章主要为大家详细介绍了PostgreSQL分区表(partitioning)应用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

PostgreSql中WITH语句的使用

https://blog.csdn.net/chuan_day/article/details/44809125 PostgreSql中WITH语句的使用 With语句是为庞大的查询语句提供了辅助的功能。这些语句通常是引用了表表达式或者CTEs(一种临时数据的存储方式),可以看做是一个查询语句的临时表。在With语句中可以使用select,insert,update,delete语句。当然wit

PostgreSQL 17即将发布,新功能Top 3

按照计划,PostgreSQL 17 即将在 2024 年 9 月 26 日发布,目前已经发布了第一个 RC 版本,新版本的功能增强可以参考 Release Notes。 本文给大家分享其中 3 个重大的新增功能。 MERGE 语句增强 MERGE 语句是 PostgreSQL 15 增加的一个新功能,它可以在单个语句中实现 INSERT、UPDATE 以及 DELETE 操作,非常适合数据

Peewee+Postgresql+PooledPostgresqlDatabase重连机制

需求: Postgresql数据库服务重启后,需要业务代码正常读写数据库 方案: 通过继承playhouse.shortcuts.ReconnectMixin和playhouse.pool.PooledPostgresqlDatabase来创建一个新的ReconnectPooledPostgresqlDatabase类修改reconnect_errors属性来适配Postgresql

Apache Kylin VS Apache Doris全方位对比

1 系统架构 1.1 What is Kylin1.2 What is Doris2 数据模型 2.1 Kylin的聚合模型2.2 Doris的聚合模型2.3 Kylin Cuboid VS Doris RollUp2.4 Doris的明细模型3 存储引擎4 数据导入5 查询6 精确去重7 元数据8 高性能9 高可用10 可维护性 10.1 部署10.2 运维10.3 客服11 易用性 11.1

Apache Kylin 在美团数十亿数据 OLAP 场景下的实践

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! By  大数据技术与架构 场景描述:美团各业务线存在大量的OLAP分析场景,需要基于Hadoop数十亿级别的数据进行分析,直接响应分析师和城市BD等数千人