KDB+ database 介绍

翻译 2009年05月13日 13:27:00

 注:这里的很多内容是参考kx system公司的资料翻译过来的,所以我放在翻译栏.(小弟英语也不是太好,请不要笑话我,其中有些我实在无法组织出正确的语句就把原文贴上来了)

 

 

 

1:有关q的发展

 Q编程语言和kdb+数据库是由Arthur Whitney开发出来的,在2003年由Kx Systems公司发布,q的设计目标为展示,速度,及效率.此设计的折衷考虑是简洁,精练例如,C++ Java, or C#,结合SQL.While the q programming gods revel in programs resembling an ASCII core dump, this manual is for the rest of us.

 Q 从APL语言发展而来,APL是由Kenneth Iverson于1950年在哈佛发明,第一个面向数学符号的语言,APL成为计算机语言是当它被IBM介绍为向量编程语言,意味着它可以在一次单独的操作中处理一个列表的数据.它在金融及其它需要大批量数据处理的工业取得成功.

     自从q语言作为向量处理语言出现以来,它在复杂的计算及大的数据列上表现出很好的性能,q语言的新表现在其处理出现在关系范例的的大列数据效率很高.它的语法允许select表达式,这各SQL92标准相像,its collection of built-in functions forms a rich superset of those in SQL 92.

 在q语言中也存在一此LISP的影子.事实上,q的基础数据结构是list.它的符号和术语是不同的,但the functionality is there and is arguably simpler,For those so inclined, writing compilers is a snap in q.

 Q的DNA序列也表现出了其作为功能编程语言的影响. While q is not purely functional, it is arguably as functional as C++, Java and C# are object-oriented.

  2:体系结构

 一个精通q语言的开发员的编程思想与传统的面各关系型数据库的开发员不一样,在下文中"冗长的编程(高级语言)"指C++,Java 和 C#.为了将你带入到正确的思想轨道,我们总结了一些潜在的,While q is not purely functional, it is arguably as functional as C++, Java and C# are object-oriented.给q 的初学者.

 在高级数据库程序语言中主要有以下几类:

  业务对象必须映射为一个完全不同的表现形式,例如,表,为了持久化.它在对象-关系的正确转移了做出了很大的努力.如EJB

业务对象为了传输必须映射到另一个表现形式,通常为一些二进制字节码,或者是XML格式

履行数据的操作如选择和集合最好是在数据库据服务器的存储过程中完成.复杂的数字计算最好是在应用服务器而不是在数据库服务器上.

    

很多的高级语言是用来得到正确的不同的表现形式,同时很多高级语言的代码是用来排列资源和同步不同的表现形式.这些问题在q语言中不会出现.

内存数据库:一种看KDB+数据库的形式为它是一个内存数据库并且持久备份的.实体格式被保存在内存实质上和存储在硬盘或者是传输中的一样.当数据被q在内存中操作的时候,没有分开存储过程的语言.这有一点类似ADO.NET中不连贯的记录集,但是在建造表对象和用来在硬盘上操作表的数据之间没有分离.

解释型语言:q是解释型语言而不是编译型语言.在执行中,数据和函数存活于内存的工作站中.Iterations of the development cycle tend to be quick because all information needed to debug is available in the workspace.q程序将作为一个脚本存储及执行.一般地,q函数能当做一个字符串创建出来,也可以动态地执行,所以它能编写出自修改的代码.

顺序的Lists:因为经典的SQL为建立在无序集上的,在表中的行顺序是没有定义的.在q中,顺序的lists是所有non-trivial数据结构的基础,所有表中的行有顺序.因此这使得处理大量的时间序列的数据非常容易也非常地快.

   执行顺序:当q是从左到右写的时候,表达式将会从右到左执行,ad the q gods prefer,右的左边,意味着左边的函数或者是操作符将执行其右边的.没有操作符优先的说法,所以很少需要圆括号是解决操作优先级的问题.

 面向表的:放弃那些"进来"的对象,为了和上面提到的几种语言对比,q语言没有实现像面向对象编程的类一样,也没有继承,虚函数.取而代之的是,q语言建立了一个复杂的通过建造和映射顺序lists,实际上在数学里也叫序列或者是向量.在q语言中higher-lever数据的建造操作为字典和表.一个函数可以在一个工作区内声明为全局的,或者在另一个函数中匿名定义,对于函数来说变量可以是全局也可以是局部的.

 面向列的:SQL表存储数据在行同时操作的是行或是行的某一个域为单位的数据,q语言存储数据到表的时候是采取列的形式,操作的时候也是操作整个列向量.

 类型:q是强类型的,动态的,检查性的语言,但它的类型比他们类型语言来说少些麻烦,每一个变量都有一个很好定义类型的值,同时类型促使其操作的动态性.一个变量的类型是没有明确定义的,变量类型的名反射出了指派到它上面的值.一个存储了同类型的lists是不允许转换到其它类型的.

 空值:在经典SQL中,空值指示丢失的数据或者是任何类型.在q语言中,不同类型有不同的空值.无穷值或者是空值能参与数学计算和其他有合理结果的运算.

 完整的I/O:I/O是通过句柄来作为功能窗口与外界通讯的.一旦一个句柄被建立读可以得到句柄的值,通过句柄也可以写值.

