Język Q - komunikacja między procesami
KDB + umożliwia jednemu procesowi komunikację z innym procesem poprzez komunikację międzyprocesową. Procesy Kdb + mogą łączyć się z dowolnym innym kdb + na tym samym komputerze, w tej samej sieci, a nawet zdalnie. Musimy tylko określić port, a klienci będą mogli rozmawiać z tym portem. Każdyq proces może komunikować się z każdym innym q tak długo, jak jest dostępny w sieci i nasłuchuje połączeń.
proces serwera nasłuchuje połączeń i przetwarza wszelkie żądania
proces klienta inicjuje połączenie i wysyła polecenia do wykonania
Klient i serwer mogą znajdować się na tym samym komputerze lub na różnych komputerach. Proces może być zarówno klientem, jak i serwerem.
Komunikacja może być,
Synchronous (poczekaj na zwrot wyniku)
Asynchronous (bez czekania i brak wyników)
Zainicjuj serwer
ZA q serwer jest inicjowany poprzez określenie portu nasłuchiwania,
q –p 5001 / command line
\p 5001 / session command
Uchwyt komunikacyjny
Uchwyt komunikacyjny to symbol zaczynający się od „:” i mający postać -
`:[server]:port-number
Przykład
`::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
Aby rozpocząć połączenie, używamy funkcji „hopen”, która zwraca uchwyt połączenia będący liczbą całkowitą. Ten uchwyt jest używany do wszystkich kolejnych żądań klientów. Na przykład -
q)h:hopen `::5001
q)h"til 5"
0 1 2 3 4
q)hclose h
Wiadomości synchroniczne i asynchroniczne
Gdy już mamy uchwyt, możemy wysłać wiadomość synchronicznie lub asynchronicznie.
Synchronous Message- Po wysłaniu wiadomości czeka na i zwraca wynik. Jego format jest następujący -
handle “message”
Asynchronous Message- Po wysłaniu wiadomości natychmiast rozpocznij przetwarzanie następnej instrukcji bez konieczności czekania i zwracania wyniku. Jego format jest następujący -
neg[handle] “message”
Komunikaty wymagające odpowiedzi, na przykład wywołania funkcji lub instrukcje wyboru, będą normalnie używać formy synchronicznej; podczas gdy komunikaty, które nie muszą zwracać danych wyjściowych, na przykład wstawianie aktualizacji do tabeli, będą asynchroniczne.