Q 언어-프로세스 간 통신

KDB +는 한 프로세스가 프로세스 간 통신을 통해 다른 프로세스와 통신 할 수 있도록합니다. Kdb + 프로세스는 동일한 컴퓨터, 동일한 네트워크 또는 원격으로 다른 kdb +에 연결할 수 있습니다. 포트를 지정하면 클라이언트가 해당 포트와 통신 할 수 있습니다. 어떤q 프로세스는 다른 것과 통신 할 수 있습니다. q 프로세스가 네트워크에서 액세스 할 수 있고 연결을 수신하는 한 처리합니다.

  • 서버 프로세스는 연결을 수신하고 모든 요청을 처리합니다.

  • 클라이언트 프로세스가 연결을 시작하고 실행할 명령을 보냅니다.

클라이언트와 서버는 동일한 시스템 또는 다른 시스템에있을 수 있습니다. 프로세스는 클라이언트와 서버가 될 수 있습니다.

의사 소통은 다음과 같습니다.

  • Synchronous (결과가 반환 될 때까지 기다립니다)

  • Asynchronous (기다리지 않고 반환 된 결과 없음)

서버 초기화

q 수신 할 포트를 지정하여 서버를 초기화합니다.

q –p 5001 / command line
\p 5001   / session command

통신 핸들

통신 핸들은 ":"로 시작하는 기호이며 다음과 같은 형식을 갖습니다.

`:[server]:port-number

`::5001              / server and client on same machine
`:jack:5001          / server on machine jack
`:192.168.0.156      / server on specific IP address
`:www.myfx.com:5001  / server at www.myfx.com

연결을 시작하기 위해 정수 연결 핸들을 반환하는 "hopen"함수를 사용합니다. 이 핸들은 모든 후속 클라이언트 요청에 사용됩니다. 예를 들면-

q)h:hopen `::5001

q)h"til 5"
0 1 2 3 4

q)hclose h

동기 및 비동기 메시지

핸들이 있으면 동기식 또는 비동기식으로 메시지를 보낼 수 있습니다.

Synchronous Message− 메시지가 전송되면 대기하고 결과를 반환합니다. 형식은 다음과 같습니다.

handle “message”

Asynchronous Message− 메시지를 보낸 후 기다리거나 결과를 반환 할 필요없이 즉시 다음 문 처리를 시작합니다. 형식은 다음과 같습니다.

neg[handle] “message”

응답이 필요한 메시지 (예 : 함수 호출 또는 선택 문)는 일반적으로 동기 형식을 사용합니다. 출력을 반환 할 필요가없는 메시지 (예 : 테이블에 업데이트 삽입)는 비동기식입니다.