KDB+ database

 很早就想把KDB+的一些知识共享出来,一直没有时间,现在国内KDB+用户很少,参考资料自然也少得可怜,去年做过一个相关项目,现在把一些我知道的东西拿出来跟大家分享,当然,我的理解并不一定完全正确,也...
  • java_jun
  • java_jun
  • 2009年05月13日 13:22
  • 935

KDB+ database 第二段 Lists

 Lists 列表   预览       复杂的数据是由简单的原子构成的,像前面我们列举出来的.理解一个list的意思是很重要的,几乎所有的q程序都包括处理lists.它的概念简单但是想快速建立是很复...
  • java_jun
  • java_jun
  • 2009年05月13日 13:35
  • 833

KDB+ database 初步

 在unix系的操作系统中q执行方式是用安装路径下$HOME/q,window操作系统中刚是q的安装目录一般为c盘  在命令行键入q可以启动一个q的会话.你会看到一个新的窗口里面写着Kx System...
  • java_jun
  • java_jun
  • 2009年05月13日 13:32
  • 1598

KDB+ database 第一段 数据类型

 二.Atoms(基本数据类型)           预览       所有的数据最终都是通过基本数据类型构造出来的,所有我们从基本数据类型开始学习.一个基本数据类型是一个不可再分的带一个特定类型值的...
  • java_jun
  • java_jun
  • 2009年05月13日 13:34
  • 1018

kdb+q 入门实践

kdb+q堪称天书,对于一个对java,python和c++比较熟练的我来说,一时之间实在难以接受。无奈国内中文资料少之又少,即使有一些中文资料,或者英文的文献,难读也就算了,居然看完十几页,不能按照...
  • Aaron23456
  • Aaron23456
  • 2016年08月01日 17:05
  • 1208

天书 kdb+之q语言

kdb+ 目前还在研究中,主要资料kx.code.com trade:([]time:`time$();sym:`symbol$();price:`float$();size:`int$...
  • rubyzhudragon
  • rubyzhudragon
  • 2012年02月23日 14:55
  • 4278

KDB+性能分析:内存篇

经过一个多星期的折腾终于搞定房子的事了,租到了一个还比较不错的单间,长这么大终于有一个属于自己的空间了,在这之前还在朋友那里寄宿了一个星期,也是长这么大第一次感觉到了“无家可归”的酸楚,每天下班后都不...
  • kraussyin
  • kraussyin
  • 2015年07月24日 09:50
  • 2744

ck+database:Comprehensive Database for Facial Expression Analysis论文笔记

Comprehensive Database for Facial Expression Analysis 摘要: ck+数据集提供了CMU匹兹堡AU编码的面部表情图像数据库,目前包含来自18...
  • yinghua2016
  • yinghua2016
  • 2017年08月17日 13:14
  • 270

ORACLE Virtual Private Database(VPD)

行记录级访问控制(ROW-RULE control)问题的提出和意义?        企业的应用系统都离不开数据库系统,数据库系统的权限控制是很重要的一个环节,大型数据库系统(ORACLE、DB...
  • rfb0204421
  • rfb0204421
  • 2012年08月13日 17:46
  • 1155

浅析列式数据库的特点

最早的商业列式数据库是在1995年发布的Sybase IQ,但是一直到1999年左右才慢慢稳定到能够投入生产环境。现在的大多数分析型数据库都是在2003-2005年从Postgresql分支出来的。这...
  • joeyon
  • joeyon
  • 2014年01月03日 16:02
  • 601
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:KDB+ database 介绍
举报原因:
原因补充:

(最多只允许输入30个字)