注:这里的很多内容是参考kx system公司的资料翻译过来的,所以我放在翻译栏.(小弟英语也不是太好,请不要笑话我,其中有些我实在无法组织出正确的语句就把原文贴上来了)
1:有关q的发展
Q编程语言和kdb+数据库是由ArthurWhitney开发出来的,在2003年由KxSystems公司发布,q的设计目标为展示,速度,及效率.此设计的折衷考虑是简洁,精练例如,C++Java,orC#,结合SQL.WhiletheqprogramminggodsrevelinprogramsresemblinganASCIIcoredump,thismanualisfortherestofus.
Q从APL语言发展而来,APL是由KennethIverson于1950年在哈佛发明,第一个面向数学符号的语言,APL成为计算机语言是当它被IBM介绍为向量编程语言,意味着它可以在一次单独的操作中处理一个列表的数据.它在金融及其它需要大批量数据处理的工业取得成功.
自从q语言作为向量处理语言出现以来,它在复杂的计算及大的数据列上表现出很好的性能,q语言的新表现在其处理出现在关系范例的的大列数据效率很高.它的语法允许select表达式,这各SQL92标准相像,itscollectionofbuilt-infunctionsformsarichsupersetofthoseinSQL92.
在q语言中也存在一此LISP的影子.事实上,q的基础数据结构是list.它的符号和术语是不同的,但thefunctionalityisthereandisarguablysimpler,Forthosesoinclined,writingcompilersisasnapinq.
Q的DNA序列也表现出了其作为功能编程语言的影响.Whileqisnotpurelyfunctional,itisarguablyasfunctionalasC++,JavaandC#areobject-oriented.
2:体系结构
一个精通q语言的开发员的编程思想与传统的面各关系型数据库的开发员不一样,在下文中"冗长的编程(高级语言)"指C++,Java和C#.为了将你带入到正确的思想轨道,我们总结了一些潜在的,Whileqisnotpurelyfunctional,itisarguablyasfunctionalasC++,JavaandC#areobject-oriented.给q的初学者.
在高级数据库程序语言中主要有以下几类:
业务对象必须映射为一个完全不同的表现形式,例如,表,为了持久化.它在对象-关系的正确转移了做出了很大的努力.如EJB
业务对象为了传输必须映射到另一个表现形式,通常为一些二进制字节码,或者是XML格式
履行数据的操作如选择和集合最好是在数据库据服务器的存储过程中完成.复杂的数字计算最好是在应用服务器而不是在数据库服务器上.
很多的高级语言是用来得到正确的不同的表现形式,同时很多高级语言的代码是用来排列资源和同步不同的表现形式.这些问题在q语言中不会出现.
内存数据库:一种看KDB+数据库的形式为它是一个内存数据库并且持久备份的.实体格式被保存在内存实质上和存储在硬盘或者是传输中的一样.当数据被q在内存中操作的时候,没有分开存储过程的语言.这有一点类似ADO.NET中不连贯的记录集,但是在建造表对象和用来在硬盘上操作表的数据之间没有分离.
解释型语言:q是解释型语言而不是编译型语言.在执行中,数据和函数存活于内存的工作站中.Iterationsofthedevelopmentcycletendtobequickbecauseallinformationneededtodebugisavailableintheworkspace.q程序将作为一个脚本存储及执行.一般地,q函数能当做一个字符串创建出来,也可以动态地执行,所以它能编写出自修改的代码.
顺序的Lists:因为经典的SQL为建立在无序集上的,在表中的行顺序是没有定义的.在q中,顺序的lists是所有non-trivial数据结构的基础,所有表中的行有顺序.因此这使得处理大量的时间序列的数据非常容易也非常地快.
执行顺序:当q是从左到右写的时候,表达式将会从右到左执行,adtheqgodsprefer,右的左边,意味着左边的函数或者是操作符将执行其右边的.没有操作符优先的说法,所以很少需要圆括号是解决操作优先级的问题.
面向表的:放弃那些"进来"的对象,为了和上面提到的几种语言对比,q语言没有实现像面向对象编程的类一样,也没有继承,虚函数.取而代之的是,q语言建立了一个复杂的通过建造和映射顺序lists,实际上在数学里也叫序列或者是向量.在q语言中higher-lever数据的建造操作为字典和表.一个函数可以在一个工作区内声明为全局的,或者在另一个函数中匿名定义,对于函数来说变量可以是全局也可以是局部的.
面向列的:SQL表存储数据在行同时操作的是行或是行的某一个域为单位的数据,q语言存储数据到表的时候是采取列的形式,操作的时候也是操作整个列向量.
类型:q是强类型的,动态的,检查性的语言,但它的类型比他们类型语言来说少些麻烦,每一个变量都有一个很好定义类型的值,同时类型促使其操作的动态性.一个变量的类型是没有明确定义的,变量类型的名反射出了指派到它上面的值.一个存储了同类型的lists是不允许转换到其它类型的.
空值:在经典SQL中,空值指示丢失的数据或者是任何类型.在q语言中,不同类型有不同的空值.无穷值或者是空值能参与数学计算和其他有合理结果的运算.
完整的I/O:I/O是通过句柄来作为功能窗口与外界通讯的.一旦一个句柄被建立读可以得到句柄的值,通过句柄也可以写值.
<!--EndFragment-->
分享到:
相关推荐
Kdb+,全称为Query Database Plus,是由Kx Systems公司开发的一款高性能、实时、内存数据库系统,尤其在金融领域有着广泛的应用。当我们提到“kdb-master.zip”时,这通常意味着我们正在讨论kdb+的一个源代码版本...
PyQ-适用于kdb +的Python 将引入了。 接口集合的一部分。 它允许开发人员在一个应用程序中无缝集成Python和q代码。 这是通过将Python和q解释器引入相同的过程来实现的,从而使用两种语言编写的代码都对相同的数据...
**Nim Kdb类型安全绑定**是Nim编程语言与Kx Systems的Kdb+数据库之间的一种接口,它允许Nim程序员以类型安全的方式与Kdb+进行交互。这种绑定确保了在Nim代码中与Kdb+通信时的数据一致性,减少了潜在的错误和异常。 ...
JDBC(Java Database Connectivity)是Java中用于与各种数据库交互的标准接口,kdb-jdbc驱动实现了这个接口,使得Java应用能够通过标准的方式来访问kdb+数据库。 在Java编程中,JDBC驱动是必不可少的组件,它允许...
当前主流的时序数据库有多种,包括InfluxDB、Timescale、Apache Druid、Kdb+、Graphite、RRDtool、OpenTSDB、Prometheus、DolphinDB、IoTDB、QuestDB、TDengine等。 1. InfluxDB InfluxDB是一个流行的时序数据库,...
"FCC常用的一些KDB"这个主题涉及到的是FCC提供的一系列知识数据库(Knowledge Database,简称KDB),这些数据库包含了关于WiFi(DTS,可能是Device Test Specification的缩写)和蓝牙(Bluetooth)设备在FCC规定下的...
建立: 预发布版本: KDB:请参阅(Wikipedia)[ ]或(KX Systems官方文档)[ ]。 该项目具有: 初始KDB API-(请参阅KDB Java Api文档)[ ] 基于Kotlin的KDB API 性能比较
该编号可能与FCC内部的KDB(Knowledge Database)条目有关,KDB是FCC发布的技术标准和规定集合,它为制造商和运营商提供了关于如何符合FCC规定的技术指导和解释。 由于提供的文档内容有限,我们无法详细分析具体的...
"accelon2015_kdb"示例的出现,是为了帮助开发者理解如何使用ksana2015来创建和管理KDB(Knowledge Database,知识库)。KDB是一种专为存储和检索复杂结构化和非结构化数据而设计的数据库,尤其适合处理语义丰富的...
可能有点类似于kdb +,但隐秘性要低得多。 不仅对开发人员有好处,而且对数据库最终用户也有好处,以便他们探索数据并与数据交互。 在OSX,Linux,Windows,iOS,Android上工作易于嵌入其他语言贡献准则如果有语言...
列式数据库例如Vertica、Paraccel(现为Actian Matrix)、Amazon Redshift、Sybase IQ、Exasol、Infobright、InfiniDB、MonetDB(包含...PowerDrill、Druid和kdb+更适合于读取大量数据但只更新或读取少数列的OLAP场景...
kdbから讲义情报の取得と管理を行います。 利用方法 が利用できます。 环境変数名 说明 默认 PG_HOST Postgres接続先のホスト名 Postgres PG_PORT Postgres接続先のポート番号 5432 PG_DATABASE Postgres接続...
open ( "/path/to/database.kdb" ) database . unlock ( "the master password" ) puts database . entry ( "entry's title" ) . password 安全警告 不会尝试保护此库使用的内存; 我们可以使用 libgcrypt 的安全 ...
以下将详细介绍如何使用Java连接不同的数据库系统,包括Oracle、SQL Server和DB2。 一、连接Oracle数据库 在JSP中连接Oracle数据库,通常使用Oracle提供的thin驱动。以下是关键步骤: 1. 引入Oracle JDBC驱动:...
Support for .kdb and .kdbx files (version 1 to 4) with AES - Twofish - ChaCha20 - Argon2 algorithm Compatible with the majority of alternative programs (KeePass, KeePassX, KeePass XC...) Allows fast ...
{ " remote_debug " : true , " listen_address " : " :3000 " , " databases " : { " test " : { " database_path " : " /tmp/test-db " , " index_depth " : 4 , " payload_size " : 16 , " paylo
首先,我们需要创建和管理密钥库(Key Database,简称KDB)。通过运行IBM Websphere Application Server目录下的`iKeyman.bat`,我们可以启动一个图形界面工具来处理密钥和证书。在这个工具中,你可以新建一个KDB...
示例:CREATE OR REPLACE FUNCTION kdb_func() RETURNS VOID AS $$ DECLARE ret TEXT; BEGIN SHOW WORK_MEM INTO ret; RAISE NOTICE '%', ret; END; $$ LANGUAGE plsql STRICT SET work_mem='15MB'; 六、语句中的...
KingbaseES 参数设置介绍(一) KingbaseES 是一个关系型数据库管理系统,参数设置是其核心组件之一。参数设置决定了数据库的性能、安全性和扩展性。 KingbaseES 的参数设置共有七个级别,分别是 internal、...