mysql数据库多种语言api支持_编程语言种类那么多,为何数据库语言只有一种(SQL)?...

如果你是指关系型数据库,那大致可以说查询语言只有一种,基于关系代数的SQL。你去看看PostgreSQL、MySQL、Oracle、MSSQL的语法,甚至连JOIN的语法都不一样,但是核心概念是一样的。具体到每个数据库的语法,你很难说他们是一个语言,因为差异挺大的,比如说Oracle有Optimizer hint,PostgreSQL有pgsql的语法,等等。

一些NoSQL数据库因为核心功能简单,所以一般不需要专门的查询语言。你看Redis这样的K-V数据库啊,MongoDB这样的文档数据库啊,基本上用SDK、API就好了。

所以说,数据库查询语言是跟着需求走的,你可以认为所有计算机语言都是语法糖,其语法的设计宗旨基本上都是在把无关紧要的细节忽略掉的同时,保留核心需求的表达能力。当核心需求用已有的底层API已经足够简单的时候,是没有必要去设计一门新语言的,毕竟学习新语言还是有成本的。

但是一旦查询需求复杂起来,那查询语言还是有必要的。你看虽然Spark有自己的API,底层实现也不是关系型数据库,还是有人搞了套Spark SQL. RedisGraph是基于Redis的,查询语言最后也还是支持了Cyhper。

图数据库这个领域比较新,查询需求比较复杂,标准还没有统一,底层实现也是五花八门,所以有点百花齐放的感觉。图数据库目前主要就有以下三种,一种过程式(GSQL),两种函数式(Cypher, Gremlin)。

图数据库TigerGraph在最开始的时候只有核心引擎的API,所有查询都是C++写的,性能是牛逼,但这对客户很不友好,因为无关紧要的细节太多了——写一个Query还得会C++,于是就根据业务提炼核心需求搞出了GSQL,所以从语法上是可以看出C++的一些痕迹的,但是简练了非常多。

而Neo4j、RedisGraph,由于他们各自的数据模型、存储方式、数据规模等等方面的原因,他们走了OpenCypher这一条路。Gremlin出现的比较早,基本上就是做Path Query吧,更像是一种学术试验品。

综上,查询语言是数据库设计思想的一种体现,关系型数据库本身基于关系代数,理念一样,所以看上去『只有一个标准查询语言SQL』,但是实际上细节差异很大;而其它类型的数据库由于设计理念和实现的差别,其查询语言也是五花八门。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值