Tôi có một ứng dụng C truyền dữ liệu đến một bảng bộ nhớ kdb cả ngày, cuối cùng phát triển nhanh kích thước của RAM máy chủ của tôi. Mục đích cuối cùng là lưu trữ dữ liệu trên đĩa, vì vậy tôi đã quyết định chạy chức năng phân vùng bộ đếm thời gian để truyền dữ liệu dần dần. Tôi đã đưa ra mã này:Làm thế nào để phân vùng chính xác một bảng trong thời gian thực trong kdb?
part_timer : { []
(`$db) upsert .Q.en[`$sym_path] select [20000] ts,exch,ticker,side,price,qty,bid,ask from md;
delete from `md where i<20000
}
.z.ts: part_timer
.z.zd: 17 2 6i
\t 1000
Đây có phải là cách chính xác để phân đoạn dữ liệu trực tuyến trong thời gian thực không? Làm thế nào bạn sẽ viết mã này? Tôi lo ngại về câu lệnh xóa không được đồng bộ hóa với lựa chọn.
Cảm ơn các cuộc gọi .Q, tôi sẽ thêm chúng vào tập lệnh của mình. Tôi không thể chờ đợi vào cuối ngày để lưu trữ dữ liệu, tôi giải thích trong câu hỏi rằng bảng bộ nhớ sẽ phát triển nhanh hơn RAM được cài đặt của chúng tôi, vì vậy tôi đang tìm cách lưu trữ vào đĩa dần dần. –
Ah bỏ lỡ điều đó; trong trường hợp đó, nối thêm như trong w.q như ai đó đã nói –
Có thể sử dụng .Q.dpft [] để nối thêm các hàng? Nghe có vẻ khó khăn đối với kdb. Nếu không, làm thế nào tôi có thể tổ chức lại db một cách hiệu quả vào cuối ngày để lưu trữ các biểu tượng tuần tự? –