「一份成本、两种引擎」Babelfish for RDS PostgreSQL发布
Babelfish支持SQL Tabular Data Stream (TDS) wire protocol和T-SQL(Microsoft SQL 查询语言),因此您无需切换数据库驱动程序或重新编写SQL,只需要在适配少量代码的情况下,将应用程序的数据库从SQL 迁移至开启了Babelfish的阿里云RDS PostgreSQL实例上。Babelfish for RDS PostgreSQL 重磅发布,阿里云 RDS 团队通过产品能力的提升,实现一份硬件成本两种引擎,帮助客户降低成本。
阿里云云原生_阿里云云原生专场
阿里云云原生_阿里云云原生专场
阿里云云原生_阿里云云原生专场
您只需要在购买阿里云 RDS PostgreSQL 实例时开启Babelfish选项,即可获得PostgreSQL和Microsoft SQL 两种数据库引擎数据查询和处理的能力,使 RDS PostgreSQL 具备解析执行SQL T-SQL语句的能力。
基于Babelfish for PostgreSQL的开源项目,阿里云RDS PostgreSQL实例生产时开启Babelfish选项后,您可以同时获得PostgreSQL和Microsoft SQL 两种数据库引擎实时在线数据查询和处理的能力。因此,您无需切换数据库驱动程序或重新编写SQL,只需要在少量代码适配的情况下,将应用程序的数据库从SQL 迁移至开启了Babelfish的阿里云RDS PostgreSQL实例上来,轻松实现“一份成本,两种引擎”。
一个实例,两个引擎,实时在线,双引擎双活,为什么是PostgreSQL数据库来实现呢?笔者相信下面都是可能的考虑因素:
Babelfish 通过插件的方式扩展 PostgreSQL 的功能,使得 PostgreSQL 在具备自身所有能力的同时,又具备接受和处理 Microsoft SQL 数据库数据查询和处理的能力。
Babelfish整体架构分为三层,至上而下分为:
开启了Babelfish选项的RDS PostgreSQL,既可以接收和处理来自SQL 的应用连接,比如:C/C++类的MSSQL ODBC应用,JAVA类的MSSQL JDBC应用以及微软系使用最为广泛的C# .NET Provider for MSSQL类应用;又可以处理来自PostgreSQL类的应用,比如JAVA类PostgreSQL JDBC类应用。
一个 Babelfish for RDS PostgreSQL 实例会两个 TCP 端口,一个是接受 SQL 协议(TDS)端口 ,默认是 1433,另一个是接受来自 PostgreSQL 协议的端口,默认是 5432。如此,可以实现“一份成本、两种引擎”,使得SQL 与PostgreSQL双引擎在线。
TDS 协议端口接受和处理来自 SQL Serve应用类的请求,并将 SQL 的 T-SQL 经过自定义解析器转为 PostgreSQL 可以识别的执行,交由PostgreSQL内核执行,然后返回给SQL 终端用户。
Babelfish for RDS PostgreSQL 有两种迁移模式可供选择,分别是:single-db 和 multi-db 模式。迁移模式影响 SQL 数据库的 schema 到 PostgreSQL 中 babelfish_db 库的 schema 名字的映射关系。
在 single-db 模式下,只支持在 Babelfish 中创建一个用户数据库,Babelfish用户数据库的 schema名称和 PostgreSQL 中 babelfish_db 数据库下的 schema 名字相同。例如:在 TDS 端口中创建数据库 DB_A,在 DB_A 下创建 schema_A,则在 PostgreSQL 的 babelfish_db 数据库中看到两个 schema:dbo 和 schema_A,对应于SQL 中 DB_A 数据库的 dbo 和 schema_A。其中dbo为SQL 默认创建的系统schema。
Multi-DB Mode
在 multi-db 模式下,Babelfish 中用户数据库的 schema 名字映射到 PostgreSQL 的 babelfish_db 数据库中之后会变成:数据库名>_。例如:在 TDS 端口中创建数据库 DB_A 和 DB_B,在 DB_A 和 DB_B 下分别创建 schema_A 和 schema_B,则在 PostgreSQL 的 babelfish_db 数据库中看到 DB_A 的 schema 为: DB_A_dbo 和 DB_A_schema_A;DB_B 的 schema 为: DB_B_dbo 和 DB_B_schema_B。
创建Babelfish for RDS PostgreSQL实例
新购RDS PostgreSQL 13版本时(当前只有PG 13支持Babelfish),勾选 启用 Babelfish即可创建出Babelfish for RDS PostgreSQL:
创建用户
然后连接实例的 PostgreSQL 端口,执行命令:
『云原生技术帮助公司和机构在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。』call sys.babel_initialize_logins('babelfish_user');即可。
您可以使用以下任何一款客户端连接工具来连接Babelfish for RDS PostgreSQL的TDS端口。
RDS PostgreSQL数据库引擎,构建于阿里云云原生基础设施之上,采用存储计算分离架构。具体数据库DDL,DML等作范例由于篇幅有限,请参考阿里云帮助文档:
Babelfish for RDS PostgreSQL的TDS协议,支持主流开发技术语言,诸如C#、Ja、Python、C/C++、Go等。详情应用程序Demo,请参考阿里云帮助文档:
Babelfish 目前还没有完全兼容 Microsoft SQL T-SQL,详细的语法限制参见:
谢桂起,PostgreSQL数据库爱好者,当前主要参与RDS PostgreSQL管控产品建设,欢迎有志之士加盟RDS产品部,邮箱:jianming.wjm@alibaba-inc
基于阿里云打造「云原生」Web应用——「懒猪行」Web应用开发实践
云原生作者:阿里云MVP 刘远程
RDS PostgreSQL控制台创建高权限账号,『懒猪行』专注于境外自由行S2B业务,涉及分销、终端用户服务、供应链等多个服务环节,随着业务规模的不端增加,我们一直在 探索 Web应用开发的实践,以加快Web应用的迭代效率,为B/C端用户创造更多价值。
云原生所带来的效果非常明显,但完整的实践确是很容易让人知难而退,因为单Kubernetes一项,从入门到掌握也需要花费3个月左右的时间。但幸运的是,阿里云等公有云平台已经为我们准备好了容器服务(Kubernetes版)产品,并支持通过Kubernetes进行应用的容器化管理。近几年,Spring Cloud为代表的微服务架构越来越火热,吸引了大量创业公司『入坑』。微服务系统的开发与单体应用的开发相比,从团队组织、运维、开发方式等多个方面带来了式的变化。从2018年开始以Istio、SOFAMesh等为代表的Serv Mesh方案逐渐走上舞台,并被称为『下一代微服务架构』。
如果把以容器技术和Serv Mesh为基础的IT架构定义为云原生架构,那么Dubbo、Spring Cloud为代表的分布式架构将是促进云原生架构诞生的『中间产物』。
就在18年,云原生计算基金会(CNCF)为云原生技术重新定义:
These techniques enable loosely coupled s that are resilient, maable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
『这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术可以使开发者轻松地对系统进行频繁并可预测的重大变更。』
这种新颖架构方式,不仅提供了完善的软件持续交付链方案,也为我们的应用组织方式带来了巨大的想象空间,甚至在将来可能给整个软件行业带来式的革命。有一点是显而易见的:原本强耦合在一起的应用被拆分,变身成为能够实现完整子集功能的可插拔式微服务,通过有机的组织让其与其它微服务共同对外提供服务;就如同组装 汽车 的发动机和座椅等,它可以来自全球供应链不同的厂商。以云原生的设计哲学来总结,云原生应用具备微服务, 健康 报告,遥测数据,弹性声明式(非反应式)等特征。
所有的微服务都和 Envoy sidecar 集成在一起,被集成服务所有的出入流量都被 sidecar 所劫持,这样就为外部控制准备了所需的 Hook,然后就可以利用 Istio 控制平面为应用提供服务路由、遥测数据收集以及策略实施等功能。
懒猪行的架构设计(简化)
在新的架构中,使用了大量的阿里云产品,这鉴于我们过去的经验,阿里云产品在运维上为我们节省了不少精力。
以上架构,是我们走向『云原生』的步,距离成熟还有非常大的发展空间,云原生的发展也在发展的起步阶段。按架构,把所有需要持久化的数据,如:文件、、数据库等存储到阿里云OSS、RDS及Redis产品,而应用则运行在以K8s管理调度的容器集群中。
阿里云DevOps工具链
阿里云在云原生架构整个生命周期都提供了完善的支持:
阅读:
[2] Kubernetes Handbook:序言 · Kubernetes Handbook - Kubernetes中文指南/云原生应用架构实践手册 by Jimmy Song(宋净超)
MVP招募进行中,点击「链接」
基于阿里云打造「云原生」Web应用——「懒猪行」Web应用开发实践
Cloud native[1] Serv Mesher社区:ServMesher · Serv Mesh|服务网格中文社区 technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, serv meshes, microservs, immutable infrastructure, and declarative APIs exemplify this approach.作者:阿里云MVP 刘远程
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, serv meshes, microservs, immutable infrastructure, and declarative APIs exemplify this approach.『懒猪行』专注于境外自由行S2B业务,涉及分销、终端用户服务、供应链等多个服务环节,随着业务规模的不端增加,我们一直在 探索 Web应用开发的实践,以加快Web应用的迭代效率,为B/C端用户创造更多价值。
近几年,Spring Cloud为代表的微服务架构越来越火热,吸引了大量创业公司『入坑』。微服务系统的开发与单体应用的开发相比,从团队组织、运维、开发方式等多个方面带来了式的变化。从2018年开始以Istio、SOFAMesh等为代表的Serv Mesh方案逐渐走上舞台,并被称为『下一代微服务架构』。
如果把以容器技术和Serv Mesh为基础的IT架构定义为云原生架构,那么Dubbo、Spring Cloud为代表的分布式架构将是促进云原生架构诞生的『中间产物』。
就在18年,云原生计算基金会(CNCF)为云原生技术重新定义:
These techniques enable loosely coupled s that are resilient, maable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
『这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术可以使开发者轻松地对系统进行频繁并可预测的重大变更。』
这种新颖架构方式,不仅提供了完善的软件持续交付链方案,也为我们的应用组织方式带来了巨大的想象空间,甚至在将来可能给整个软件行业带来式的革命。有一点是显而易见的:原本强耦合在一起的应用被拆分,变身成为能够实现完整子集功能的可插拔式微服务,通过有机的组织让其与其它微服务共同对外提供服务;就如同组装 汽车 的发动机和座椅等,它可以来自全球供应链不同的厂商。以云原生的设计哲学来总结,云原生应用具备微服务, 健康 报告,遥测数据,弹性声明式(非反应式)等特征。
所有的微服务都和 Envoy sidecar 集成在一起,被集成服务所有的出入流量都被 sidecar 所劫持,这样就为外部控制准备了所需的 Hook,然后就可以利用 Istio 控制平面为应用提供服务路由、遥测数据收集以及策略实施等功能。
懒猪行的架构设计(简化)
在新的架构中,使用了大量的阿里云产品,这鉴于我们过去的经验,阿里云产品在运维上为我们节省了不少精力。
以上架构,是我们走向『云原生』的步,距离成熟还有非常大的发展空间,云原生的发展也在发展的起步阶段。按架构,把所有需要持久化的数据,如:文件、、数据库等存储到阿里云OSS、RDS及Redis产品,而应用则运行在以K8s管理调度的容器集群中。
阿里云DevOps工具链
阿里云在云原生架构整个生命周期都提供了完善的支持:
阅读:
[2] Kubernetes Handbook:序言 · Kubernetes Handbook - Kubernetes中文指南/云原生应用架构实践手册 by Jimmy Song(宋净超)
MVP招募进行中,点击「链接」
「一份成本、两种引擎」Babelfish for RDS PostgreSQL发布
背景Babelfish for RDS PostgreSQL 重磅发布,阿里云 RDS 团队通过产品能力的提升,实现一份硬件成本两种引擎,帮助客户降低成本。
如果您也有如下的烦恼,那么可以考虑使用Babelfish for RDS PostgreSQL。您只需要在购买阿里云 RDS PostgreSQL 实例时开启Babelfish选项,即可获得PostgreSQL和Microsoft SQL 两种数据库引擎数据查询和处理的能力,使 RDS PostgreSQL 具备解析执行SQL T-SQL语句的能力。
部署到Kubernetes_部署到Kubernetes_选择部署方式_用户指南_CodePipeline-阿里云基于Babelfish for PostgreSQL的开源项目,阿里云RDS PostgreSQL实例生产时开启Babelfish选项后,您可以同时获得PostgreSQL和Microsoft SQL 两种数据库引擎实时在线数据查询和处理的能力。因此,您无需切换数据库驱动程序或重新编写SQL,只需要在少量代码适配的情况下,将应用程序的数据库从SQL 迁移至开启了Babelfish的阿里云RDS PostgreSQL实例上来,轻松实现“一份成本,两种引擎”。
一个实例,两个引擎,实时在线,双引擎双活,为什么是PostgreSQL数据库来实现呢?笔者相信下面都是可能的考虑因素:
Babelfish 通过插件的方式扩展 PostgreSQL 的功能,使得 PostgreSQL 在具备自身所有能力的同时,又具备接受和处理 Microsoft SQL 数据库数据查询和处理的能力。
Babelfish整体架构分为三层,至上而下分为:
开启了Babelfish选项的RDS PostgreSQL,既可以接收和处理来自SQL 的应用连接,比如:C/C++类的MSSQL ODBC应用,JAVA类的MSSQL JDBC应用以及微软系使用最为广泛的C# .NET Provider for MSSQL类应用;又可以处理来自PostgreSQL类的应用,比如JAVA类PostgreSQL JDBC类应用。
一个 Babelfish for RDS PostgreSQL 实例会两个 TCP 端口,一个是接受 SQL 协议(TDS)端口 ,默认是 1433,另一个是接受来自 PostgreSQL 协议的端口,默认是 5432。如此,可以实现“一份成本、两种引擎”,使得SQL 与PostgreSQL双引擎在线。
TDS 协议端口接受和处理来自 SQL Serve应用类的请求,并将 SQL 的 T-SQL 经过自定义解析器转为 PostgreSQL 可以识别的执行,交由PostgreSQL内核执行,然后返回给SQL 终端用户。
Babelfish for RDS PostgreSQL 有两种迁移模式可供选择,分别是:single-db 和 multi-db 模式。迁移模式影响 SQL 数据库的 schema 到 PostgreSQL 中 babelfish_db 库的 schema 名字的映射关系。
在 single-db 模式下,只支持在 Babelfish 中创建一个用户数据库,Babelfish用户数据库的 schema名称和 PostgreSQL 中 babelfish_db 数据库下的 schema 名字相同。例如:在 TDS 端口中创建数据库 DB_A,在 DB_A 下创建 schema_A,则在 PostgreSQL 的 babelfish_db 数据库中看到两个 schema:dbo 和 schema_A,对应于SQL 中 DB_A 数据库的 dbo 和 schema_A。其中dbo为SQL 默认创建的系统schema。
Multi-DB Mode
在 multi-db 模式下,Babelfish 中用户数据库的 schema 名字映射到 PostgreSQL 的 babelfish_db 数据库中之后会变成:数据库名>_。例如:在 TDS 端口中创建数据库 DB_A 和 DB_B,在 DB_A 和 DB_B 下分别创建 schema_A 和 schema_B,则在 PostgreSQL 的 babelfish_db 数据库中看到 DB_A 的 schema 为: DB_A_dbo 和 DB_A_schema_A;DB_B 的 schema 为: DB_B_dbo 和 DB_B_schema_B。
创建Babelfish for RDS PostgreSQL实例
新购RDS PostgreSQL 13版本时(当前只有PG 13支持Babelfish),勾选 启用 Babelfish即可创建出Babelfish for RDS PostgreSQL:
创建用户
然后连接实例的 PostgreSQL 端口,执行命令:
call sys.babel_initialize_logins('babelfish_user');即可。
您可以使用以下任何一款客户端连接工具来连接Babelfish for RDS PostgreSQL的TDS端口。
具体数据库DDL,DML等作范例由于篇幅有限,请参考阿里云帮助文档:
Babelfish for RDS PostgreSQL的TDS协议,支持主流开发技术语言,诸如C#、Ja、Python、C/C++、Go等。详情应用程序Demo,请参考阿里云帮助文档:
Babelfish 目前还没有完全兼容 Microsoft SQL T-SQL,详细的语法限制参见:
谢桂起,PostgreSQL数据库爱好者,当前主要参与RDS PostgreSQL管控产品建设,欢迎有志之士加盟RDS产品部,邮箱:jianming.wjm@alibaba-inc