处理我希望能够在一次查询的几个把手,其中表有这样相同的格式: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 '。 –