KDB+ database 初步

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

 

在unix系的操作系统中q执行方式是用安装路径下$HOME/q,window操作系统中刚是q的安装目录一般为c盘

  在命令行键入q可以启动一个q的会话.你会看到一个新的窗口里面写着Kx Systems.同时也会看q).这就是q的控制台.输入"6*7"然后回车看结果.

在这个手册中为了可读性我们可能会省略q)

这里 '_'表示等待你的输入.

变量

 一个变量是用来关联一个实体的名字.声明一个变量和指定一个值都是在':'这一步里.注意:这里不同于其他语言用'='来进行赋值,而是用':'代替了.如给一个整数赋值写作

变量的命名必须是alpha或者是alpha开头,数字或者是下划线.一些人简洁地叫赋值gets

命名推荐:

     1:最一个足够长的能够明显表达出变量的意思的名字.名字的意图是为了跟其他读者交流的.长的名字可能会使代码读起来困难些.如,'chkDsk' 就是'cd'清晰,但是还是没有'checkDisk'来得更清晰.

     2:用动词来命名操作的名字,用名词来命名数据的名字.

     3:跟你使用的缩写要协调,要留心:即使"明显的"的缩写可能对于不同读者是不透明的,毕竟本地语言有差异.

     4:跟你使用的大写要协调,such as initial caps, camel casing, etc. Pick a style and stick to it.

 5:使用上下文关系来命名名字空间

 6:不要使用保留字,如int,float.在q的操作中会造成特别的结果

 7:最好避免在一个命名中重复使用下划线,如果你执意要用,那请不要用下划线结尾.表达式包含下划线比较难以阅读.

空格

  通常情况下,q允许但不是必须的,在操作符,括号等中的空格你可以这样写:

因为q语言提倡简洁代码,所以你经常会看到没有多余的空格,为了帮助你习惯这种简洁的方式,我们通常都是都空格用在分隔符的后面.你会感觉在允许的地方加个空格可以增强可读性,但是冗长.我们将会指出在哪些地方不应该出现空格.

Q控制台

  一旦你输入你喜欢的上面提到的版本号到q的控制台,唯一的反应是游标会停在下一行等待你的输入.看a的值,就输入名字然后回车.

你可能会想为什么q的控制不打出指定的值,这只是一个普通的q控制台的小设计.

注意:一个显而易见,值得注意的地方在2.4版本中就是q控制台对于列表,字典,表的显示.为了这些在2.3版本中k风格的习惯,2.4控制台表现了复杂的数据类型,表现函数.请参看12章如何修改控制台显示

      注释:

在q中, / 表示注释的开始.

         注意:至少一个空格字符必须用 / 跟其它在同一行的左边的文本分隔开来

  在接下来的例子中,b没有定义,所以发生错误.

下面的也会导致错误

      推荐:原则上q没有必要解释错误的消息或者是注释,q代码通常是正确自我检查的.有些人会花很多时间去研究q的错误消息像上面提到的b没有定义.此外,也有人被误导,请不要这样.

赋值

一个变量没有明确地声明或是输出.而是,值赋给带着类型的变量.在我们的例子中,右边的表达式在语义上是一个整型,所以a就是int型.q的数据类型将会在第一章学习到.

事实上变量可能没有赋值之前就没有声明,意思说一个赋值可能是初始化赋值也可能是后来再赋值,这依靠上下文关系.这可以很完美的给一个变量再赋其它类型的值.一旦这样做了,这个名字将会影响新的值

警告:你可以不经意地改变变量的类型.或者你可以重新再使用此变量命名,但是一个未没发现的漏洞将会很麻烦,请注意输入变量名字的正确性

一些高级语言只允许左边赋值,但是在q像在c一样赋值能有表达式,所以我们发现

或者

解析顺序

Q代码解释顺序为从右到左,但如果是高级语言,42被赋值给变量a,然后变量被加上1,然后再将结果赋值给b

因为解释是从右到左,所以程序员可以从左到右地阅读代码

变量b得到1加上变量a的值42

表达式赋值的能力允许q的一行代码执行整个高级语言的工作.如一个表达式可以比多行的代码执行得更快,但是可读性变差,难维护.q提倡简洁,这种编程风格应该避免,它很容易导致可写难读的代码

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 介绍

 注:这里的很多内容是参考kx system公司的资料翻译过来的,所以我放在翻译栏.(小弟英语也不是太好,请不要笑话我,其中有些我实在无法组织出正确的语句就把原文贴上来了)   1:有关q的发展 Q编...
  • java_jun
  • java_jun
  • 2009年05月13日 13:27
  • 4447

KDB+ database 第一段 数据类型

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

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
  • 4276

KDB+性能分析:内存篇

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

浅析列式数据库的特点

最早的商业列式数据库是在1995年发布的Sybase IQ,但是一直到1999年左右才慢慢稳定到能够投入生产环境。现在的大多数分析型数据库都是在2003-2005年从Postgresql分支出来的。这...
  • joeyon
  • joeyon
  • 2014年01月03日 16:02
  • 600

KDB数据库的简单入门

公司从sybase换到kdb(高度类似oracle) 网上资料少找到一些命令 一:下面普及一下KDB产品基本操作: 1:K-DB启动   $kdboot -h   $kdboot ...
  • zhouhao88410234
  • zhouhao88410234
  • 2017年03月14日 14:00
  • 502

Interfacing to kdb+ from Java

http://www.sinv.de/slog/?p=23 Retrieving data from kdb+ into Java is extremely simple. The java dr...
  • caolaosanahnu
  • caolaosanahnu
  • 2012年11月05日 10:38
  • 1824
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:KDB+ database 初步
举报原因:
原因补充:

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