DolphinDB 新功能体验系列之- Catalog数据目录

DolphinDB引入Catalog概念,以解决标准SQL写法的不便。通过创建数据目录、指定数据库的数据目录,实现了通过db.table形式访问分布式表。本文档介绍了如何创建Catalog,将原有数据库归类,以及指定新数据库的数据目录,并通过实例展示了设置默认Catalog后,使用标准SQL查询数据的成功操作。
  • 缘起

在DolphinDB里,由于其脚本语言表达能力不限于标准SQL,可以定义内存表变量,分布式内存表,分布式表等,传统的 `select col1,col2 from db.tb` 这类sql,脚本解析引擎会优先将 from 子句中的内容识别为内存表变量,若要读取分布式表内容,必须要使用 select col1, col2 from loadTable("dfs://db", "table") where ...这种函数方式,显式提供dfs路径来加载分布式库。对于使用惯了标准SQL的数据库用户来说,这个写法怎么看怎么别扭 :P

因为吐槽的用户太多,开发团队终于引入了Catalog的概念来解决这个问题,目标是通过设定默认的catalog,解析引擎优先在catalog内搜索库表名的方式,实现标准SQL的写法,如: selelct * from db.table where... , 不再需要用loadTable这样的方式来定位分布式库和表。

  • 入门

先从文档中心查找 "Catalog"关键字,找到一篇教程【数据目录Catalog】,介绍了新引入的catalog,schema的概念,以及与原系统数据库表概念的映射关系。教程里介绍了概念,但是实操类的信息比较少。


怎么创建数据目录?

原有的数据库怎样归类到不同数据目录下?

新建的数据库怎么指定数据目录?

带着这几个问题,我开始了摸索的过程。

  • 上手

根据教程中的catalog相关函数表,初步定位了几个函数,跟本文的目标问题相关。

setDefaultCatalog为当前 session 设置默认的 catalog
getCurrentCatalog查看当前 session 位于哪个 catalog 中
existsCatalog检查指定 catalog 是否存在
createCatalog创建一个 catalog
dropCatalog删除指定的 catalog
getAllCatalogs检索当前所有可用的 catalog
getSchemaByCatalog检索指定 catalog 中的所有 schema
createSchema把指定数据库添加到指定的 catalog 中
dropSchema删掉指定 catalog 中的指定 schema
renameCatalog重命名 catalog
renameSchema重命名 schema

目标是针对一个分布式库表执行如下语句

select * from tmpdb.pt

目前执行会报错

Syntax Error: [line #1] Cannot recognize the token tmpdb

下面通过设置catalog来达成目标。

  • 创建一个数据目录
createCatalog(catalog="mycatalog")
  • 为数据库指定数据目录 createSchema。把我测试用的库 loadTable("dfs://temp", "pt")  加进来, 目标是要将数据库名定义为tmpdb,所以通过schema的概念,把分布式路径 (历史原因,也作为数据库名使用) dfs://temp 映射成 tmpdb
createSchema(catalog="mycatalog", dbUrl="dfs://temp", schema="tmpdb")

到这一步,系统里已经形成了mycatalog/tmpdb/pt这样的目录结构,后续我们只要设定一下默认的数据目录mycatalog,就可以直接sql中通过db.table的方式访问数据表了。

  • 指定默认的数据目录:
setDefaultCatalog(catalog="mycatalog")
  • 执行目标SQL
select * from tmpdb.pt

执行成功!

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值