`

KDB+ database 初步

    博客分类:
  • KDB+
阅读更多

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

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

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

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

变量

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

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

命名推荐:

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

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

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

4:跟你使用的大写要协调,suchasinitialcaps,camelcasing,etc.Pickastyleandsticktoit.

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提倡简洁,这种编程风格应该避免,它很容易导致可写难读的代码

<!--EndFragment-->

分享到:
评论
1 楼 sunnyxiaoxi 2014-10-31  
图片看不到

相关推荐

    q_Wind, 基于 kdb+/q 接口库的风量化 API.zip

    q_Wind, 基于 kdb+/q 接口库的风量化 API q_Wind用于风力api的/q 接口( 非com版)该项目为风信息有限公司提供的4套不同api提供 kdb+/q 支持,中国财务信息和解决方案提供商:这也提供了一些市场数据源,风量 API ;...

    q_and_kdb+.pdf

    ### Q_and_kdb+: 金融量化编程语言 #### 核心知识点概述 1. **Q 和 kdb+ 的背景与特点** - **Q 语言**:一种高性能、专为金融量化交易设计的语言。 - **kdb+**:一个高速时间序列数据库管理系统,能够高效处理...

    Wind Kdb+数据及交易接口V1.1(新版)说明1

    **Wind Kdb+数据及交易接口V1.1(新版)说明** 本文将详细介绍Wind Kdb+数据及交易接口的新版V1.1,该接口是基于Wind C++ V1.1构建的,旨在为金融分析和交易提供高效的数据获取和处理能力。这个接口允许用户通过C++...

    docker-kdb:用于运行KDB +的最小(Alpine Linux)Docker容器

    docker-kdb + 用于运行KDB +的最小(Alpine Linux)Docker容器这是什么? 在Docker中运行KDB +应该既简单又小。 KDB +是一个微型可执行文件,以其超高效的资源消耗而闻名。 在300MBLinux上运行它感觉有些矫kill过正...

    kdb-master.zip

    Kdb+,全称为Query Database Plus,是由Kx Systems公司开发的一款高性能、实时、内存数据库系统,尤其在金融领域有着广泛的应用。当我们提到“kdb-master.zip”时,这通常意味着我们正在讨论kdb+的一个源代码版本...

    kdb+tick 文档

    kdb+tick 文档 基于q语言的 内存数据库, 支持billion级的数据秒级查询

    solace:用于 KDB+ 的 Solace 中间件客户端。 允许从 KDB+ 发布订阅

    Solace PubSub+ 代理的 kdb+ 接口 介绍 该接口为 Solace PubSub+ 代理提供了一种与 kdb+ 交互的机制。 该接口是围绕记录的 Solace C api 的薄包装器 kdb+ 新手? Kdb+ 是世界上最快的时间序列数据库,针对摄取、...

    kdb-c-interface:从 C 与 kdb+ 接口的一些示例代码

    将 KDB+ 与 C 接口该项目演示了如何使用 Kx 提供的接口在 kdb+ 和 C 之间编组数据。 构建了一个共享对象作为输出,并提供了一个 aq 脚本,该脚本将显示如何将 C 函数动态加载到 kdb+ 中。 此资源的 PDF 文档可在以及...

    kdb-cpp:连接到kdb +的C ++类

    连接到kdb +的示例C ++代码如何使用从下载KH 和合作从 。 将它们放在include/external/ 。 编译并构建示例简单表查询-examples / query_table.cpp g++ -std=c++11 -lpthread -o kdb_cpp include/internal/*.cpp ...

    matlab期货代码-qWind:WindAPI的kdb+/q接口(WAPI,COM​​版本)

    kdb+/q interface for Wind API (WAPI, COM Version) ( ) WindKdb+接口:实现在kdb+/q中直接调用Wind量化接口。运行环境:(1)Wind量化接口个人版或机构版;(2)32位kdb+ for Windows, 3.0以上版本;(3)32位或64...

    kdb:kdb +教程和代码示例

    数据库 kdb +教程和代码示例

    kxsystems.github.io:GitHub上的kdb +和q存储库索引

    kdb+和q是金融行业中广泛使用的高性能数据库和编程语言,尤其在实时数据处理和时序数据分析方面表现出色。kxsystems.github.io是kdb+社区在GitHub上的一个项目,它提供了一个综合的索引来展示用户创建的kdb+和q相关...

    kdb:伴随文件到kdb +和q

    《kdb: 伴生文件在kdb+与q中的应用》 在kdb+和q的世界里,伴生文件(Companion Files)扮演着至关重要的角色,它们为数据库管理和数据处理提供了强大的支持。kdb+是英国Kx Systems公司开发的一种高性能、内存数据库...

    matlab方差分析代码-kdb.q.kalman.filter.beta.ETFs:kdb+/qkalmanbetamatlabpython

    KDB +代码编写。 代码互为镜像 我的贡献是将matlab文件转换为q / KDB +,用于卡尔曼增益部分。 代码引用以下方程式:书:Ernest P Chan“算法交易-策略及其理性”(2013年) Matlab文件使用卡尔曼增益实现了计算两个...

    DFT的matlab源代码-q-fftw:适用于KDB+/q的FFTW

    q-FFTW为KDB + / q 3.x启用FFTW 3.x()。 FFTW是一个C兼容库,可使用FFT(快速傅立叶变换)算法在O(n log n)时间内高效地计算傅立叶变换。 q-FFTW由两个主要文件组成: 动态库qfftw.so / qfftw.dll (已静态链接到...

    rust_kdb_c_api:kdb + C API的Rust包装器

    kdb + C API的Rust Wrapper 编程语言q(kdb +是用q编写的数据库)仅提供C API,但有时外部库提供Rust接口,但不提供C / C ++接口。 从其性能着称,Rust仍然应该可行,以便为kdb +构建共享库。 提供此库是为了满足...

    enterprise-components:适用于kdb +的企业组件

    kdb+ enterprise-components enterprise-components是在kdb+之上的一组开源构建块,使您可以通过几个简单的步骤就可以建立用于数据仓库和分析的系统。 它有助于构建专业数据系统,其中包括: 资料汇入 贮存 质量...

    vscode-q:vscode kdb + q扩展

    此扩展提供了kdb + \ q语言支持: q语法 服务器列表按标签分组 服务器资源管理器 由和支持的查询网 基于查询虚拟化 由提供支持的语言服务器 重命名符号(F2) 转到定义(F12) 前往参考(Shift + F12) 工作区...

    q-REST:Java REST服务,用于连接到kdb +

    REST 用Java 8编写的开源REST服务,用于使用JSON连接到kdb实例。 REST服务可以提供一个查询来运行或调用在kdb实例上预定义的函数。必备配置特性资源文件夹中有一个application.properties文件,可通过更新以下属性来...

    quantQ:Novotny等人的《使用kdb + q进行机器学习和大数据的存储库》

    《使用kdb+ q进行机器学习和大数据的存储库——quantQ》是由Novotny等人创建的一个项目,旨在利用kdb+ q语言处理和分析大规模数据,并应用到机器学习领域。kdb+是一款高效、内存优化的数据库系统,特别适合处理时间...

Global site tag (gtag.js) - Google Analytics