>>No.63705120
首先要说明的是“先有数据库,再有数据库语言”。
所以以下会先聊数据库问题( ´∀`)
肥哥提到了效率问题。>>No.63706936
>关于效率问题的基本解释
大多数情况下越高级的语言在实现某项功能时会有更差的执行性能。
原因是高级语言通常是由低级语言实现的,在低级语言形成高级语言的过程中,会添加较多的“降低出错概率”的检测机制,相关机制增强了高级语言的可读性,但是添加了这些“步骤”的情况下,语言的“直接运行效率”就会受到影响。
效率先简单聊一下,如果觉得不太清楚可以追问,我会详细解释效率降低的原因。
>关于“为什么大部分语言可以实现数据创建与存储,还要专门设计`数据库语言`。”
这里分为三点解释。
1.为什么设计数据库而不是直接进行数据存储。
在进行数据存储时,我们并不是简单的“存进去”就好了,在实际的实现中,需要考虑程序的时间复杂度与空间复杂度等相关问题。(相关参考学科为:软件工程原理)
如何更快的查询到某一个具体数据,在数据量较低的情况下,差异是不明显。
但当数据体量达到了是十亿百亿级别,百分之一的差异也是极其显著的,能够明显降低存储与查询成本的。
那么如何快速的进行查询,简单的进行存储就是一门较为高深的学科,而数据库就是一群精于此学科的人,设计出来的效率较高的数据存储软件,这是数据库的产生原因。
2.为什么设计“数据库语言”。
能够理解问题1的情况下,本问题就很好解答了。
设计出来的程序如何调用?
这就需要有“数据库语言”来实现,相当于提供了一个统一的数据调用接口,只不过它有一定的解析能力,让你看起来像是“数据库语言”罢了,实际上是符合特定结构的调用指令,和肥哥平常自己写的代码,对外提供的接口没有区别。
3.那么我们是否可以其他语言去实现数据库的功能呢?
答案是可以,但是没必要。
计算机是一个庞杂的学科,我们不可能精通于其中的每一项工作,那么直接使用其他顶尖人才创建好的现有产品,是一个很简单的降低我们开发成本的行为。
我们没必要投入过多精力到“开发一个存储数据的模块”这件事上去,让更多的精力聚焦于我们想要实现的功能,这就是相互调用与模块化的意义。
简单总结就是:
可以实现,但是别人设计的程序专精于数据存储领域,直接使用“数据库语言”实现数据库的即可,没必要投入重复实现已有的功能。
PS:题外话,实际上po工作过的较为大型的企业都会开发属于自己的数据库,因为大家对于数据的调用需求与方式不同,现有的数据库已经不满足他们的数据调用需求。