日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kdb q介绍

發(fā)布時間:2023/12/2 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kdb q介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Q起源

Kx systems公司的創(chuàng)始人之一Arthur Whitney在2003年研發(fā)了列式數(shù)據(jù)庫KDB和它的操作語言q。q也可以寫成Q。設(shè)計之初,q語言要做到簡潔,高效和富表達(dá)性。

q的起源受到多種語言的啟示。包括APL、LISP和函數(shù)式編程。

APL是一個向量語言,所以Q也具有向量語言的一些特點:

  • 處理大批量數(shù)據(jù)時非常快
  • 處理數(shù)據(jù)的基本單元 - 列表

Q不只于此,q在處理關(guān)系型數(shù)據(jù)時也非常快。q支持SQL 92標(biāo)準(zhǔn),并在這個基礎(chǔ)上加上了一些特有的sql特性和豐富的內(nèi)置函數(shù)。

LISP語言處理的數(shù)據(jù)是通過list這種形式,q同樣是通過list的形式。另外q還擁有許多函數(shù)式編程的特點。雖然q并不完全是一個函數(shù)式編程語言,但函數(shù)編程之于q,相當(dāng)于面向?qū)ο笾贘ava/C#。

Q特點

Q設(shè)計的時候,考慮到現(xiàn)有數(shù)據(jù)處理系統(tǒng)的弊端。事實上我們現(xiàn)在涉及數(shù)據(jù)處理的系統(tǒng),面臨著非常復(fù)雜的數(shù)據(jù)轉(zhuǎn)化過程。例如:

  • 從對象轉(zhuǎn)到數(shù)據(jù)庫表
  • 從對象轉(zhuǎn)到網(wǎng)絡(luò)傳輸模型(xml)
  • 各種各樣的類

。q的出現(xiàn)能夠較好的解決這些問題。Q的設(shè)計思想與之前所學(xué)的大部分語言是如此的不同,以至于我們在這里有必要讓大家先調(diào)整好思維方式再去查看語法細(xì)節(jié)。如果用一句話來描述q的特點,它是.....。許多各種各樣的特點

  • 內(nèi)存內(nèi)的數(shù)據(jù)庫:理解KDB的一種方式就是KDB是一個內(nèi)存數(shù)據(jù)庫,但擁有磁盤可持久化能力。
  • 解釋性語言 :開發(fā)周期更短
  • 列表是有順序的 :不同于數(shù)據(jù)庫中的行,因為列表有序,所以數(shù)據(jù)表也有序
  • 從右往左解析?
  • 面向表
  • 面向列:關(guān)系型數(shù)據(jù)庫按行處理數(shù)據(jù)和存儲數(shù)據(jù),kdb是按列存數(shù)據(jù),對數(shù)據(jù)進(jìn)行運算也是直接作用在列向量上。
  • 強類型
  • Null值擁有特殊含義?
  • 內(nèi)置I/O的支持?

數(shù)學(xué)復(fù)習(xí)課

q語言和數(shù)據(jù)的相關(guān)性太緊密了,以至于我在這里有必要復(fù)習(xí)一下一些基本的數(shù)據(jù)函數(shù)知識。實際上,絕大部分的q結(jié)構(gòu)和操作都可以理解為方法映射。

對于一個函數(shù),其輸入值組成的域稱為domain,值域稱為range。通常我們有兩種方式來描述算法/方法。一是公式法,可以寫成

f(x) = x2?

另外一個是圖形表示

I O
0 0
1 1
2 4
3 9

?其中I是輸入,O是輸出。??

根據(jù)函數(shù)參數(shù)數(shù)量的不同,我們又將函數(shù)分成幾類:

  • monadic:只有一個參數(shù)
  • dyadic:有兩個參數(shù)
  • nildic:沒有參數(shù)

如果一個g的值域是f的domain,那么這個函數(shù)組合可以寫成f(g(x))。

(在下文中,我們稱數(shù)學(xué)函數(shù)為map/mapping,稱q方法為function。

簡單操作

從官方網(wǎng)站下載試用版本后,解壓相應(yīng)的文件到安裝目錄,例如在windows上推薦解壓到c盤。

然后打開命令窗口,切換到如下目錄,并執(zhí)行q。

變量: 與其他語言相似,變量也是用于存儲和表示數(shù)據(jù)的地方。在q中,變量的聲明和賦值在一個語句中完成。變量的賦值符,并不是=,而是:q變量必須以字母開頭,可包含字母,_和數(shù)字。?

命名規(guī)則推薦:

????????? 使用動詞表示操作符和方法,使用名詞表示數(shù)據(jù)?

????????? 使用較為簡潔的名字。Use contexts for namespacing.

q的專業(yè)編寫人員總是會省略掉很多不必要的空格。但這并不一定是強制的要求,我們可以在提高可讀性的情況下,加入一些空格。比較推薦加空格的地方包括,逗號,分號和juxpositon后面。

注釋

在q里面,語言的注釋是通過/來完成的。另外注釋符和表達(dá)式之間需要一個空格來分割。

變量類型

q的變量其實并不帶類型信息。類型信息附屬在變量的那種之上。

語言解析順序

初次使用q的人,肯定會被他的解析順序所迷惑。例如下面這樣的表達(dá)式,對于其他語言的使用者來說肯定是前所未聞的:

q) 1+a:43

44

q將表達(dá)式從右向左解析。所以這個表達(dá)式可以理解為 將43賦值給a,再將a加上1,最后向console 打印結(jié)果。在q中,表達(dá)式是允許一個剛剛被賦值的變量參與運算的。


Atoms

All data is ultimately built from atoms, so we begin with atoms.An?atom?is an irreducible value with a specific data type.

the following table collects all important information for q data type and atoms:

type size char type num type notation null value
boolean 1 b 1 1b 0b
byte 1 x 4 0x26 0x00
short 2 h 5 42h 0Nh
int 4 i 6 42 0N
long 8 j 7 42j 0Nj
real 4 e 8 4.2e 0Ne
float 8 f 9 4.2 0n
char 1 c 10 "z" " "
symbol * s 11 ‘zaphod `
month 4 m 13 2006.07m 0Nm
date 4 d 14 2006.07.21 0Nd
datetime 4 z 15 2006.07.21T09:13:39 0Nz
minute 4 u 17 23:59 0Nu
second 4 v 18 23:59:59 0Nv
time 4 t 19 09:01:02:042 0Nt
enumeration

* `u$v
dictionary

99 `a`b`c!!10 20 30
table

98 ([] c1:ab`c; c2:10 20 30)


Integer data

int => 123

short=> 234h (h is compulsory)

long => -23423j (j is compulsory)

Type promotion is performed automatically in q primitive operations. However, if a specific integer type is required in a list and a narrower type is presented?. then an error will be prompt.


floating point data

float => pi:3.23423 or pi:1f

real => 1.23423e

we can user scientific notation for both float and real.

By default, the q console displays only seven decimal digits of accuracy for float and real . we can change this by \P 12

binary data

boolean => bit:0b

byte => by:0x2a

charactor:

char => ch:"q" or ch:"\n"

symbol => s1:`q

note that symbol is the smallest unit of the data, can't be reduced.


總結(jié)

以上是生活随笔為你收集整理的kdb q介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。