處理我希望能夠在一次查詢的幾個把手,其中表有這樣相同的格式:KDB/Q:查詢多個與霍
手柄:8000,8001,8003 表:FOO
想要做的事,如:
x:hopen `8000`8001`8003
x select from foo col1,col2
所以我從每個處理每個foo的錶行。
有沒有辦法做到這一點?
謝謝
處理我希望能夠在一次查詢的幾個把手,其中表有這樣相同的格式:KDB/Q:查詢多個與霍
手柄:8000,8001,8003 表:FOO
想要做的事,如:
x:hopen `8000`8001`8003
x select from foo col1,col2
所以我從每個處理每個foo的錶行。
有沒有辦法做到這一點?
謝謝
使用「每個」到霍各處理
q)h:hopen each 8000 8001 8002
q)h
476 480 484i
使用每個應用從左上到相同的查詢發送到每個服務器
q)r:[email protected]\:"select col1,col2 from foo"
q)r
+`col1`col2!(1 2;2 3)
+`col1`col2!(1 2;2 3)
+`col1`col2!(1 2;2 3)
那麼你就必須凌辱結果:
q)show res:raze r
col1 col2
---------
1 2
2 3
1 2
2 3
1 2
2 3
如果您不打算重用手柄,你可以做
q)raze`::8000`::8001`::[email protected]\:"select from foo col1,col2"
並且可以使用桃子,以便立即發送請求 –
我可能會重複使用它們,但是謝謝亞歷山大。 –
傑克能否請您詳細說明桃子的使用方法? –
像其他的答案,但使用一套(NEG 2H),而不是得到(H)
的cookbook/load-balancing幫助這更復雜也是例子。
q)h:hopen each 8000 8001 8002
q)h
476 480 484i
q)r:(0#0i)!() /dictionary of handles and results
設置回調來自服務器的響應
q).z.ps:{@[`r;.z.w;:;x]}
發送一個 「設置」 查詢到每個處理
q)(neg h)@\:({(neg .z.w)value"select col1,col2 from foo"};`)
等待,直到所有信息都具有響應
q)h .\:()
最後,把結果放在一起
q)raze r h
唯一的好處是併發性。
由於@AlexanderBelopolsky指出,不要忘記
q)hclose each h
感謝所有人,會給它一個鏡頭。 –
感謝會嘗試儘快 –
不客氣,讓我知道,如果你有任何問題.. – jomahony
不要忘了'H關閉各爲H '。 –