注册
达梦数据库DBLINK和外部表的任重道远
培训园地/ 文章详情 /

达梦数据库DBLINK和外部表的任重道远

DM_068263 2022/11/16 1588 1 0

DBLINK

达梦数据库的DBLink可以连接到达梦数据库和Oracle数据库。操作步骤就是配置好dmmal.ini文件,然后通过create dblink语句直接创建,创建到Oracle的链接服务器就麻烦一点,需要在环境中再安装一个Oracle的客户端。具体创建方法网上很多教程,这里不赘述。创建好的连接表用起来也比较方便,可以进行增、删、改、查等各种操作。
然而,这些年在实际生产中遇到很多DBLink的场景,感觉达梦的DBLink能力还有些不足。首先,支持的DBLink类型有限。DBLink的一个重要使用场景就是数据仓库的ELT程序。介于业务系统使用数据库类型的多样化,ETL程序要求DBLink必须支持多种数据库,比如MySQL、MSSQLServer等。这样会大大简化ETL程序的实现难度。其次,很多使用DBLink的场景并不是简单的对某一张表的操作,而是需要对很多张表进行关联才能得到最终结果。例如SQLServer的链接服务器可以通过OPENQUERY语法把一个复杂的多表关联的SQL放到远端执行,然后将结果取回来;甚至可以将链接表和本地表进行关联(虽然并不建议这样做)。
企业微信截图_16685306428596.png
当然,说这么多并不是说达梦做的不好,而是想说实现类似SQLServer那样的链接服务器确实需要投入很多精力,不管是语法编译器还是性能优化器,甚至是分布式事务的处理机制,能做好任何一部分都是很大的进步。

外部表

达梦的外部表可以方便的将外部文本文件中的数据引用到SQL查询中来,这种机制方便的解决了不会使用达梦数据库的数据维护人员的问题。后者只需要编辑操作系统种的文本文件,就能为数据库作业、应用程序等提供及时更新的数据。但是外部表也有它的弊端,比如无法创建索引,这导致外部表效率不高,在应用种要严格限制行数。不过也有方法来绕开这个限制,就是在使用外部表之前,先创建一张表结构完全对等的表,也可以是临时表,然后将外部表的数据插入到这张临时表中。这样我们就可以创建索引、唯一约束等,提升查询的性能。
其实外部表的应用场景还很多,我在使用SQLServer的时候会用到PolyBase的技术。这种技术可以通过创建到Hadoop的连接创建一张外部表。可以通过标准的SQL来访问Hadoop,还可以用本地表和这种外部表做关联。
企业微信截图_16685339523043.png
在学习达梦的外部表的过程中,时常会想达梦什么时候也能创建到大数据平台的外部表呢?也许是我学的还不够多,大家有不同意见的欢迎批评指正!

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服