上一页


第四章 德塔 Socket 流可编程数据库语言引擎系统
作者: 罗瑶光, Author:Yaoguang.Luo


基础应用: 元基催化与肽计算 编译机的计算存储机

知识来源,作者第一次接触数据知识,是在本科的数据库课上,萨师煊,王珊的绿皮书,非常系统的接触了数据库范式,数据函数,和数据库query. DDL,DCL,DML的定义. 这里表示感谢.

作者在印度基督大学的 数据库管理课程中,第一次专业级的接触数据库的格式定义,如tupe,cell,row,spect,table等,搭配,范式优化,对象存储寻址方式,在cobol74的实验课有涉及 文件表的cobol、管理方式作业,以及作者在c语言设计作业有高分完成文件的读写实验. 关于web vpcs调度,作者要感谢印度基督大学的操作系统课程,作者的基础来自这里,作者的mvc, mvp的基础来自作者在章鑫杰那设计蓝牙广告机的设计经验,作者用谷歌搜索了大量的mvc和mvp的国际论文资料阅读.

作者在上海章总那,章总有让作者在赖静旁边看他展示spring MVC+hibernate Many-Per-Many reflection+struts 1个小时观摩,这是作者第一次接触hibernate的应用. 另外作者感谢赖静在作者设计knime节点的时候,帮作者解决了很多基于alfresco的编码基础问题.

作者之后去美国路德大学,广泛的接触了数据库应用,oracle OLAP,高级数据库系统,制表管理,数据库语言,以及web数据库SAX,JQUERY,Xpath,XQUERY,的实验和作业和 query优化,内存表优化,计算指令优化. 有了这些基础,作者在美国上班5年一直是个web后端程序员的职务,普遍基于java和php的语言进行设计后端的rest数据库应用业务,基于jboss,resteasy,springMVC,springboot,laravel,mybatis,ibatis,hibernate JPA,criteria,mysql,mssql.

2009年作者有对湖南星沙国土局的招聘官说作者能独立设计数据库,2019年作者思考了下不能食言,吹了牛就要认命,于是有魄力开始设计了基于vpcs调度的握手web plsql数据库语言,现在发现收获颇丰,由衷的表示感谢.

罗瑶光

Socket rest TCP握手协议

1 德塔数据库的 admin界面采用 web页进行配置操作. refer page 376

2 web页配置操作采用TCP握手访问模式, 基于socket的http请求握手. refer page 464~

3 德塔数据库将socket握手进行线程封装, 然后多线程组织页面. refer page 392,

4 封装和组织页面设计过程逐步进行优化形成VPCS后端管理体系. refer page 383, 476

文件数据库

1 德塔数据库的数据存储是一种文件存储模式. refer page 408, 409, 469, 473

2 文件的读写进行子集, 行, 表, 映射, 表头, 按1范式分类. refer page 375, 434,

3 数据库的数据读写支持加密. refer page 见元基加密

4 每一个文件不但有物理空间, 还有相应的内存空间. refer page 375

VPCS服务器

Gitee 20190620 感想: 关于vpcs的描述: 最早我的项目都是基于大众化MVC结构, 这个结构陪伴我5年的时间. 第一次使用mvp是我在设计ios的暗夜法师游戏设计时候要进行对象数据小规模刷新机制, mvc太重了, 我开始将CONTROLLER 细化. 我的结构开始走向mvpc模式. 当时感觉是不错的, 后来在用spring mvc的时候, 普遍是IOC的mvpc设计进行自动注册封装, 一次我在进行mock mvc测试的时候 偶尔一个细节打动了我, 就是我看到的并发是个假象, 只是个list的先行注册分解而已, 我后来在用spring boot, thinkphp, laravel, zend 等框架的技术, 我这个问题重复了100遍在脑海里, 是什么封装驱动这个注册分解模式?于是我开始用c moonguse来做线性服务器, 并模拟了, rust, golang等编译型注册原理, 我找到了实质, 那就是tcp握手规则, 我开始设计tcp rxtx进行数据交换, 设计了VPC结构, 发现一个大问题就是数据没有格式化, 于是我开始寻求一种在多线程线性服务器运算握手的时候能够带数据交换的一种常用格式(稳定的)的进行业务, 多好?我找到了就是socket 套接字. 于是我将socket进行 服务器部署, 将文件数据, 脚本数据, rest接口数据, 动态数据, 等进行一个个函数封装, 然后将函数的数据和socket线程分离, 便于运维, 测试, 数据计算浪费管理, 这就是vpcs第一版本. 特点就是数据与逻辑分离, 线程与资源分离, 业务与控制分离, 之后蜂群计算阵列, 非常方便我的initon DNA 催化布局. vpcs第二个版本是我在尝试用springboot mybatis 布局的时候, 发现局部注册太臃肿了, ***主观情绪略***, 于是我开始设计第三代vpcs版本, 将v p c s 四个部分进行全面的map注册模式, 我当时想到的好处是 1 以后map reduce 非常方便, 2 全部量子碎片化, 速度性能要爆炸, 3碎片逻辑进行微分催化1对1 Initon mask进行肽链重用, dna的早期框架我有足够条件进行论证, 现在vpcs进入第4代了, 我开始考虑情感化线程操作. 我一直在准备着. 让情感与计算分离.

