「分布式技术专题」内部语言层接口

在分布式数据库中,内部接口(供系统内部调用的接口),通过内部语言层接口来进行数据库体系内部各层之间的通信协议进行交互。

原理

为提高整个系统的智能性,实现主节点对各数据节点的监控、调配和统计,将所处理的数据以数据库的式传送给主机,并严格以相应的格式来读写文件。数据库文件由文件结构和数据两部分组成,文件结构采用的是二进制存储方式而数据部分则是以ASII方式存储。库文件结构部分描述文件的概况:建立或修改日期,数据记录个数、库文件的结构长度、记录长度等。数据库底层存储采用C语言进行结构存储。C语言具有很好的底层控制能力。也有丰富的函数可以调用。

实现方式

语言层接口指动态语言与静态语言之间的接口,但只要是高级语言都会有相应的低层接口,区别只是表达方式有所不同,语言之间没有鸿沟,一种语言写的东西并非不能被别一种语言调用,这就涉及到语言间的接口与适配问题。 在分布式数据库设计中,分多层设计,每层所采用的语言档能不相同,如:数据低层存储,采用C语言实现,而上一层要访问下一层的文件或数据,就需要采用两种来实现接口方式:一种是采用语言间建立映射,另一种采用适配器的方式。

映射是指一种语言能够直接访问另一种语言(用作接口)的基本结构。比如C和C之间,C能直接访问所有C的结构,所以C可以用作C的接口语言。用于扩展C。映射并不是包含。一般来说,只要高层语言能直接访问低层语言的大部分,基本类型和调用机制即可。大多数语言和相应的虚拟机汇编都有如此关系,例如C#/VB#/J#等语言与IL的关系,Java和JVM bytecode的关系。编译语言中,D语言,haskell语言都有C的映射。这类语言扩展时常采用保留低层接口风格,高层语言看起来像是直接调用低层语言。

Java-C的接口是适配关系,不是映射关系。适配关系的接口,正好与映射关系相反,是由低层语言来访问高层结构。比如前面提到的Java-C的接口,Java把对象结构公开出来,Jvm的调用公开出来,C语言只需要访问这些结构,就可以生成相应的Java对象。这种接口的特点是扩展后接口与低层接口风格有很大差异。映射和适配有区别也有统一,前面说到的SWT库就是在适配的接口上实现了映射风格的扩展。同样在映射接口上也可以实现适配风格的扩展。

Java到C是通过JNI适配接口实现。说到JNI,不得不提起适配式接口的一大特点,就是一般有一个接口生成器。Java使用的javah。这种生成器可以根据接口语言,可能就是高级语言本身,生成低层语言的适配代码,扩展作者只要按框架来填写即可。

优势与劣势

优势

能发挥多语言的特点,专注擅长的处理部分。

多语言的开发都共同参与开发。

系统开发质量的保证。

提升系统的性能和稳定性。

系统开发角色划分更为清晰。

劣势

系统的设计复杂。

对开发者的要求相对较高,需要了解其它语言的调用方式。

测试相对复杂。

面临挑战

各层之间设计需要严格的规范定义。

系统的异常处理需更加细粒化。

系统维护难度大提高。

系统的部署会较复杂。

以上为内部语言层接口,「分布式技术专题」是国产数据库hubble团队精心整编,专题会持续更新,欢迎大家保持关注。

你可能感兴趣的:(「分布式技术专题」内部语言层接口)