Ngôn ngữ Q - Giao tiếp giữa các quá trình
KDB + cho phép một quá trình giao tiếp với một quá trình khác thông qua giao tiếp giữa các quá trình. Các quy trình Kdb + có thể kết nối với bất kỳ kdb + nào khác trên cùng một máy tính, cùng một mạng hoặc thậm chí từ xa. Chúng ta chỉ cần xác định cổng và sau đó các máy khách có thể nói chuyện với cổng đó. Bất kìq quy trình có thể giao tiếp với bất kỳ q xử lý miễn là nó có thể truy cập được trên mạng và đang lắng nghe các kết nối.
một quy trình máy chủ lắng nghe các kết nối và xử lý mọi yêu cầu
một quy trình khách khởi tạo kết nối và gửi các lệnh để được thực thi
Máy khách và máy chủ có thể trên cùng một máy hoặc trên các máy khác nhau. Một tiến trình có thể vừa là máy khách vừa là máy chủ.
Một giao tiếp có thể là,
Synchronous (đợi trả về kết quả)
Asynchronous (không chờ đợi và không có kết quả trả về)
Khởi tạo máy chủ
A q máy chủ được khởi tạo bằng cách chỉ định cổng để lắng nghe,
q –p 5001 / command line
\p 5001 / session command
Xử lý giao tiếp
Ô điều khiển giao tiếp là một ký hiệu bắt đầu bằng “:” và có dạng -
`:[server]:port-number
Thí dụ
`::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
Để bắt đầu kết nối, chúng ta sử dụng hàm “hopen” để trả về một chốt kết nối số nguyên. Xử lý này được sử dụng cho tất cả các yêu cầu khách hàng tiếp theo. Ví dụ -
q)h:hopen `::5001
q)h"til 5"
0 1 2 3 4
q)hclose h
Tin nhắn đồng bộ và không đồng bộ
Khi chúng ta có một xử lý, chúng ta có thể gửi một tin nhắn đồng bộ hoặc không đồng bộ.
Synchronous Message- Sau khi một tin nhắn được gửi đi, nó sẽ chờ và trả về kết quả. Định dạng của nó như sau:
handle “message”
Asynchronous Message- Sau khi gửi tin nhắn, bắt đầu xử lý câu lệnh tiếp theo ngay lập tức mà không cần đợi và trả kết quả. Định dạng của nó như sau:
neg[handle] “message”
Các tin nhắn yêu cầu phản hồi, ví dụ như lệnh gọi hàm hoặc câu lệnh chọn, thông thường sẽ sử dụng dạng đồng bộ; trong khi các thông báo không cần trả về đầu ra, ví dụ như chèn các bản cập nhật vào bảng, sẽ không đồng bộ.