Implements of VPCS server notes on Gitee, 2019-06-20.

In an early time of author's projects, MVC backend was a popular solution for web development. And the first MVP project of IOS game:

https://github.com/yaoguangluo/dark-wizard-game/tree/master/DOW2

, the author appreciated Its object oriented schedures and Its refreshment. Due to the MVC was too heavy, so the author did a definition of game controllers. And finally separated the macros and prototypes as a type of MVPC. Since the author did a Java test job at Folsom Intel, after he used Java mockito MVC API, mixed with Junit4 to make a springboot and hibernate test. He found that all functions could be tested as a single process, and this process contained a classify of schedures. These schedures included sinletons, sonar spells, spring web boots and spring injects. And these schedures were tested one by one like a time sequenced line-waterflows. So, the test process before deployment which was a synchronization, but the true of Its inner schedures were an asynchronization. The author took more questions about sonar qube registrations because those contained lots unforeseeably encrypt dlls. The author tried to explain well between asynchronization and synchronization by reading the professional book of Operating System, TCP/IP, Software Engineering and How to programming. After he did a simulation by using CGI, Moonguse C, Rust and Golang etc. Then he got a result of TCP hands shaking and time sequenced Rest-calling. He became to know the asynchronization distincts to synchronization. Then annouced a first 'VPC' at

https://github.com/yaoguangluo/VPC5.0/commit/dc06dbc3750879155871d45ce9cdb8be29825a60

https://github.com/yaoguangluo/document/commit/390b77a854ddcba2fe38021b184d2dae5e22975f

2017年10月19日 GMT+8 12:15. Because of his VPC project, was built by springboot and mybatis, which was unforeseeably. The author couldn't test and catch the question well, then try to code a new bottom OSI layer of rest call allocations about his theory of VPC. He began to think about camel rpc, golang grpc, TCP rxtx hands shaking, RS485, powerlink flips and modbus hands shaking. Finally, the author used SSH Sockets to simulate the hands shaking CGI. After he had simulated an iluwatar handler-schedures, he got so many effeciency problems of memory garbage, unused performs and dead locks. Then he try to make separations of data and logics, schedures and resource, business and controllers. And now the VPC became a VPCS, VECS of AOPM VECS IDUQ TXHF, a part of Deta DNA hexadecimal meta base initons. For the listed bee coords classify of 'Swarm Computing' at chapter 6 and DNA AOPM-VPCS catalytic computing-array at chapter 7. The author used socket flows of hands shaking, to instead springboot and mybatis, the author did an affordable Deta PLSQL, to instead MYSQL. And now he prepared to make a new separation of ethics and computings.

Gitee 20190625 感想: 我花时间进行论证vpcs 和 rpc, mvc, mvp, 微软的handler event 优势和差异性对比.

vpcs定义: 是标准的从mvc(mode-view-contoller)到mvp(mode-view-process)到mvpc(mode-view-process-controller)到vpcs(view-process-controller interface- static map)的一个过程. vpc 在第5版本时候, 作者将mode去掉了, 将 process分成 sleeper 和 sets, 正式命名vpcs

第二版vpcs 作者将view 拆分为 vision 和 pillow, 逐渐形成 vision- pillow-controller-sleeper 的vpcs结构 第三版vpcs 作者将 set 保存在pillow中 让sleeper线程和pillow分开 让skivvy来管理, 逐渐形成 vision-sleepers- pillow-controller-skivvy 的vspcs结构 做到逻辑与任务分开, 线程与资源分开的模式.

vpcs随着工程的发展已经进化到了 HVPCS (hallkeeper-vision-pillow-controller-sleeper) (运行与维护分离, 执行与逻辑分离, 任务与资源分离) ***主观情绪略***, Hall的词汇来自作者在路德认识 留学生服务的Hall教授.

1 对比微软的handler events 优势: vspcs更实用于让大型综合调度瞬间简化, 因为本身就包含了RR机制思想. 2 对比web的rpc 优势: rpc大家可以看下illuwatar的包 和 go的rpc 异步消息机制, vspcs的机制是通过触发来运行逻辑http 协议是socket流进行rest, bits等处理(类似的功能软件是redis ), 3 而rpc是 tcp连接当然连接速度会更快, refer go 的最新 grpc https://blog. csdn. net/lk2684753/article/details/84436190 ***主观情绪略***. 4 illuwatar rpc 是微软c#的handler events线程注册机制的java 注册封装模式, 是时时动态的, 计算量增大. 5 vspcs 采用酒店的服务管理思想进行程序化, (***主观情绪略***)这是世界第一篇关于酒店业务调度思想的软件论文. 作者设计和更新它的需求的直接动机是为了方便日后进行海量并发的VPCS矩阵蜂群计算中满足 低计算量, 低浪费量, 无监控死角的微分催化计算业务.

作者再加点addition: Apache Camel, 作者在几年前用这个包做异步消息, ***主观情绪略***, 作者refer 2本书 1 java. net白皮书 2 java how to program 6th 蓝皮书 开始用socket做握手发送数据包, 发现速度不错. 再加点料, 为什么作者会接触camel, 作者在加州路德大学读书的时候有一次在计算科学实验室做嵌入式OSGI思想研究的时候, 在谷歌上推荐弹出了个camel, 这是作者第一次看到它. 关于作者ETL unicorn的 OSGI思想 灵感动机来自 liferay的theme控件, 不是camel, 在这里申明下, 因为作者的动机是要走节点图形的继承, 而不是插件化OSGI包. 关于作者的 ETL unicorn的 OSGI 函数更严格来讲不是OSGI, 而是继承的子类对象们进行统一分类管理而已.

Implements of VPCS server notes on Gitee. 2019-06-25

The author did a contrasted analyst of VPCS, RPC, MVC, MVP, and compared each to Microsoft's Handler and Event. He did a conclusion of VPCS, from MVC(Mode-View-Contoller) to MVP(Mode-View-Process), then again from an MVPC(Mode-View-Process-Controller) to VPCS (View-Process-Controller Interface- Static Map). At VPC5.0 edition, the author had removed the Mode, and separated Mode and Process into sleeper and sets, announced It as VPCS.

Then The author did an evolution of VPCS, to separate the View into Vison and Pillow, gradually into a different type of VPCS (Vision- Pillow-Controller-Sleeper). Seem not done, the author continued to integrate the Set into Pillow, and built a skivvy to arrage the Pillow set. As a VSPCS(Vision-Sleepers-Pillow-Controller-Skivvy), and now became an HVPCS(Hallkeeper-Vision-Pillow-Controller-Skivvy) by instead Skivvy of a Hall. For the VPCS HTTP server and schedure. (Not for DNA Initons Encoding, which was a simple of Vision, Execution, Controller and Static).

Compare to the Microsoft handler events, VSPCS schedure and Its RR (Round Robin or Early Birds) could be simpler than other factory modes. Compare to the RPC, VSPCS simulated the concurrented, asyntronized, inner time sequenced threads-schedure (see HTTP request and responce Java sources), instead of illuwatars incremented, asyntronized handler and event. Golang RPC refers (https://blog. csdn. net/lk2684753/article/details/84436190). VSPCS did an example of Hotel-Daily-Arrangement. Because of 3 messy environments as Hotel-Daily-Arrangement, Hospital-Daily-Arrangement, and Bus-Stations-Daily-Arrangement. The author considered It could do well in a business of catalytic computings. In order to satisfy a reduced computings and wastes, and raised a seamlessly monitoring. The author thanked Operating System, Apache Camel and Its Mini OSGI, Java.net, Java How to Program 6th, Liferay and Its theme system here the Cheers.

Gitee 20190826 感想 为什么我不用spring?

很多年前, 很多人带着各种各样的问题问我为什么Java spring 那么好了, 为什么 我要另创socket流分发服务器?我可以告诉大家的动机.

1: 安全和同源配置问题. 2016年我在美国注册了comforx软件公司, 当时设计个电商系统, 因为我用的是spring后端, 我发现一个大问题, 为什么被同源限制, 如果是拒绝恶意攻击, 至少可以用户自定义设置配置呀, 而这个功能一直被spring给控制了, 当时我郁闷的用2台电脑和2个不同的公网域名IP才解决的这个问题. 我的动机很明确, 我要自己写web服务器.

2: 市场的开源产品大, 重. spring 我觉得太大了. 2015年我在亚米上班的时候竟然听见吴迪和little说java太重了(little想用C), 太重了, 内存, 什么的太大了, 我当时候在想, 可以用spring boot 或者golang 呀, 我当时给王浩雷推荐了go lang, 王浩雷说 go lang 当时生态系统不全, 做工程没有java 安全和高效, 特别是开发周期.

3: 方便我的vpcs实验论证. 最早接触socket是在印度那本java how to program 6th, 第一次使用socket 是在上海章总那, 做 C# 蓝牙 大文件传输, 用到了32feet, 当时我问章总, 为什么我的软件智能一台一台手机单独发送, 不能群发, 章总给我一个别人的C#软件(2012年那个硬盘我在美国Del Mar AVE "弄丢***主观情绪略***"了, 记得QQ(313699483)里面有我和爸妈聊天的记录), 说这个别人实现了你看看多线程的原理, 我说多线程我知道, 于是我专门独自写了个多线程哲学家进餐算法, 章总当时之后没说话, 我后来(2014年)意识了, 不是多线程的问题, 是我的握手没有并发管理. 这个socket并发握手, 我特意做了个sleeper Hall 来管理. 以及后来的 VPCS论文.

4: 统一, 全局, 生态化, 高效. 小到极致, 我的数据库不仅用socket流, 我的缓存, 前端, 后端都是采用我的socket流, 现在我一台电脑启动整个前端, 后端, 缓存, 和数据库, 4个工程, 2兆内存, 全部搞定.

5: http协议成熟. 为什么我不用rxtx, 我之前已经解释了, 因为rxtx的数据还是原始数据, 协议太低了, 对我的工程设计研发周期变大, 所以我采用http socket流模式.

之前我还遇到了些问题, 比如jar, zip, wav, mp4, js, 等文件怎么分发?rest是最好分发的, 因为就是http而已, 可以js 就不一样了, 有 application js, 还有file js, 记得几个月前我一直苦恼 application js的分发, 后来我设计了 unzipped buffer 等格式, 针对不同的web 对象数据全部搞定的时候, 我发现我的socket服务器源码 核心代码 40kb都不到, 哪有spring 100兆, spring mvc 17兆, spring boot 40兆等那么大, 关于我的socket基础怎么来的?感谢三本书 3堂课: 《java how to program 6th 蓝皮子印度买的》《java net白皮子 美国工业城市frys买的》《c cgi 路德图书馆 》/ 路德大学的计算机网络, 本科的通信原理, 基督大学的数据结构, 操作系统. ***主观情绪略***

还有, 关于一些零散的记忆累计, 我也需要感激的:

1在chinacache的时候管理互联网ip认证项目, 我非常系统的接触了tcp握手的协议码解释.

2在路德大学上香港老师的计算机网络数据编码课非常系统的接触较验机制和TCP编码原理.

3我在2个大学中系统的学习了2次操作系统专业课程.

4我在上海电气接触过power link的tcp 以太帧.

5感谢w3c, web2. 0, http协议官网给我提供了常用文件的 header头 定义规范.

6分发压缩我要感谢gzip, 我的socket数据库引擎系统个人软著不包括gzip压缩, 说到压缩, 用处是真的很大. 因为它让我的握手时间和效率大大增加了.

最早我没有用到压缩的, 因为服务器是花生壳转发, 所以我握手比直接服务器发布慢了一点, 而且走别人的分发代理, 格式还要被强制统一, 我前几个月为了这个问题头疼了几天, 后来用gzip统一压缩大文件, 10兆变2兆, 格式保障了, 速度也上来了. 小伙伴如果不想用gzip, 可以剔除掉, 记得把forwadtype里面分流的函数修改下就行了.

VPCS调度内核

1 VPCS服务器支持每秒400万QPS的web请求. refer page 389,

2 VPCS服务器采用TCP rest request模式, 标准化http response. refer page 388, 395

3 VPCS服务器可自由设计前端和后端集成. refer page 见德塔官网 和 养料经admin 两个实例

4 VPCS服务器完全支持post 个 get 2种请求模式, 可扩展. refer page 481, 488

关于vpcs应用逻辑介绍文字描述

1 作者使用Json api进行数据的载体封装. 2 线程池和线程用hallkeeper和sleeper标识. 3 分发的VPC forward 处理用静态map, 目的是索引web的http IP endpoint地址映射. 4函数操作可静态, 可new, 使用者可多种源码风格自由扩展. 5 注销和运维机制的线程可以通过hallkeeper来分配 skivvy来管理. 6 处理http的response反馈含有buffer, zip, stream等多种格式封装, 支持W3C 定义的格式文件反馈, 如就jpg, html, js, wav, 这些文件打开一次便缓存记录, 方便计算加速.

VPCS的执行流程为 1启动VPCS服务器, 2然后开启socket线程池, 线程的形式为socket accept进行等待http访问请求握手, 一旦握手成功便进行forward分发VPC 执行功能函数处理, 如 登陆认证函数, 数据操作函数, 缓存接口函数, 业务后端逻辑函数等等. 执行结果进行Json封装然后基于http协议 feedback 和response反馈. 最后使用完的socket 线程进行注销, 释放计算内存资源. 因为socket是一个线程, 所以这整个过程和socket accept 是异步消息模式, 互不干扰, 于是socket accpet一直在循环等待http的握手请求. 描述人 罗瑶光

An implementation of VPCS application. The author uses JSON API to return a result. Then uses 'Hallkeeper' to target a Thread pool and 'Sleeper' to target each processing threads. Then creates a VPC bundle to process the static maps, those maps could store the indexed reflections of WEB http IP endpoint address. The function and value could be a static or new, it seems more flexibly at this environment. Once finished the task and catched an exception by each Sleeper thread, the Skivvy will do an arrangement of garbage cycling by Hallkeeper. The returning Http response contains many types of feedback processes, for example W3C of buffer, zip, stream etc. For the visit acceleration, VPCS will cache the buffering documents of jpg, html, js, wav etc.

An execution of VPCS application. Boots a VPCS server. Starts a socket accept pool, then waits for the interactions of http hands shaking all the time. Once getting a successful request or rest call from the HTTP web, then forwarding a VPC task to process the business logic. For example, token sessions, data manipulations, cache interfaces and backend operations etc. The executed result could be built as map, then responding in JSON String for feedback. The skivvy will free memory garbages and do the cancellation of each finished socket. Those whose way loops of socket accept is an asynchronized message mode, so It seems VPCS did a well-distribution and waiting for the net requests.

Author YaoguangLuo 稍后优化语法. 具体见第7章 VPCS论文

VPCS调度架构

1 VPCS服务器包含 视觉模块, 处理模块, 控制模块, 资源模块. refer page 396, 394, 392, 383

2 每一种模块有各自的名称标识 和 内存标识, 方便精确查找. refer page 492, 493,

3 VPCS服务器包含执行者-生产者-造梦者-sleeper, 管理者-分配者-登记者-HallKeeper, 运维者-服务员-清洁员-skivvy 3个模式. refer page 392, 394,

4 支持控制与执行分离, 线程与资源分离. refer page 385~389, 486, 490, 492

作者最早设计 VPCS 服务器的动机, 是为了弥补VPC的计算过程观测困难的问题. 因为作者设计的VPC是采用springboot + mybatis的结构, 底层全是是开源插件的封装, 很多核心源码又不能调试仅仅通过几个log和 try catch给作者带来了无形的压力(作者的思维很简单, 就是自己写个服务器, 能够调试断点从头断到尾), 于是有计划从无到有进行设计一个TCP/IP的 SOCKET 协议做服务器HTTP请求. 作者当时没有想到, 一个这样的小动机给带来了丰厚的回报, VPCS 目前成为了 DNA 元基映射编码算子 的核心组成部分.

作者的rest技术 最早在加州路德大学的实验室 关于德克萨斯大学的香港教授(彭教授的同学) 的网络课, 用camel 进行rpc 部署便接触了. 在加州路德大学的图书馆接触了c语言的http cgi 教材, 之后在很多公司接触了rest的企业级开发如开源的go martini, 开源的 java的 spring mvc, 开源的 jboss的eap, 开源的 springboot 的 application等. 文中的缓存思维, 来自作者做商品搜索时候, 亚米的王浩雷有建议作者使用三级缓存技术来本地加速, 于是作者google搜索下 用了java jdk的开源 cache manager API. rest的具体paper为 Roy Thomas Fielding的2000年作品, 这里标注下. 罗瑶光

In an early time, the motivation of created a VPCS server, the author did a problem of his VPC open-source project, based on Angular, Mybatis and Springboot, because he coudn't make an inner break-points to do sequence-debugging at that platform. Because all of the Angular, Mybatis and Springboot, were open sources APIs, which were boned and encrypted by DLLs. The author feed so hard to make an efficiency test by only a few fatal logs, tries and catches. Took this problem, he did a plain to build a new TCP/IP web server by using his VPC schedure-method. His purpose was too simple, meant only a fully try catchment of his all of the source code. Seem crazy but successful, now a VPCS became an important part of DNA hexadecimal encodings, AOPM VECS IDUQ TXHF.

Before this VPCS creatives, the author did a well job of Alfresco and Its surf distributions, and 32feet at 2009. And a powerlink and modbus protocol at 2010. And a Liferay-theme and md5 CRC circuit, read HTTP cgi by using C at 2012, Camel RPC deployment at 2013. Do note on Golang martini RPC and Angular 1.2 for Kiyor.Cai at 2015, Chinache. Java Jboss EAP, JDK third party caches at 2016, Yamibuy, PHP laravel MVC at 2017, 117book. Angular 1.2, spring boot and hibernate at 2017, Intel. And referred Roy Thomas Fielding of his Restful.

PLSQL语言

Gitee 20190820 感想: 设计plsql的编译机,. 做这个项目发现2012年接触的对象化序列化编译技术, 非常有价值. 2016年我搞了2个月jvm的 native虚拟机当时想弄懂jvm openjdk的native函数编译原理, 我之后用go模拟了下, 我用386asm做plan9 贝尔的 go函数swap 做了3个月实验, 发现编译好的函数名其实只是一串字节码, 这个字符串仅仅需要一个call 就可以在指令中调用了, 我得到一个灵感, 就是传统的编译过程我认为是: 程序 -> 指令 ->机器码 -> 执行. 在编译原理中, 我总结了下其实是: 程序 -> 序列化功能对象 -> 编译机器 -> 调度-> 机器码 ->执行. 有了这些基础, 我开始尝试将我的 plsql 代码 转换成函数先, 然后这些函数进行编译机调度, 然后再进行功能增删改查执行.

另外我还要感谢印度基督大学 的 操作系统 和微机原理 这两门课, (2008)***去主观情绪***.

Implements of PLSQL compiler, notes on Gitee, 2019-08-20.

The author did well foundament of MCU of 89C51 after 2006 (NAA), an Adv MCU of 8085 and Operating system at 2008~2009 (Chrit University), MCU of 485 and Propller (Tyco, 2009) MCU of 28XX at 2010 (Shanghai Electric), and MCU of Stamps (Javline, Basic and Propeller, Callutheran) at 2012~2013. Seem cool about this domain, the author then did experience in 386ASM and Plan9 by using Go, Jvm natives read images, and call jumps simulation of compile-stacks. He considered the traditional compile map of Program-> Structs-> Binary code-> Execution (PSBE), which could be in fact the map of Program-> Sequenced list of functional classes-> Classes translation-> Schedure plans-> Binary code-> Execution (PSCSBE). After a truly proved of Deta PLSQL, he considered PSCSBE could be used in the Creative Languages. Author YaoguangLuo 稍后优化语法

DETADatabasePLSQL 语法

Outline: this document paper makes a pretty explanation of how does Deta database works by using PLSQL Method. At the same time, I will spend more care about the Deta PLSQL runs in the command line or rest call service, with a lot of real world samples.

DETAPLSQLCommands

setRoot:[path];
baseName:[baseName];
tableName:[tableName]:[operation];
getCulumns:[difinition1]:[difinition2]:[difinition3]:[difinition4]:[difinition5];
culumnName:[culumnName]:[dataType];
changeCulumnName:[newCulumnName]:[oldCulumnName];
culumnValue:[culumnName]:[culumnValue];
condition:[operation]:[difinition1]:[difinition2]:[difinition3];
join:[baseName]:[tableName];
relation[operation]:[difinition1]:[difinition2]:[difinition3] ;
aggregate[operation]:[difinition1]:[difinition2]:[difinition3];

CommandsDefinition

setRoot:[path];
The setRoot:[path]; is mostly used for set the database path.

baseName:[baseName];
The baseName:[baseName]; is mostly used for set the current database name in the PLSQL language compiler system.

tableName:[tableName]:[operation];
The tableName:[tableName]'[operation]; is mostly used for set the current table name in current database with the operations. For example tableName:tableName:select; this command will tell PLSQL system, now begin to do the select function section.

getCulumns:[difinition1]:[difinition2]:[difinition3]:[difinition4]:[difinition5] ;
The getCulumns:[difinition1]:[difinition2]:[difinition3]:[difinition4]:[difinition5]:.. .. ..; mostly be used for select columns.

culumnName:[culumnName]:[dataType];
The culumnName:[culumnName]:[dataType]; mostly be used for create the table columns.

changeCulumnName:[oldCulumnName]:[newCulumnName];
The changeCulumnName:[newCulumnName]:[oldCulumnName]; mostly be used for change the table columns.

culumnValue:[culumnName]:[culumnValue];
The culumnValue:[culumnName]:[culumnValue]; mostly be used for update the columns value.

condition:[operation]:[difinition1]:[difinition2]:[difinition3]:.. . ;
The condition:[operation]:[difinition1]:[difinition2]:[difinition3]:.. .; mostly be used for

join:[baseName]:[tableName];
The join:[baseName]:[tableName]; mostly be used for select and update of delete with conditions.

relation[operation]:[difinition1]:[difinition2]:[difinition3]:.. . ;
The relation[operation]:[difinition1]:[difinition2]:[difinition3]:.. .; mostly be used for join section condition

aggregate[operation]:[difinition1]:[difinition2]:[difinition3]:.. . ;
The aggregate[operation]:[difinition1]:[difinition2]:[difinition3]:.. .; mostly be used for limit, sort or addition operations.

CommandSamples

select samples
tableName:test:select;
condition:or:testCulumn1|<|20:testCulumn2|==|fire;
condition:and:testCulumn1|>|100:testCulumn2|==|fire;

select where in samples
setRoot:C:/DetaDB;
baseName:backend;
tableName:usr:select;
condition:or:u_id|in|3, 4, 5;

select join samples
tableName:utest:select;
condition:or:testCulumn1|<|20:testCulumn2|==|fire;
condition:and:testCulumn1|>|100:testCulumn2|==|fire; join:stest;
relation:or:uid|==|sid:ussd|==|sssd; relation:and:utoken|=!|stoken:umap|==|smap;

select join samples
tableName:utest:select;
condition:or:utestCulumn1|<|20:utestCulumn2|==|fire;
condition:and:utestCulumn1|>|100:utestCulumn2|==|fire;
getCulumns:utestCulumn1|as|uid::utestCulumn2|as|ussd:utoken:umap;
join:backend:stest;
condition:and:stestCulumn1|>|100:stestCulumn2|==|fire;
getCulumns:stestCulumn1|as|sid|:stestCulumn2|as|sssd:stoken:smap;
relation:or:uid|==|sid:ussd|==|sssd;
relation:and:utoken|=!|stoken:umap|==|smap;
aggregation:limit:2|~|10;

insert samples tableName:test:
insert; culumnValue:date0:19850525;
culumnValue:date1:19850526;
culumnValue:date2:19850527;
culumnValue:date3:19850528;
culumnValue:date4:19850529;

update samples
tableName:test:update;
condition:or:testCulumn1|<|20:testCulumn2|==|fire;
condition:and:testCulumn1|>|100:testCulumn2|==|fire;
culumnValue:date0:19850525;
culumnValue:date1:19850526;

update samples
tableName:test:update;
condition:or:testCulumn1|<|20:testCulumn2|==|fire;
condition:and:testCulumn1|>|100:testCulumn2|==|fire;
join:backend:utest;
condition:and:uCulumn3|<|20;
relation:and:testCulumn1|==|uCulumn1:testCulumn2|!=|uCulumn2;
culumnValue:date0:19850525;
culumnValue:date1:19850526;

delete samples
tableName:test:delete;
condition:or:testCulumn1|<|20:testCulumn2|==|fire;
condition:and:testCulumn1|>|100:testCulumn2|==|fire;

create samples
tableName:test:create;
culumnName:pk:culumn1:string;
culumnName:uk:culumn1:long;
culumnName:uk:culumn1:obj;
culumnName:nk:culumn1:double;

drop samples
tableName:test:drop;

change samples
tableName:test:change;
changeCulumnName:oldCulumnName:newCulumnName;

RealWorldSamplesByUsingDETAPLSQLDatabase
setRoot:C:/DetaDB;
baseName:backend;
tableName:usr:select;
condition:or:u_id|<=|3:u_id|>|7;
condition:and:u_email|!equal|321:u_name|!equal|123;
getCulumns:u_id|as|detaId:u_email|as|detaEmail;
join:backend:usrToken;
condition:and:u_level|equal|low;
getCulumns:u_id|as|sId:u_level:u_password|as|SSID;
relation:and:detaId|==|sId;
aggregation:limit:0|~|1;

Compare Tranditioanl SQL:

SELECT u. u_id as detaId, u. u_email as detaEmail, t. u_id as sId, t. u_level, t. u_password as SSID
FROM usr as U
INNER JOIN (SELECT t. u_id as sId, t. u_level, t. u_password as SSID
FROM usrToken as t
WHERE t. u_level equal "low") AS B on U. detaId == B. sId;
WHERE (u. u_id <=3 || u. u_id>7 ) && (u. u_email !equal '321' && u. u_name !equal 123);
LIMIT 0, 1;

Acknowledgement
The Deta PLSQL database system source code link:
https://github. com/yaoguangluo/DETA_DataBase

1 德塔PLSQL语言是一种从上到下的脚本执行语言. refer page 377,

2 德塔PLSQL语言包含常用增删改查命令. refer page 406~409, 471, 1035

3 德塔PLSQL语言支持join和 aggregation 高级操作. refer page 419, 431, 435, 438, 447

4 德塔PLSQL语言行 可批处理, 可拆分. refer page 1035~1041 将例子写入main, class编译, 然后 bash boot class 即可. 还可以bash 定时批处理.

PLSQL编译机

1 德塔PLSQL编译机 用于理解和执行 德塔PLSQL语言. refer page 413, 414

2 德塔PLSQL编译机 包含常见脚本命令计算算子如 条件算子, 比较算子, 包含算子, 离散算子. refer page 419

3 德塔PLSQL编译机 采用map进行的内部中间数据缓存. refer page 431, 432~

PLORM语言

1 德塔PLORM语言 用于 德塔PLSQL语言进行函数封装. refer page 1003~

2 德塔PLORM语言 有先后顺序, 需要遵循 德塔PLSQL语言语法. refer page 1019~

3 德塔PLORM语言 对比 德塔PLSQL语言 用于一些不需要配置的nosql的场景, 类似 hibernate 对比 ibatis. refer page 1019~

4 VS hibernate 对比 ibatis的不同, 德塔PLORM语言 另外也是 德塔PLSQL的上层语言. refer page 1019~

德塔的PLORM 和 PLSQL 的引擎出现, 作者开始有信心将其优化成 节点执行的命令行脚本模式, 于是之后的TinShell 和 PLTinShell, PLETL Shell 诞生了. 这个PLETL体系弥补了 当前世界按语言理解方式来模拟神经组织计算的映射空白.

灾后重建

1 德塔数据库包含logbin 系统. refer page 398,

2 德塔数据库包含logbin 系统基于单个写操作进行log保存 并行加密成文件. refer page 399

3 单个写操作用时间戳作和写增量序列进行对应标识, 避免混乱. refer page 399

4 德塔数据库包含logbin 系统 并支持热备和错误写 实时rollback 检测. refer page 398

德塔的logbin系统, 一开始是设计在try catch 中, 因为德塔数据库融合了cache 和 DMA两种存储系统, 于是, 作者将logbin 的 rollback进行先内存模拟执行写操作, 成功后再执行物理写操作, 并记录操作日志. 如物理写操作还失败, 就rollback 到上次写请求. 这种 3步logbin机制, 作者认为 高安全性.