เชฐเซ€เช…เชฒ-เชŸเชพเช‡เชฎ เชธเซ‡เชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Q เช…เชจเซ‡ KDB+ เชญเชพเชทเชพเชจเชพ เชฒเช•เซเชทเชฃเซ‹

เชคเชฎเซ‡ KDB+ เช†เชงเชพเชฐ, Q เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพ เชถเซเช‚ เช›เซ‡, เชคเซ‡เชฎเชจเซ€ เชถเช•เซเชคเชฟเช“ เช…เชจเซ‡ เชจเชฌเชณเชพเชˆเช“ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹. เชฒเซ‡เช– เช…เชจเซ‡ เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชชเชฐเชฟเชšเชฏเชฎเชพเช‚. เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ Q เชชเชฐ เชเช• เชธเซ‡เชตเชพเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ€เชถเซเช‚ เชœเซ‡ เช†เชตเชจเชพเชฐเชพ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเซ€เชฎ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชถเซ‡ เช…เชจเซ‡ "เชฐเซ€เช…เชฒ เชŸเชพเช‡เชฎ" เชฎเซ‹เชกเชฎเชพเช‚ เชฆเชฐ เชฎเชฟเชจเชฟเชŸเซ‡ เชตเชฟเชตเชฟเชง เชเช•เชคเซเชฐเซ€เช•เชฐเชฃ เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชถเซ‡ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชคเซ‡เชจเซ€ เชชเชพเชธเซ‡ เชกเซ‡เชŸเชพเชจเชพ เช†เช—เชฒเชพ เชญเชพเช— เชชเชนเซ‡เชฒเชพเช‚ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เชนเชถเซ‡). Q เชจเซ€ เชฎเซเช–เซเชฏ เชตเชฟเชถเซ‡เชทเชคเชพ เช เช›เซ‡ เช•เซ‡ เชคเซ‡ เชเช• เชตเซ‡เช•เซเชŸเชฐ เชญเชพเชทเชพ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชเช• เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชธเชพเชฅเซ‡ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชจเชพ เชเชฐเซ‡, เชเชฐเซ‡เชจเชพ เชเชฐเซ‡ เช…เชจเซ‡ เช…เชจเซเชฏ เชœเชŸเชฟเชฒ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เชธเชพเชฅเซ‡ เช‘เชชเชฐเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. Q เช…เชจเซ‡ เชคเซ‡เชจเชพ เชธเช‚เชฌเช‚เชงเซ€เช“ K, โ€‹โ€‹J, APL เชœเซ‡เชตเซ€ เชญเชพเชทเชพเช“ เชคเซ‡เชฎเชจเชพ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชคเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเช–เซเชฏเชพเชค เช›เซ‡. เช˜เชฃเซ€เชตเชพเชฐ, เชœเชพเชตเชพ เชœเซ‡เชตเซ€ เชชเชฐเชฟเชšเชฟเชค เชญเชพเชทเชพเชฎเชพเช‚ เช•เซ‹เชกเชจเซ€ เช˜เชฃเซ€ เชธเซเช•เซเชฐเซ€เชจเซ‹ เชฒเซ‡เชคเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชคเซ‡เชจเชพ เชชเชฐ เชฅเซ‹เชกเซ€ เชฒเซ€เชŸเซ€เช“เชฎเชพเช‚ เชฒเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เชคเซ‡ เช›เซ‡ เชœเซ‡ เชนเซเช‚ เช† เชฒเซ‡เช–เชฎเชพเช‚ เชฆเชฐเซเชถเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚.

เชฐเซ€เช…เชฒ-เชŸเชพเช‡เชฎ เชธเซ‡เชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Q เช…เชจเซ‡ KDB+ เชญเชพเชทเชพเชจเชพ เชฒเช•เซเชทเชฃเซ‹

เชชเชฐเชฟเชšเชฏ

KDB+ เช เชธเซเชคเช‚เชญเชพเช•เชพเชฐ เชกเซ‡เชŸเชพเชฌเซ‡เช เช›เซ‡ เชœเซ‡ เช–เซ‚เชฌ เชฎเซ‹เชŸเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชšเซ‹เช•เซเช•เชธ เชฐเซ€เชคเซ‡ (เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชธเชฎเชฏ เชฆเซเชตเชพเชฐเชพ) เช“เชฐเซเชกเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชจเชพเชฃเชพเช•เซ€เชฏ เชธเช‚เชธเซเชฅเชพเช“ - เชฌเซ‡เช‚เช•เซ‹, เชฐเซ‹เช•เชพเชฃ เชญเช‚เชกเซ‹เชณ, เชตเซ€เชฎเชพ เช•เช‚เชชเชจเซ€เช“เชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡. Q เชญเชพเชทเชพ เช KDB+ เชจเซ€ เช†เช‚เชคเชฐเชฟเช• เชญเชพเชทเชพ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เช† เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช…เชธเชฐเช•เชพเชฐเช• เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช•เซเชฏเซ เชตเชฟเชšเชพเชฐเชงเชพเชฐเชพ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชคเชพ เช…เชจเซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชธเซเชชเชทเซเชŸเชคเชพเชจเซเช‚ เชฌเชฒเชฟเชฆเชพเชจ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชนเช•เซ€เช•เชค เชฆเซเชตเชพเชฐเชพ เชตเชพเชœเชฌเซ€ เช›เซ‡ เช•เซ‡ เชตเซ‡เช•เซเชŸเชฐ เชญเชพเชทเชพเชจเซ‡ เช•เซ‹เชˆ เชชเชฃ เชธเช‚เชœเซ‹เช—เซ‹เชฎเชพเช‚ เชธเชฎเชœเชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เชนเชถเซ‡, เช…เชจเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช—เชจเซ€ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชคเชพ เช…เชจเซ‡ เชธเชฎเซƒเชฆเซเชงเชฟ เชคเชฎเชจเซ‡ เชเช• เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ‹ เช˜เชฃเซ‹ เชฎเซ‹เชŸเซ‹ เชญเชพเช— เชœเซ‹เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡, เชœเซ‡ เช†เช–เชฐเซ‡ เชคเซ‡เชจเซ‡ เชธเชฎเชœเชตเชพเชฎเชพเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡.

เช† เชฒเซ‡เช–เชฎเชพเช‚ เช…เชฎเซ‡ Q เชฎเชพเช‚ เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซเชฏเซ‹ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช…เชœเชฎเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• Qเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡. เชคเชฎเซ‡ kx เช•เช‚เชชเชจเซ€เชจเซ€ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐ เชฎเชซเชค 32-เชฌเซ€เชŸ เชธเช‚เชธเซเช•เชฐเชฃ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ โ€“ www.kx.com. เชคเซเชฏเชพเช‚, เชœเซ‹ เชคเชฎเชจเซ‡ เชฐเชธ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเชจเซ‡ Q, เชชเซเชธเซเชคเช• เชชเชฐ เชธเช‚เชฆเชฐเซเชญ เชฎเชพเชนเชฟเชคเซ€ เชฎเชณเชถเซ‡ เชชเซเชฐเชพเชฃเช˜เชพเชคเช• เชฒเซ‹เช•เซ‹ เชฎเชพเชŸเซ‡ เช…เชจเซ‡ เช† เชตเชฟเชทเชฏ เชชเชฐ เชตเชฟเชตเชฟเชง เชฒเซ‡เช–เซ‹.

เชธเชฎเชธเซเชฏเชพเชจเซ€ เชฐเชšเชจเชพ

เชคเซเชฏเชพเช‚ เชเช• เชธเซเชฐเซ‹เชค เช›เซ‡ เชœเซ‡ เชฆเชฐ 25 เชฎเชฟเชฒเซ€เชธเซ‡เช•เชจเซเชกเซ‡ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช•เซ‹เชทเซเชŸเช• เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡. KDB+ เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชซเชพเช‡เชจเชพเชจเซเชธเชฎเชพเช‚ เชฅเชคเซ‹ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเซ‡ เชงเชพเชฐเซ€เชถเซเช‚ เช•เซ‡ เช† เชตเซเชฏเชตเชนเชพเชฐเซ‹ (เชตเซ‡เชชเชพเชฐ) เชจเซเช‚ เช•เซ‹เชทเซเชŸเช• เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเชพ เช•เซ‰เชฒเชฎ เช›เซ‡: เชธเชฎเชฏ (เชฎเชฟเชฒเชฟเชธเซ‡เช•เชจเซเชกเชฎเชพเช‚ เชธเชฎเชฏ), เชธเชฟเชฎ (เชธเซเชŸเซ‰เช• เชเช•เซเชธเชšเซ‡เชจเซเชœ เชชเชฐ เช•เช‚เชชเชจเซ€เชจเซ‹ เชนเซ‹เชฆเซเชฆเซ‹ - IBM, AAPL,โ€ฆ), เช•เชฟเช‚เชฎเชค (เชœเซ‡ เชญเชพเชตเซ‡ เชถเซ‡เชฐ เช–เชฐเซ€เชฆเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ), เช•เชฆ (เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชจเซเช‚ เช•เชฆ). 25 เชฎเชฟเชฒเซ€เชธเซ‡เช•เชจเซเชกเชจเซ‹ เช…เช‚เชคเชฐเชพเชฒ เชฎเชจเชธเซเชตเซ€ เช›เซ‡, เชฌเชนเซ เชจเชพเชจเซ‹ เชจเชฅเซ€ เช…เชจเซ‡ เชฌเชนเซ เชฒเชพเช‚เชฌเซ‹ เชชเชฃ เชจเชฅเซ€. เชคเซ‡เชจเซ€ เชนเชพเชœเชฐเซ€เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชกเซ‡เชŸเชพ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชฌเชซเชฐ เช•เชฐเซ‡เชฒเซ€ เชธเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชตเชฐเซเชคเชฎเชพเชจ เชฒเซ‹เชกเชจเชพ เช†เชงเชพเชฐเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชฌเชซเชฐเชฟเช‚เช— เชธเชนเชฟเชค, เชธเซ‡เชตเชพ เชฌเชพเชœเซ เชชเชฐ เชฌเชซเชฐเชฟเช‚เช— เชฒเชพเช—เซ เช•เชฐเชตเซเช‚ เชธเชฐเชณ เชนเชถเซ‡, เชชเชฐเช‚เชคเซ เชธเชฐเชณเชคเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชจเชฟเชถเซเชšเชฟเชค เช…เช‚เชคเชฐเชพเชฒ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ€เชถเซเช‚.

เชธเซ‡เชตเชพเช เชธเชฟเชฎ เช•เซ‰เชฒเชฎเชฎเชพเช‚เชฅเซ€ เชฆเชฐเซ‡เช• เช‡เชจเช•เชฎเชฟเช‚เช— เชธเชฟเชฎเซเชฌเซ‹เชฒ เชฎเชพเชŸเซ‡ เชฆเชฐ เชฎเชฟเชจเชฟเชŸเซ‡ เชเช•เช‚เชฆเชฐ เชซเช‚เช•เซเชถเชจเชจเชพ เชธเชฎเซ‚เชนเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเซ€ เชœเซ‹เชˆเช - เชฎเชนเชคเซเชคเชฎ เช•เชฟเช‚เชฎเชค, เชธเชฐเซ‡เชฐเชพเชถ เช•เชฟเช‚เชฎเชค, เชธเชฐเชตเชพเชณเซ‹ เช•เชฆ, เชตเช—เซ‡เชฐเซ‡. เช‰เชชเชฏเซ‹เช—เซ€ เชฎเชพเชนเชฟเชคเซ€. เชธเชฐเชณเชคเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชงเชพเชฐเซ€เชถเซเช‚ เช•เซ‡ เชคเชฎเชพเชฎ เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เช—เชฃเชคเชฐเซ€ เชตเชงเชคเซ€-เช“เช›เซ€ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. เชจเชตเซเช‚ เชฎเซ‚เชฒเซเชฏ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡, เชฌเซ‡ เชจเช‚เชฌเชฐเซ‹ เชœเชพเชฃเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡ - เชœเซ‚เชจเชพ เช…เชจเซ‡ เช†เชตเชจเชพเชฐเชพ เชฎเซ‚เชฒเซเชฏเซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฎเชนเชคเซเชคเชฎ, เชธเชฐเซ‡เชฐเชพเชถ, เชธเชฐเชตเชพเชณเชพ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เช† เช—เซเชฃเชงเชฐเซเชฎ เชนเซ‹เชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเชงเซเชฏ เชซเช‚เช•เซเชถเชจ เชเชตเซเช‚ เชจเชฅเซ€.

เช…เชฎเซ‡ เช เชชเชฃ เชงเชพเชฐเซ€เชถเซเช‚ เช•เซ‡ เช†เชตเชจเชพเชฐเชพ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเซ€เชฎเชจเซ‹ เชธเชฎเชฏ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. เช†เชจเชพเชฅเซ€ เช…เชฎเชจเซ‡ เช›เซ‡เชฒเซเชฒเซ€ เช˜เชกเซ€เช เชœ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชคเช• เชฎเชณเชถเซ‡. เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚, เช•เซ‡เชŸเชฒเชพเช• เช…เชชเชกเซ‡เชŸ เชฎเซ‹เชกเซเช‚ เชฅเชพเชฏ เชคเซ‹ เชตเชฐเซเชคเชฎเชพเชจ เช…เชจเซ‡ เชชเชพเช›เชฒเซ€ เชฎเชฟเชจเชฟเชŸเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชฅเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡. เชธเชฐเชณเชคเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช† เช•เซ‡เชธเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชถเซเช‚ เชจเชนเซ€เช‚.

เชเช•เชคเซเชฐเซ€เช•เชฐเชฃ เช•เชพเชฐเซเชฏเซ‹

เชœเชฐเซ‚เชฐเซ€ เชเช•เชคเซเชฐเซ€เช•เชฐเชฃ เช•เชพเชฐเซเชฏเซ‹ เชจเซ€เชšเซ‡ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เช›เซ‡. เชธเซ‡เชตเชพ เชชเชฐเชจเซ‹ เชญเชพเชฐ เชตเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เช‚ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเชพ เชฒเซ€เชงเชพ:

  • เช‰เชšเซเชš - เชฎเชนเชคเซเชคเชฎ เช•เชฟเช‚เชฎเชค - เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เชฎเชนเชคเซเชคเชฎ เช•เชฟเช‚เชฎเชค.
  • เชจเซ€เชšเซ€ - เชจเซเชฏเซ‚เชจเชคเชฎ เช•เชฟเช‚เชฎเชค - เชจเซเชฏเซ‚เชจเชคเชฎ เช•เชฟเช‚เชฎเชค เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ.
  • เชชเซเชฐเชฅเชฎ เช•เชฟเช‚เชฎเชค - เชชเซเชฐเชฅเชฎ เช•เชฟเช‚เชฎเชค - เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เชชเซเชฐเชฅเชฎ เช•เชฟเช‚เชฎเชค.
  • เช›เซ‡เชฒเซเชฒเซ€ เช•เชฟเช‚เชฎเชค - เช›เซ‡เชฒเซเชฒเซ€ เช•เชฟเช‚เชฎเชค - เช›เซ‡เชฒเซเชฒเซ€ เช•เชฟเช‚เชฎเชค เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ.
  • เชซเชฐเซเชธเซเชŸเชธเชพเช‡เช - เชชเซเชฐเชฅเชฎ เช•เชฆ - เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เชชเซเชฐเชฅเชฎ เชตเซ‡เชชเชพเชฐ เช•เชฆ.
  • เชฒเชพเชธเซเชŸ เชธเชพเช‡เช - เช›เซ‡เชฒเซเชฒเซเช‚ เช•เชฆ - เชเช• เชฎเชฟเชจเชฟเชŸเชฎเชพเช‚ เช›เซ‡เชฒเซเชฒเซเช‚ เชตเซ‡เชชเชพเชฐ เช•เชฆ.
  • numTrades โ€“ เช•เชพเช‰เชจเซเชŸ i โ€“ เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เชธเซ‹เชฆเชพเชจเซ€ เชธเช‚เช–เซเชฏเชพ.
  • เชตเซ‹เชฒเซเชฏเซเชฎ - เชธเชฐเชตเชพเชณเซ‹ เช•เชฆ - เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เชตเซ‡เชชเชพเชฐ เช•เชฆเชจเซ‹ เชธเชฐเชตเชพเชณเซ‹.
  • pvolume โ€“ เชธเชฐเชตเชพเชณเซ‹ เช•เชฟเช‚เชฎเชค โ€“ เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เช•เชฟเช‚เชฎเชคเซ‹เชจเซ‹ เชธเชฐเชตเชพเชณเซ‹, เชธเชฐเซ‡เชฐเชพเชถ เช•เชฟเช‚เชฎเชค เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.
  • - เชธเชฐเชตเชพเชณเซ‹ เชŸเชฐเซเชจเช“เชตเชฐ เช•เชฟเช‚เชฎเชค*เช•เชฆ - เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เชตเซเชฏเชตเชนเชพเชฐเซ‹เชจเซเช‚ เช•เซเชฒ เชตเซ‹เชฒเซเชฏเซเชฎ.
  • avgPrice โ€“ pvolume%numTrades โ€“ เชธเชฐเซ‡เชฐเชพเชถ เช•เชฟเช‚เชฎเชค เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ.
  • avgSize โ€“ เชตเซ‹เชฒเซเชฏเซเชฎ%numTrades โ€“ เชธเชฐเซ‡เชฐเชพเชถ เชตเซ‡เชชเชพเชฐ เช•เชฆ เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ.
  • vwap - เชŸเชฐเซเชจเช“เชตเชฐ% เชตเซ‹เชฒเซเชฏเซเชฎ - เชตเซเชฏเชตเชนเชพเชฐเชจเชพ เช•เชฆ เชฆเซเชตเชพเชฐเชพ เชตเซ‡เช‡เชŸเซ‡เชก เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เชธเชฐเซ‡เชฐเชพเชถ เช•เชฟเช‚เชฎเชค.
  • เช•เชฎเชตเซ‹เชฒเซเชฏเซเชฎ - เชธเชฐเชตเชพเชณเซ‹ เชตเซ‹เชฒเซเชฏเซเชฎ - เชธเชฎเช—เซเชฐ เชธเชฎเชฏ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชตเซเชฏเชตเชนเชพเชฐเซ‹เชจเซเช‚ เชธเช‚เชšเชฟเชค เช•เชฆ.

เชšเชพเชฒเซ‹ เชคเชฐเชค เชœ เชเช• เชฌเชฟเชจ-เชธเซเชชเชทเซเชŸ เชฎเซเชฆเซเชฆเชพเชจเซ€ เชšเชฐเซเชšเชพ เช•เชฐเซ€เช - เช† เช•เซ‰เชฒเชฎเซเชธเชจเซ‡ เชชเซเชฐเชฅเชฎ เชตเช–เชค เช…เชจเซ‡ เชฆเชฐเซ‡เช• เช…เชจเซเช—เชพเชฎเซ€ เชฎเชฟเชจเชฟเชŸ เชฎเชพเชŸเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเซ€. เชซเชฐเซเชธเซเชŸเชชเซเชฐเชพเชˆเชธ เชชเซเชฐเช•เชพเชฐเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เช•เซ‰เชฒเชฎ เชฆเชฐเซ‡เช• เชตเช–เชคเซ‡ เชถเซ‚เชจเซเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชฐเช‚เชญเชฟเชค เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช; เชคเซ‡เชฎเชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช›เซ‡. เช…เชจเซเชฏ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฐเช•เชพเชฐเซ‹ เชนเช‚เชฎเซ‡เชถเชพ 0 เชชเชฐ เชธเซ‡เชŸ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช. เชคเซเชฏเชพเช‚ เชเชตเชพ เช•เซ‰เชฒเชฎเซเชธ เชชเชฃ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเซ‡ เชธเช‚เชฏเซเช•เซเชค เช…เชญเชฟเช—เชฎเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เช›เซ‡ - เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, cumVolume เชจเซ€ เช…เช—เชพเช‰เชจเซ€ เชฎเชฟเชจเชฟเชŸเชฅเซ€ เชจเช•เชฒ เช•เชฐเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡, เช…เชจเซ‡ เชชเซเชฐเชฅเชฎ เชเช• เชฎเชพเชŸเซ‡ 0 เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ‹. เชšเชพเชฒเซ‹ เชถเชฌเซเชฆเช•เซ‹เชถ เชกเซ‡เชŸเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชฌเชงเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€เช. เชชเซเชฐเช•เชพเชฐ (เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเซ‡ เช…เชจเซเชฐเซ‚เชช):

// list ! list โ€“ ัะพะทะดะฐั‚ัŒ ัะปะพะฒะฐั€ัŒ, 0n โ€“ float null, 0N โ€“ long null, `sym โ€“ ั‚ะธะฟ ัะธะผะฒะพะป, `sym1`sym2 โ€“ ัะฟะธัะพะบ ัะธะผะฒะพะปะพะฒ
initWith:`sym`time`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover`avgPrice`avgSize`vwap`cumVolume!(`;00:00;0n;0n;0n;0n;0N;0N;0;0;0.0;0.0;0n;0n;0n;0);
aggCols:reverse key[initWith] except `sym`time; // ัะฟะธัะพะบ ะฒัะตั… ะฒั‹ั‡ะธัะปัะตะผั‹ั… ะบะพะปะพะฝะพะบ, reverse ะพะฑัŠััะฝะตะฝ ะฝะธะถะต

เชฎเซ‡เช‚ เชธเช—เชตเชกเชคเชพ เชฎเชพเชŸเซ‡ เชถเชฌเซเชฆเช•เซ‹เชถเชฎเชพเช‚ เชธเชฟเชฎ เช…เชจเซ‡ เชŸเชพเชˆเชฎ เช‰เชฎเซ‡เชฐเซเชฏเชพ เช›เซ‡, เชนเชตเซ‡ initWith เช เช…เช‚เชคเชฟเชฎ เชเช•เซ€เช•เซƒเชค เชŸเซ‡เชฌเชฒเชฎเชพเช‚เชฅเซ€ เชคเซˆเชฏเชพเชฐ เชฒเซ€เชŸเซ€ เช›เซ‡, เชœเซเชฏเชพเช‚ เชคเซ‡ เชฏเซ‹เช—เซเชฏ เชธเชฟเชฎ เช…เชจเซ‡ เชธเชฎเชฏ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เชฌเชพเช•เซ€ เช›เซ‡. เชคเชฎเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชŸเซ‡เชฌเชฒเชฎเชพเช‚ เชจเชตเซ€ เชชเช‚เช•เซเชคเชฟเช“ เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชเช•เชคเซเชฐเซ€เช•เชฐเชฃ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เช†เชชเชฃเชจเซ‡ aggCols เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡. Q เชฎเชพเช‚ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“เชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ (เชœเชฎเชฃเซ‡เชฅเซ€ เชกเชพเชฌเซ‡) เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เช•เซเชฐเชฎเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชธเซ‚เชšเชฟ เชŠเช‚เชงเซ€ เชนเซ‹เชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชงเซเชฏเซ‡เชฏ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡ เช•เซ‡ เช—เชฃเชคเชฐเซ€ เช‰เชšเซเชšเชฅเซ€ เช•เชฎ เชตเซ‹เชฒเซเชฏเซเชฎ เชธเซเชงเซ€ เชœเชพเชฏ, เช•เชพเชฐเชฃ เช•เซ‡ เช•เซ‡เชŸเชฒเซ€เช• เช•เซ‰เชฒเชฎ เชชเชพเช›เชฒเซ€ เช•เซ‰เชฒเชฎ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡.

เช•เซ‰เชฒเชฎ เช•เซ‡ เชœเซ‡เชจเซ‡ เชชเชพเช›เชฒเชพ เชเช•เชฎเชพเช‚เชฅเซ€ เชจเชตเซ€ เชฎเชฟเชจเชฟเชŸเชฎเชพเช‚ เช•เซ‰เชชเชฟ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชธเซเชตเชฟเชงเชพ เชฎเชพเชŸเซ‡ เชธเชฟเชฎ เช•เซ‰เชฒเชฎ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

rollColumns:`sym`cumVolume;

เชšเชพเชฒเซ‹ เชนเชตเซ‡ เช•เซ‰เชฒเชฎเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพ เชœเซ‹เชˆเช เชคเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เชœเซ‚เชฅเซ‹เชฎเชพเช‚ เชตเชฟเชญเชพเชœเซ€เชค เช•เชฐเซ€เช. เชคเซเชฐเชฃ เชชเซเชฐเช•เชพเชฐเซ‹ เช“เชณเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡:

  1. เชธเช‚เชšเชฏเช•เชฐเซเชคเชพเช“ (เชตเซ‹เชฒเซเชฏเซเชฎ, เชŸเชฐเซเชจเช“เชตเชฐ,..) - เช†เชชเชฃเซ‡ เช†เช—เชฒเชพ เชฎเซ‚เชฒเซเชฏเชฎเชพเช‚ เช‡เชจเช•เชฎเชฟเช‚เช— เชฎเซ‚เชฒเซเชฏ เช‰เชฎเซ‡เชฐเชตเซเช‚ เชœเซ‹เชˆเช.
  2. เชตเชฟเชถเชฟเชทเซเชŸ เชฌเชฟเช‚เชฆเซ เชธเชพเชฅเซ‡ (เช‰เชšเซเชš, เชจเซ€เชšเซเช‚, ..) - เชฎเชฟเชจเชฟเชŸเชฎเชพเช‚ เชชเซเชฐเชฅเชฎ เชฎเซ‚เชฒเซเชฏ เช‡เชจเช•เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพเชฎเชพเช‚เชฅเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชฌเชพเช•เซ€เชจเซ€ เช—เชฃเชคเชฐเซ€ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  3. เช†เชฐเชพเชฎ เช•เชฐเซ‹. เชนเช‚เชฎเซ‡เชถเชพ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เช† เชตเชฐเซเช—เซ‹ เชฎเชพเชŸเซ‡ เชšเชฒเซ‹เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เช:

accumulatorCols:`numTrades`volume`pvolume`turnover;
specialCols:`high`low`firstPrice`firstSize;

เช—เชฃเชคเชฐเซ€ เช•เซเชฐเชฎ

เช…เชฎเซ‡ เชเช•เซ€เช•เซƒเชค เช•เซ‹เชทเซเชŸเช•เชจเซ‡ เชฌเซ‡ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เชถเซเช‚. เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชชเซเชฐเชฅเชฎ เช‡เชจเช•เชฎเชฟเช‚เช— เช•เซ‹เชทเซเชŸเช•เชจเซ‡ เชธเช‚เช•เซ‹เชšเชพเชˆเช เช›เซ€เช เชœเซ‡เชฅเซ€ เชฆเชฐเซ‡เช• เช…เช•เซเชทเชฐ เช…เชจเซ‡ เชฎเชฟเชจเชฟเชŸ เชฎเชพเชŸเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชชเช‚เช•เซเชคเชฟ เชนเซ‹เชฏ. เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เช…เชฎเชพเชฐเชพ เชคเชฎเชพเชฎ เช•เชพเชฐเซเชฏเซ‹ เชตเซƒเชฆเซเชงเชฟเชถเซ€เชฒ เช…เชจเซ‡ เชธเชนเชฏเซ‹เช—เซ€ เช›เซ‡ เชคเซ‡ เช–เชพเชคเชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เช† เชตเชงเชพเชฐเชพเชจเชพ เชชเช—เชฒเชพเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชฌเชฆเชฒเชพเชถเซ‡ เชจเชนเซ€เช‚. เชคเชฎเซ‡ เชธเชฟเชฒเซ‡เช•เซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชŸเซ‡เชฌเชฒเชจเซ‡ เชธเช‚เช•เซ‹เชšเชพเชˆ เชถเช•เซ‹ เช›เซ‹:

select high:max price, low:min price โ€ฆ by sym,time.minute from table

เช† เชชเชฆเซเชงเชคเชฟเชฎเชพเช‚ เช—เซ‡เชฐเชฒเชพเชญ เช›เซ‡ - เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡เชฒ เช•เซ‰เชฒเชฎเชจเซ‹ เชธเชฎเซ‚เชน เชชเซ‚เชฐเซเชตเชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช›เซ‡. เชธเชฆเชจเชธเซ€เชฌเซ‡, Q เชฎเชพเช‚, เชธเชฟเชฒเซ‡เช•เซเชŸเชจเซ‡ เชซเช‚เช•เซเชถเชจ เชคเชฐเซ€เช•เซ‡ เชชเชฃ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เชคเชฎเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซ‡เชฒ เชฆเชฒเซ€เชฒเซ‹เชจเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เซ‹ เช›เซ‹:

?[table;whereClause;byClause;selectClause]

เชนเซเช‚ เชฆเชฒเซ€เชฒเซ‹เชจเชพ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซเช‚ เชตเชฟเช—เชคเชตเชพเชฐ เชตเชฐเซเชฃเชจ เช•เชฐเซ€เชถ เชจเชนเซ€เช‚; เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชซเช•เซเชค เชฆเซเชตเชพเชฐเชพ เช…เชจเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒเชพ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เชฌเชฟเชจ-เชคเซเชšเซเช› เชนเชถเซ‡ เช…เชจเซ‡ เชคเซ‡ เชซเซ‹เชฐเซเชฎ เช•เซ‰เชฒเชฎ!เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเชพ เชถเชฌเซเชฆเช•เซ‹เชถเซ‹ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช. เช†เชฎ, เชธเช‚เช•เซ‹เชšเชจ เช•เชพเชฐเซเชฏเชจเซ‡ เชจเซ€เชšเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

selExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover!parse each ("max price";"min price";"first price";"last price";"first size";"last size";"count i";"sum size";"sum price";"sum price*size"); // each ัั‚ะพ ั„ัƒะฝะบั†ะธั map ะฒ Q ะดะปั ะพะดะฝะพะณะพ ัะฟะธัะบะฐ
preprocess:?[;();`sym`time!`sym`time.minute;selExpression];

เชธเซเชชเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ เชชเชพเชฐเซเชธ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹, เชœเซ‡ Q เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เชธเชพเชฅเซ‡เชจเซ€ เชธเซเชŸเซเชฐเชฟเช‚เช—เชจเซ‡ เชฎเซ‚เชฒเซเชฏเชฎเชพเช‚ เชซเซ‡เชฐเชตเซ‡ เช›เซ‡ เชœเซ‡ eval เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เชชเชพเชธ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชœเซ‡ เชซเช‚เช•เซเชถเชจ เชธเชฟเชฒเซ‡เช•เซเชŸเชฎเชพเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เช เชชเชฃ เชจเซ‹เช‚เชง เชฒเซ‹ เช•เซ‡ เชชเซเชฐเซ€เชชเซเชฐเซ‹เชธเซ‡เชธ เชชเชธเช‚เชฆ เชซเช‚เช•เซเชถเชจเชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชถเชจ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เช†เช‚เชถเชฟเช• เชฐเซ€เชคเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชฆเชฒเซ€เชฒเซ‹ เชธเชพเชฅเซ‡เชจเซเช‚ เช•เชพเชฐเซเชฏ) เชคเชฐเซ€เช•เซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡, เชเช• เชฆเชฒเซ€เชฒ (เช•เซ‹เชทเซเชŸเช•) เช–เซ‚เชŸเซ‡ เช›เซ‡. เชœเซ‹ เช†เชชเชฃเซ‡ เชŸเซ‡เชฌเชฒ เชชเชฐ เชชเซเชฐเซ€เชชเซเชฐเซ‹เชธเซ‡เชธ เชฒเชพเช—เซ เช•เชฐเซ€เช, เชคเซ‹ เช†เชชเชฃเชจเซ‡ เชธเช‚เช•เซเชšเชฟเชค เชŸเซ‡เชฌเชฒ เชฎเชณเชถเซ‡.

เชฌเซ€เชœเซ‹ เชคเชฌเช•เซเช•เซ‹ เช เชเช•เซ€เช•เซƒเชค เช•เซ‹เชทเซเชŸเช•เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡. เชšเชพเชฒเซ‹ เชชเชนเซ‡เชฒเชพ เชธเซเชฏเซเชกเซ‹เช•เซ‹เชกเชฎเชพเช‚ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎ เชฒเช–เซ€เช:

for each sym in inputTable
  idx: row index in agg table for sym+currentTime;
  aggTable[idx;`high]: aggTable[idx;`high] | inputTable[sym;`high];
  aggTable[idx;`volume]: aggTable[idx;`volume] + inputTable[sym;`volume];
  โ€ฆ

Q เชฎเชพเช‚, เชฒเซ‚เชชเซเชธเชจเซ‡ เชฌเชฆเชฒเซ‡ เชจเช•เชถเชพ/เช˜เชŸเชพเชกเซ‹ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชธเชพเชฎเชพเชจเซเชฏ เช›เซ‡. เชชเชฐเช‚เชคเซ เช•เซเชฏเซ‚ เช เชตเซ‡เช•เซเชŸเชฐ เชฒเซ‡เช‚เช—เซเชตเซ‡เชœ เช›เซ‡ เช…เชจเซ‡ เช†เชชเชฃเซ‡ เชฌเชงเชพ เชธเชฟเชฎเซเชฌเซ‹เชฒ เชชเชฐ เชเช• เชœ เชธเชฎเชฏเซ‡ เชคเชฎเชพเชฎ เช‘เชชเชฐเซ‡เชถเชจเซเชธ เชธเชฐเชณเชคเชพเชฅเซ€ เชฒเชพเช—เซ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช, เชชเช›เซ€ เชชเซเชฐเชฅเชฎ เช…เช‚เชฆเชพเชœเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชฒเซ‚เชช เชตเชฟเชจเชพ เชฌเชฟเชฒเช•เซเชฒ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช, เชเช• เชœ เชธเชฎเชฏเซ‡ เชคเชฎเชพเชฎ เชชเซเชฐเชคเซ€เช•เซ‹ เชชเชฐ เช‘เชชเชฐเซ‡เชถเชจ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช:

idx:calcIdx inputTable;
row:aggTable idx;
aggTable[idx;`high]: row[`high] | inputTable`high;
aggTable[idx;`volume]: row[`volume] + inputTable`volume;
โ€ฆ

เชชเชฐเช‚เชคเซ เช†เชชเชฃเซ‡ เช†เช—เชณ เชœเชˆ เชถเช•เซ€เช เช›เซ€เช, Q เชชเชพเชธเซ‡ เชเช• เช…เชจเชจเซเชฏ เช…เชจเซ‡ เช…เชคเซเชฏเช‚เชค เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เช“เชชเชฐเซ‡เชŸเชฐ เช›เซ‡ - เชธเชพเชฎเชพเชจเซเชฏ เช…เชธเชพเช‡เชจเชฎเซ‡เชจเซเชŸ เช“เชชเชฐเซ‡เชŸเชฐ. เชคเซ‡ เชคเชฎเชจเซ‡ เชธเซ‚เชšเช•เชพเช‚เช•เซ‹, เช•เชพเชฐเซเชฏเซ‹ เช…เชจเซ‡ เชฆเชฒเซ€เชฒเซ‹เชจเซ€ เชธเซ‚เชšเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชœเชŸเชฟเชฒ เชกเซ‡เชŸเชพ เชฎเชพเชณเช–เชพเชฎเชพเช‚ เชฎเซ‚เชฒเซเชฏเซ‹เชจเชพ เชธเชฎเซ‚เชนเชจเซ‡ เชฌเชฆเชฒเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡:

idx:calcIdx inputTable;
rows:aggTable idx;
// .[target;(idx0;idx1;..);function;argument] ~ target[idx 0;idx 1;โ€ฆ]: function[target[idx 0;idx 1;โ€ฆ];argument], ะฒ ะฝะฐัˆะตะผ ัะปัƒั‡ะฐะต ั„ัƒะฝะบั†ะธั โ€“ ัั‚ะพ ะฟั€ะธัะฒะฐะธะฒะฐะฝะธะต
.[aggTable;(idx;aggCols);:;flip (row[`high] | inputTable`high;row[`volume] + inputTable`volume;โ€ฆ)];

เช•เชฎเชจเชธเซ€เชฌเซ‡, เชŸเซ‡เชฌเชฒเชจเซ‡ เชธเซ‹เช‚เชชเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชชเช‚เช•เซเชคเชฟเช“เชจเซ€ เชธเซ‚เชšเชฟเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช•เซ‰เชฒเชฎเซเชธเชจเซ€ เชจเชนเซ€เช‚, เช…เชจเซ‡ เชคเชฎเชพเชฐเซ‡ เชซเซเชฒเชฟเชช เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ (เช•เซ‰เชฒเชฎเชจเซ€ เชธเซ‚เชšเชฟเชฅเซ€ เชชเช‚เช•เซเชคเชฟเช“เชจเซ€ เชธเซ‚เชšเชฟ) เชŸเซเชฐเชพเชจเซเชธเชชเซ‹เช เช•เชฐเชตเซ€ เชชเชกเชถเซ‡. เชฎเซ‹เชŸเชพ เชŸเซ‡เชฌเชฒ เชฎเชพเชŸเซ‡ เช† เช–เชฐเซเชšเชพเชณ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡ เช…เชฎเซ‡ เชจเช•เชถเชพ เชซเช‚เช•เซเชถเชจ (เชœเซ‡ เชเชชเซ‹เชธเซเชŸเซเชฐเซ‹เชซเซ€ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชฆเชฐเซ‡เช• เช•เซ‰เชฒเชฎ เชชเชฐ เช…เชฒเช—เชฅเซ€ เชเช• เชธเชพเชฎเชพเชจเซเชฏ เชธเซ‹เช‚เชชเชฃเซ€ เชฒเชพเช—เซ เช•เชฐเซ€เช เช›เซ€เช:

.[aggTable;;:;]'[(idx;)each aggCols; (row[`high] | inputTable`high;row[`volume] + inputTable`volume;โ€ฆ)];

เช…เชฎเซ‡ เชซเชฐเซ€เชฅเซ€ เชซเช‚เช•เซเชถเชจ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช. เช เชชเชฃ เชจเซ‹เช‚เชง เชฒเซ‹ เช•เซ‡ Q เชฎเชพเช‚, เชธเซ‚เชšเชฟ เชฌเชจเชพเชตเชตเซ€ เช เชชเชฃ เชเช• เช•เชพเชฐเซเชฏ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเซ‡ เชธเซ‚เชšเชฟเชจเซ€ เชธเซ‚เชšเชฟ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฐเซ‡เช•(เชจเช•เชถเชพ) เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช.

เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡เชฒ เช•เซ‰เชฒเชฎเชจเซ‹ เชธเชฎเซ‚เชน เชจเชฟเชถเซเชšเชฟเชค เชจเชฅเซ€ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช‰เชชเชฐเซ‹เช•เซเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซ€เชถเซเช‚. เชšเชพเชฒเซ‹ เชฆเชฐเซ‡เช• เช•เซ‰เชฒเชฎเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฅเชฎ เชซเช‚เช•เซเชถเชจเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เช, เชเช•เซ€เช•เซƒเชค เช…เชจเซ‡ เช‡เชจเชชเซเชŸ เชกเซ‡เชŸเชพเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชชเช‚เช•เซเชคเชฟ เช…เชจเซ‡ inp เชšเชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡:

aggExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`avgPrice`avgSize`vwap`cumVolume!
 ("row[`high]|inp`high";"row[`low]&inp`low";"row`firstPrice";"inp`lastPrice";"row`firstSize";"inp`lastSize";"pvolume%numTrades";"volume%numTrades";"turnover%volume";"row[`cumVolume]+inp`volume");

เช•เซ‡เชŸเชฒเซ€เช• เช•เซ‰เชฒเชฎ เชตเชฟเชถเชฟเชทเซเชŸ เชนเซ‹เชฏ เช›เซ‡; เชคเซ‡เชฎเชจเซ€ เชชเซเชฐเชฅเชฎ เช•เชฟเช‚เชฎเชค เชซเช‚เช•เซเชถเชจ เชฆเซเชตเชพเชฐเชพ เช—เชฃเชตเชพเชฎเชพเช‚ เช†เชตเชตเซ€ เชœเซ‹เชˆเช เชจเชนเซ€เช‚. เช…เชฎเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช•เซ‡ เชคเซ‡ เชชเช‚เช•เซเชคเชฟ [`numTrades] เช•เซ‰เชฒเชฎ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฅเชฎ เช›เซ‡ - เชœเซ‹ เชคเซ‡เชฎเชพเช‚ 0 เชนเซ‹เชฏ, เชคเซ‹ เชฎเซ‚เชฒเซเชฏ เชชเซเชฐเชฅเชฎ เช›เซ‡. Q เชชเชพเชธเซ‡ เชธเชฟเชฒเซ‡เช•เซเชŸ เชซเช‚เช•เซเชถเชจ เช›เซ‡ - ?[เชฌเซ‚เชฒเชฟเชฏเชจ เชฒเชฟเชธเซเชŸ;เชฒเชฟเชธเซเชŸ1;เชฒเชฟเชธเซเชŸ2] - เชœเซ‡ เชชเซเชฐเชฅเชฎ เชฆเชฒเซ€เชฒเชฎเชพเช‚ เชถเชฐเชคเชจเซ‡ เช†เชงเชพเชฐเซ‡ เชฒเชฟเชธเซเชŸ 1 เช…เชฅเชตเชพ 2เชฎเชพเช‚เชฅเซ€ เชฎเซ‚เชฒเซเชฏ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡:

// high -> ?[isFirst;inp`high;row[`high]|inp`high]
// @ - ั‚ะพะถะต ะพะฑะพะฑั‰ะตะฝะฝะพะต ะฟั€ะธัะฒะฐะธะฒะฐะฝะธะต ะดะปั ัะปัƒั‡ะฐั ะบะพะณะดะฐ ะธะฝะดะตะบั ะฝะตะณะปัƒะฑะพะบะธะน
@[`aggExpression;specialCols;{[x;y]"?[isFirst;inp`",y,";",x,"]"};string specialCols];

เช…เชนเซ€เช‚ เชฎเซ‡เช‚ เชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏ (เชธเชฐเซเชชเชพเช•เชพเชฐ เช•เซŒเช‚เชธเชฎเชพเช‚ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ) เชธเชพเชฅเซ‡ เชธเชพเชฎเชพเชจเซเชฏเช•เซƒเชค เช…เชธเชพเช‡เชจเชฎเซ‡เชจเซเชŸ เช•เชนเซเชฏเชพ เช›เซ‡. เชคเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชฎเซ‚เชฒเซเชฏ (เชชเซเชฐเชฅเชฎ เชฆเชฒเซ€เชฒ) เช…เชจเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชฆเชฒเซ€เชฒ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡, เชœเซ‡ เชนเซเช‚ 4 เชฅเซ€ เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช‚ เชชเชธเชพเชฐ เช•เชฐเซเช‚ เช›เซเช‚.

เชšเชพเชฒเซ‹ เชฌเซ‡เชŸเชฐเซ€ เชธเซเชชเซ€เช•เชฐเซเชธ เช…เชฒเช—เชฅเซ€ เช‰เชฎเซ‡เชฐเซ€เช, เช•เชพเชฐเชฃ เช•เซ‡ เช•เชพเชฐเซเชฏ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เช›เซ‡:

// volume -> row[`volume]+inp`volume
aggExpression[accumulatorCols]:{"row[`",x,"]+inp`",x } each string accumulatorCols;

เช† Q เชงเซ‹เชฐเชฃเซ‹ เชฆเซเชตเชพเชฐเชพ เชธเชพเชฎเชพเชจเซเชฏ เชธเซ‹เช‚เชชเชฃเซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเซเช‚ เชเช• เชœ เชธเชฎเชฏเซ‡ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชธเซ‹เช‚เชชเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚. เช›เซ‡เชฒเซเชฒเซ‡, เชšเชพเชฒเซ‹ เชฎเซเช–เซเชฏ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช:

// ":",/:aggExprs ~ map[{":",x};aggExpr] => ":row[`high]|inp`high" ะฟั€ะธัะฒะพะธะผ ะฒั‹ั‡ะธัะปะตะฝะฝะพะต ะทะฝะฐั‡ะตะฝะธะต ะฟะตั€ะตะผะตะฝะฝะพะน, ะฟะพั‚ะพะผัƒ ั‡ั‚ะพ ะฝะตะบะพั‚ะพั€ั‹ะต ะบะพะปะพะฝะบะธ ะทะฐะฒะธััั‚ ะพั‚ ัƒะถะต ะฒั‹ั‡ะธัะปะตะฝะฝั‹ั… ะทะฝะฐั‡ะตะฝะธะน
// string[cols],'exprs ~ map[,;string[cols];exprs] => "high:row[`high]|inp`high" ะทะฐะฒะตั€ัˆะธะผ ัะพะทะดะฐะฝะธะต ะฟั€ะธัะฒะฐะธะฒะฐะฝะธั. ,โ€™ ั€ะฐััˆะธั„ั€ะพะฒั‹ะฒะฐะตั‚ัั ะบะฐะบ map[concat]
// ";" sv exprs โ€“ String from Vector (sv), ัะพะตะดะธะฝัะตั‚ ัะฟะธัะพะบ ัั‚ั€ะพะบ ะฒัั‚ะฐะฒะปัั โ€œ;โ€ ะฟะพัั€ะตะดะธะฝะต
updateAgg:value "{[aggTable;idx;inp] row:aggTable idx; isFirst_0=row`numTrades; .[aggTable;;:;]'[(idx;)each aggCols;(",(";"sv string[aggCols],'":",/:aggExpression aggCols),")]}";

เช† เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เชธเชพเชฅเซ‡, เชนเซเช‚ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช—เชฎเชพเช‚เชฅเซ€ เชเช• เชซเช‚เช•เซเชถเชจ เชฌเชจเชพเชตเซเช‚ เช›เซเช‚ เชœเซ‡เชฎเชพเช‚ เชฎเซ‡เช‚ เช‰เชชเชฐ เช†เชชเซ‡เชฒ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เชนเซ‹เชฏ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชถเซ‡:

{[aggTable;idx;inp] rows:aggTable idx; isFirst_0=row`numTrades; .[aggTable;;:;]'[(idx;)each aggCols ;(cumVolume:row[`cumVolume]+inp`cumVolume;โ€ฆ ; high:?[isFirst;inp`high;row[`high]|inp`high])]}

เช•เซ‰เชฒเชฎ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เซเชฐเชฎ เชŠเช‚เชงเซ‹ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ Q เชฎเชพเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เซเชฐเชฎ เชœเชฎเชฃเซ‡เชฅเซ€ เชกเชพเชฌเซ‡ เช›เซ‡.

เชนเชตเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช—เชฃเชคเชฐเซ€เช“ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฌเซ‡ เชฎเซเช–เซเชฏ เช•เชพเชฐเซเชฏเซ‹ เช›เซ‡, เช…เชฎเชพเชฐเซ‡ เชฎเชพเชคเซเชฐ เชฅเซ‹เชกเซเช‚ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชธเซ‡เชตเชพ เชคเซˆเชฏเชพเชฐ เช›เซ‡.

เช…เช‚เชคเชฟเชฎ เชชเช—เชฒเชพเช‚

เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเซเชฐเซ€เชชเซเชฐเซ‹เชธเซ‡เชธ เช…เชจเซ‡ เช…เชชเชกเซ‡เชŸเชเช— เชซเช‚เช•เซเชถเชจ เช›เซ‡ เชœเซ‡ เชคเชฎเชพเชฎ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡ เชนเชœเซ€ เชชเชฃ เชฎเชฟเชจเชฟเชŸ เชฆเซเชตเชพเชฐเชพ เชฏเซ‹เช—เซเชฏ เชธเช‚เช•เซเชฐเชฎเชฃเชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เช…เชจเซ‡ เชเช•เชคเซเชฐเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“เชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เชธเซŒ เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ init เช•เชพเชฐเซเชฏ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เช:

init:{
  tradeAgg:: 0#enlist[initWith]; // ัะพะทะดะฐะตะผ ะฟัƒัั‚ัƒัŽ ั‚ะธะฟะธะทะธั€ะพะฒะฐะฝะฝัƒัŽ ั‚ะฐะฑะปะธั†ัƒ, enlist ะฟั€ะตะฒั€ะฐั‰ะฐะตั‚ ัะปะพะฒะฐั€ัŒ ะฒ ั‚ะฐะฑะปะธั†ัƒ, ะฐ 0# ะพะทะฝะฐั‡ะฐะตั‚ ะฒะทัั‚ัŒ 0 ัะปะตะผะตะฝั‚ะพะฒ ะธะท ะฝะตะต
  currTime::00:00; // ะฝะฐั‡ะฝะตะผ ั 0, :: ะพะทะฝะฐั‡ะฐะตั‚, ั‡ั‚ะพ ะฟั€ะธัะฒะฐะธะฒะฐะฝะธะต ะฒ ะณะปะพะฑะฐะปัŒะฝัƒัŽ ะฟะตั€ะตะผะตะฝะฝัƒัŽ
  currSyms::`u#`symbol$(); // `u# - ะฟั€ะตะฒั€ะฐั‰ะฐะตั‚ ัะฟะธัะพะบ ะฒ ะดะตั€ะตะฒะพ, ะดะปั ัƒัะบะพั€ะตะฝะธั ะฟะพะธัะบะฐ ัะปะตะผะตะฝั‚ะพะฒ
  offset::0; // ะธะฝะดะตะบั ะฒ tradeAgg, ะณะดะต ะฝะฐั‡ะธะฝะฐะตั‚ัั ั‚ะตะบัƒั‰ะฐั ะผะธะฝัƒั‚ะฐ 
  rollCache:: `sym xkey update `u#sym from rollColumns#tradeAgg; // ะบััˆ ะดะปั ะฟะพัะปะตะดะฝะธั… ะทะฝะฐั‡ะตะฝะธะน roll ะบะพะปะพะฝะพะบ, ั‚ะฐะฑะปะธั†ะฐ ั ะบะปัŽั‡ะพะผ sym
 }

เช…เชฎเซ‡ เชฐเซ‹เชฒ เชซเช‚เช•เซเชถเชจเชจเซ‡ เชชเชฃ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เชถเซเช‚, เชœเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชฎเชฟเชจเชฟเชŸเชจเซ‡ เชฌเชฆเชฒเชถเซ‡:

roll:{[tm]
  if[currTime>tm; :init[]]; // ะตัะปะธ ะฟะตั€ะตะฒะฐะปะธะปะธ ะทะฐ ะฟะพะปะฝะพั‡ัŒ, ั‚ะพ ะฟั€ะพัั‚ะพ ะฒั‹ะทะพะฒะตะผ init
  rollCache,::offset _ rollColumns#tradeAgg; // ะพะฑะฝะพะฒะธะผ ะบััˆ โ€“ ะฒะทัั‚ัŒ roll ะบะพะปะพะฝะบะธ ะธะท aggTable, ะพะฑั€ะตะทะฐั‚ัŒ, ะฒัั‚ะฐะฒะธั‚ัŒ ะฒ rollCache
  offset::count tradeAgg;
  currSyms::`u#`$();
 }

เชจเชตเชพ เช…เช•เซเชทเชฐเซ‹ เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชจเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡:

addSyms:{[syms]
  currSyms,::syms; // ะดะพะฑะฐะฒะธะผ ะฒ ัะฟะธัะพะบ ะธะทะฒะตัั‚ะฝั‹ั…
  // ะดะพะฑะฐะฒะธะผ ะฒ ั‚ะฐะฑะปะธั†ัƒ sym, time ะธ rollColumns ะฒะพัะฟะพะปัŒะทะพะฒะฐะฒัˆะธััŒ ะพะฑะพะฑั‰ะตะฝะฝั‹ะผ ะฟั€ะธัะฒะฐะธะฒะฐะฝะธะตะผ.
  // ะคัƒะฝะบั†ะธั ^ ะฟะพะดัั‚ะฐะฒะปัะตั‚ ะทะฝะฐั‡ะตะฝะธั ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะดะปั roll ะบะพะปะพะฝะพะบ, ะตัะปะธ ัะธะผะฒะพะปะฐ ะฝะตั‚ ะฒ ะบััˆะต. value flip table ะฒะพะทะฒั€ะฐั‰ะฐะตั‚ ัะฟะธัะพะบ ะบะพะปะพะฝะพะบ ะฒ ั‚ะฐะฑะปะธั†ะต.
  `tradeAgg upsert @[count[syms]#enlist initWith;`sym`time,cols rc;:;(syms;currTime), (initWith cols rc)^value flip rc:rollCache ([] sym: syms)];
 }

เช…เชจเซ‡ เช›เซ‡เชฒเซเชฒเซ‡, upd เชซเช‚เช•เซเชถเชจ (Q เชธเซ‡เชตเชพเช“ เชฎเชพเชŸเซ‡ เช† เชซเช‚เช•เซเชถเชจเชจเซเช‚ เชชเชฐเช‚เชชเชฐเชพเช—เชค เชจเชพเชฎ), เชœเซ‡เชจเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸ เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชŸเชพ เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

upd:{[tblName;data] // tblName ะฝะฐะผ ะฝะต ะฝัƒะถะฝะพ, ะฝะพ ะพะฑั‹ั‡ะฝะพ ัะตั€ะฒะธั ะพะฑั€ะฐะฑะฐั‚ั‹ะฒะฐะตั‚ ะฝะตัะบะพะปัŒะบะพ ั‚ะฐะฑะปะธั† 
  tm:exec distinct time from data:() xkey preprocess data; // preprocess & calc time
  updMinute[data] each tm; // ะดะพะฑะฐะฒะธะผ ะดะฐะฝะฝั‹ะต ะดะปั ะบะฐะถะดะพะน ะผะธะฝัƒั‚ั‹
};
updMinute:{[data;tm]
  if[tm<>currTime; roll tm; currTime::tm]; // ะฟะพะผะตะฝัะตะผ ะผะธะฝัƒั‚ัƒ, ะตัะปะธ ะฝะตะพะฑั…ะพะดะธะผะพ
  data:select from data where time=tm; // ั„ะธะปัŒั‚ั€ะฐั†ะธั
  if[count msyms:syms where not (syms:data`sym)in currSyms; addSyms msyms]; // ะฝะพะฒั‹ะต ัะธะผะฒะพะปั‹
  updateAgg[`tradeAgg;offset+currSyms?syms;data]; // ะพะฑะฝะพะฒะธะผ ะฐะณั€ะตะณะธั€ะพะฒะฐะฝะฝัƒัŽ ั‚ะฐะฑะปะธั†ัƒ. ะคัƒะฝะบั†ะธั ? ะธั‰ะตั‚ ะธะฝะดะตะบั ัะปะตะผะตะฝั‚ะพะฒ ัะฟะธัะบะฐ ัะฟั€ะฐะฒะฐ ะฒ ัะฟะธัะบะต ัะปะตะฒะฐ.
 };

เชฌเชธ เชเชŸเชฒเซเช‚ เชœ. เช…เชนเซ€เช‚ เช…เชฎเชพเชฐเซ€ เชธเซ‡เชตเชพเชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เช•เซ‹เชก เช›เซ‡, เชตเชšเชจ เชฎเซเชœเชฌ, เชฎเชพเชคเซเชฐ เชฅเซ‹เชกเซ€ เชฒเซ€เชŸเซ€เช“:

initWith:`sym`time`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover`avgPrice`avgSize`vwap`cumVolume!(`;00:00;0n;0n;0n;0n;0N;0N;0;0;0.0;0.0;0n;0n;0n;0);
aggCols:reverse key[initWith] except `sym`time;
rollColumns:`sym`cumVolume;

accumulatorCols:`numTrades`volume`pvolume`turnover;
specialCols:`high`low`firstPrice`firstSize;

selExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover!parse each ("max price";"min price";"first price";"last price";"first size";"last size";"count i";"sum size";"sum price";"sum price*size");
preprocess:?[;();`sym`time!`sym`time.minute;selExpression];

aggExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`avgPrice`avgSize`vwap`cumVolume!("row[`high]|inp`high";"row[`low]&inp`low";"row`firstPrice";"inp`lastPrice";"row`firstSize";"inp`lastSize";"pvolume%numTrades";"volume%numTrades";"turnover%volume";"row[`cumVolume]+inp`volume");
@[`aggExpression;specialCols;{"?[isFirst;inp`",y,";",x,"]"};string specialCols];
aggExpression[accumulatorCols]:{"row[`",x,"]+inp`",x } each string accumulatorCols;
updateAgg:value "{[aggTable;idx;inp] row:aggTable idx; isFirst_0=row`numTrades; .[aggTable;;:;]'[(idx;)each aggCols;(",(";"sv string[aggCols],'":",/:aggExpression aggCols),")]}"; / '

init:{
  tradeAgg::0#enlist[initWith];
  currTime::00:00;
  currSyms::`u#`symbol$();
  offset::0;
  rollCache:: `sym xkey update `u#sym from rollColumns#tradeAgg;
 };
roll:{[tm]
  if[currTime>tm; :init[]];
  rollCache,::offset _ rollColumns#tradeAgg;
  offset::count tradeAgg;
  currSyms::`u#`$();
 };
addSyms:{[syms]
  currSyms,::syms;
  `tradeAgg upsert @[count[syms]#enlist initWith;`sym`time,cols rc;:;(syms;currTime),(initWith cols rc)^value flip rc:rollCache ([] sym: syms)];
 };

upd:{[tblName;data] updMinute[data] each exec distinct time from data:() xkey preprocess data};
updMinute:{[data;tm]
  if[tm<>currTime; roll tm; currTime::tm];
  data:select from data where time=tm;
  if[count msyms:syms where not (syms:data`sym)in currSyms; addSyms msyms];
  updateAgg[`tradeAgg;offset+currSyms?syms;data];
 };

เชชเชฐเซ€เช•เซเชทเชฃ

เชšเชพเชฒเซ‹ เชธเซ‡เชตเชพเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชคเชชเชพเชธเซ€เช. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เชเช• เช…เชฒเช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชšเชฒเชพเชตเซ€เช (เช•เซ‹เชกเชจเซ‡ service.q เชซเชพเช‡เชฒเชฎเชพเช‚ เชฎเซ‚เช•เซ‹) เช…เชจเซ‡ init เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‹:

q service.q โ€“p 5566

q)init[]

เชฌเซ€เชœเชพ เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚, เชฌเซ€เชœเซ€ Q เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชถเชฐเซ‚ เช•เชฐเซ‹ เช…เชจเซ‡ เชชเซเชฐเชฅเชฎ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ‹:

h:hopen `:host:5566
h:hopen 5566 // ะตัะปะธ ะพะฑะฐ ะฝะฐ ะพะดะฝะพะผ ั…ะพัั‚ะต

เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชชเซเชฐเชคเซ€เช•เซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฌเชจเชพเชตเซ€เช - 10000 เชŸเซเช•เชกเชพเช“ เช…เชจเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชซเช‚เช•เซเชถเชจ เช‰เชฎเซ‡เชฐเซ€เช. เชฌเซ€เชœเชพ เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚:

syms:`IBM`AAPL`GOOG,-9997?`8
rnd:{[n;t] ([] sym:n?syms; time:t+asc n#til 25; price:n?10f; size:n?10)}

เชฎเซ‡เช‚ เชคเซ‡เชฎเชจเซ‡ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชœเซ‹เชตเชพเชจเซเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชคเซเชฐเชฃ เชตเชพเชธเซเชคเชตเชฟเช• เชชเซเชฐเชคเซ€เช•เซ‹ เช‰เชฎเซ‡เชฐเซเชฏเชพ เช›เซ‡. rnd เชซเช‚เช•เซเชถเชจ n เชชเช‚เช•เซเชคเชฟเช“ เชธเชพเชฅเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชœเซเชฏเชพเช‚ เชธเชฎเชฏ t เชฅเซ€ t+25 เชฎเชฟเชฒเชฟเชธเซ‡เช•เชจเซเชกเชฎเชพเช‚ เชฌเชฆเชฒเชพเชฏ เช›เซ‡.

เชนเชตเซ‡ เชคเชฎเซ‡ เชธเซ‡เชตเชพเชจเซ‡ เชกเซ‡เชŸเชพ เชฎเซ‹เช•เชฒเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ (เชชเซเชฐเชฅเชฎ เชฆเชธ เช•เชฒเชพเช• เช‰เชฎเซ‡เชฐเซ‹):

{h (`upd;`trade;rnd[10000;x])} each `time$00:00 + til 60*10

เชคเชฎเซ‡ เชธเซ‡เชตเชพเชฎเชพเช‚ เชคเชชเชพเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชŸเซ‡เชฌเชฒ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡:

c 25 200
select from tradeAgg where sym=`AAPL
-20#select from tradeAgg where sym=`AAPL

เชชเชฐเชฟเชฃเชพเชฎ:

sym|time|high|low|firstPrice|lastPrice|firstSize|lastSize|numTrades|volume|pvolume|turnover|avgPrice|avgSize|vwap|cumVolume
--|--|--|--|--|--------------------------------
AAPL|09:27|9.258904|9.258904|9.258904|9.258904|8|8|1|8|9.258904|74.07123|9.258904|8|9.258904|2888
AAPL|09:28|9.068162|9.068162|9.068162|9.068162|7|7|1|7|9.068162|63.47713|9.068162|7|9.068162|2895
AAPL|09:31|4.680449|0.2011121|1.620827|0.2011121|1|5|4|14|9.569556|36.84342|2.392389|3.5|2.631673|2909
AAPL|09:33|2.812535|2.812535|2.812535|2.812535|6|6|1|6|2.812535|16.87521|2.812535|6|2.812535|2915
AAPL|09:34|5.099025|5.099025|5.099025|5.099025|4|4|1|4|5.099025|20.3961|5.099025|4|5.099025|2919

เชธเซ‡เชตเชพ เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เช•เซ‡เชŸเชฒเซ‹ เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชนเชตเซ‡ เชฒเซ‹เชก เชŸเซ‡เชธเซเชŸเชฟเช‚เช— เชนเชพเชฅ เชงเชฐเซ€เช. เชšเชพเชฒเซ‹ เชนเซเช‚ เชคเชฎเชจเซ‡ เชฏเชพเชฆ เช•เชฐเชพเชตเซเช‚ เช•เซ‡ เช…เชฎเซ‡ เช…เชชเชกเซ‡เชŸ เช…เช‚เชคเชฐเชพเชฒเชจเซ‡ 25 เชฎเชฟเชฒเซ€เชธเซ‡เช•เชจเซเชกเซเชธ เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซเชฏเซ‹ เช›เซ‡. เชคเชฆเชจเซเชธเชพเชฐ, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เชกเซ‡เชŸเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฏ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‡เชตเชพ (เชธเชฐเซ‡เชฐเชพเชถ) เช…เชชเชกเซ‡เชŸ เชฆเซ€เช  เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ 20 เชฎเชฟเชฒเซ€เชธเซ‡เช•เชจเซเชกเชฎเชพเช‚ เชซเชฟเชŸ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช. เชฌเซ€เชœเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเชพ เชฆเชพเช–เชฒ เช•เชฐเซ‹:

tm:10:00:00.000
stressTest:{[n] 1 string[tm]," "; times,::h ({st:.z.T; upd[`trade;x]; .z.T-st};rnd[n;tm]); tm+:25}
start:{[n] times::(); do[4800;stressTest[n]]; -1 " "; `min`avg`med`max!(min times;avg times;med times;max times)}

4800 เชฌเซ‡ เชฎเชฟเชจเชฟเชŸ เช›เซ‡. เชคเชฎเซ‡ เชฆเชฐ 1000 เชฎเชฟเชฒเซ€เชธเซ‡เช•เชจเซเชกเซ‡ 25 เชชเช‚เช•เซเชคเชฟเช“ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฅเชฎ เชฆเซ‹เชกเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

start 1000

เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชชเชฐเชฟเชฃเชพเชฎ เช…เชชเชกเซ‡เชŸ เชฆเซ€เช  เชฅเซ‹เชกเชพ เชฎเชฟเชฒเซ€เชธเซ‡เช•เช‚เชกเชจเซ€ เช†เชธเชชเชพเชธ เช›เซ‡. เชคเซ‡เชฅเซ€ เชนเซเช‚ เชคเชฐเชค เชœ เชชเช‚เช•เซเชคเชฟเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชตเชงเชพเชฐเซ€เชจเซ‡ 10.000 เช•เชฐเซ€เชถ:

start 10000

เชชเชฐเชฟเชฃเชพเชฎ:

min| 00:00:00.004
avg| 9.191458
med| 9f
max| 00:00:00.030

เชซเชฐเซ€เชฅเซ€, เช–เชพเชธ เช•เช‚เชˆ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช† 24 เชฎเชฟเชฒเชฟเชฏเชจ เชฒเชพเช‡เชจ เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ, 400 เชนเชœเชพเชฐ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก เช›เซ‡. 25 เชฎเชฟเชฒเชฟเชธเซ‡เช•เชจเซเชกเชฅเซ€ เชตเชงเซ เชฎเชพเชŸเซ‡, เช…เชชเชกเซ‡เชŸ เชฎเชพเชคเซเชฐ 5 เชตเช–เชค เชงเซ€เชฎเซเช‚ เชฅเชฏเซเช‚, เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชฎเชฟเชจเชฟเชŸ เชฌเชฆเชฒเชพเชˆ. เชšเชพเชฒเซ‹ 100.000 เชธเซเชงเซ€ เชตเชงเชพเชฐเซ€เช:

start 100000

เชชเชฐเชฟเชฃเชพเชฎ:

min| 00:00:00.013
avg| 25.11083
med| 24f
max| 00:00:00.108
q)sum times
00:02:00.532

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชธเซ‡เชตเชพ เชญเชพเช—เซเชฏเซ‡ เชœ เชธเชพเชฎเชจเซ‹ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎ เช›เชคเชพเช‚ เชคเซ‡ เชคเชฐเชคเซเช‚ เชฐเชนเซ‡เชตเชพเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเซ‡ เช›เซ‡. เชกเซ‡เชŸเชพเชจเซเช‚ เช†เชŸเชฒเซเช‚ เชชเซเชฐเชฎเชพเชฃ (เชฎเชฟเชจเชฟเชŸ เชฆเซ€เช  240 เชฎเชฟเชฒเชฟเชฏเชจ เชชเช‚เช•เซเชคเชฟเช“) เช…เชคเซเชฏเช‚เชค เชฎเซ‹เชŸเซเช‚ เช›เซ‡; เช†เชตเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เชธเซ‡เชตเชพเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เช•เซเชฒเซ‹เชจเซเชธ (เช…เชฅเชตเชพ เชกเชเชจเซ‡เช• เช•เซเชฒเซ‹เชจเซเชธ เชชเชฃ) เชฒเซ‹เช‚เชš เช•เชฐเชตเชพ เชธเชพเชฎเชพเชจเซเชฏ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชฆเชฐเซ‡เช• เช…เช•เซเชทเชฐเซ‹เชจเชพ เชฎเชพเชคเซเชฐ เชญเชพเช— เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชฎ เช›เชคเชพเช‚, เชชเชฐเชฟเชฃเชพเชฎ เชเช• เช…เชฐเซเชฅเช˜เชŸเชจ เชญเชพเชทเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชญเชพเชตเชถเชพเชณเซ€ เช›เซ‡ เชœเซ‡ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

เชชเซเชฐเชถเซเชจ เช‰เชฆเซเชฆเชญเชตเซ€ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฏ เชฆเชฐเซ‡เช• เช…เชชเชกเซ‡เชŸเชจเชพ เช•เชฆ เชธเชพเชฅเซ‡ เชฌเชฟเชจ-เชฐเซ‡เช–เซ€เชฏ เชฐเซ€เชคเซ‡ เชตเชงเซ‡ เช›เซ‡. เช•เชพเชฐเชฃ เช เช›เซ‡ เช•เซ‡ เชธเช‚เช•เซ‹เชšเชจ เช•เชพเชฐเซเชฏ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชธเซ€ เชซเช‚เช•เซเชถเชจ เช›เซ‡, เชœเซ‡ เช…เชชเชกเซ‡เชŸเชเช— เช•เชฐเชคเชพเช‚ เชตเชงเซ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช›เซ‡. เชšเซ‹เช•เซเช•เชธ เช…เชชเชกเซ‡เชŸ เช•เชฆ (เชฒเช—เชญเช— 10.000) เชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡, เช…เชชเชกเซ‡เชŸเชเช— เชคเซ‡เชจเซ€ เชŸเซ‹เชšเชฎเชฐเซเชฏเชพเชฆเชพ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‹ เช…เชฎเชฒ เชธเชฎเชฏ เช…เชชเชกเซ‡เชŸเชจเชพ เช•เชฆ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชจเชฅเซ€. เชคเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชชเช—เชฒเชพ Q เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช›เซ‡ เช•เซ‡ เชธเซ‡เชตเชพ เช†เชตเชพ เชœเชฅเซเชฅเชพเชจเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชกเชพเชฏเชœเซ‡เชธเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เช›เซ‡. เช† เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชฎเซ‹เชŸเชพ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฏเซ‹เช—เซเชฏ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซเช‚ เช•เซ‡เชŸเชฒเซเช‚ เชฎเชนเชคเซเชตเชจเซเช‚ เช›เซ‡. เชฌเซ€เชœเซ‹ เชฎเซเชฆเซเชฆเซ‹ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ‹ เชฏเซ‹เช—เซเชฏ เชธเช‚เช—เซเชฐเชน เช›เซ‡. เชœเซ‹ เชกเซ‡เชŸเชพ เชธเซเชคเช‚เชญเชพเช•เซ€เชฏ เชฐเซ€เชคเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เชจ เชนเซ‹เชฏ เช…เชฅเชตเชพ เชธเชฎเชฏเชธเชฐ เช“เชฐเซเชกเชฐ เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชชเช›เซ€ เช†เชชเชฃเซ‡ TLB เช•เซ‡เชถ เชฎเชฟเชธ เชœเซ‡เชตเซ€ เชตเชธเซเชคเซเชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เชฅเชˆเชถเซเช‚ - เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เชเชกเซเชฐเซ‡เชธ เช•เซ‡เชถเชฎเชพเช‚ เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช  เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เช—เซ‡เชฐเชนเชพเชœเชฐเซ€. เชธเชฐเชจเชพเชฎเซเช‚ เชถเซ‹เชงเชตเชพเชฎเชพเช‚ เชฒเช—เชญเช— 30 เช—เชฃเซ‹ เชตเชงเซ เชธเชฎเชฏ เชฒเชพเช—เซ‡ เช›เซ‡ เชœเซ‹ เช…เชธเชซเชณ เชนเซ‹เชฏ, เช…เชจเซ‡ เชœเซ‹ เชกเซ‡เชŸเชพ เชตเซ‡เชฐเชตเชฟเช–เซ‡เชฐ เชฅเชˆ เชœเชพเชฏ, เชคเซ‹ เชคเซ‡ เชธเซ‡เชตเชพเชจเซ‡ เช˜เชฃเซ€ เชตเช–เชค เชงเซ€เชฎเซเช‚ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เชจเชฟเชทเซเช•เชฐเซเชท

เช† เชฒเซ‡เช–เชฎเชพเช‚, เชฎเซ‡เช‚ เชฌเชคเชพเชตเซเชฏเซเช‚ เช•เซ‡ KDB+ เช…เชจเซ‡ Q เชกเซ‡เชŸเชพเชฌเซ‡เช เชฎเชพเชคเซเชฐ เชฎเซ‹เชŸเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเชธเช‚เชฆเช—เซ€ เชฆเซเชตเชพเชฐเชพ เชธเชฐเชณเชคเชพเชฅเซ€ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœ เชจเชนเซ€เช‚, เชชเชฃ เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชธเซ‡เชตเชพเช“ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฃ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เชœเซ‡ เชฒเชพเช–เซ‹ เชชเช‚เช•เซเชคเชฟเช“/เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เชกเซ‡เชŸเชพเชจเซ‡ เชกเชพเชฏเชœเซ‡เชธเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เช›เซ‡. เชเช• เชœ Q เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ. Q เชญเชพเชทเชพ เชชเซ‹เชคเซ‡ เชœ เชคเซ‡เชจเซ€ เชตเซ‡เช•เซเชŸเชฐ เชชเซเชฐเช•เซƒเชคเชฟ, เชฌเชฟเชฒเซเชŸ-เช‡เชจ SQL เชฌเซ‹เชฒเซ€ เชฆเซเชญเชพเชทเชฟเชฏเชพ เช…เชจเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช•เชพเชฐเซเชฏเซ‹เชจเชพ เช–เซ‚เชฌ เชœ เชธเชซเชณ เชธเชฎเซ‚เชนเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชธเช‚เชฌเช‚เชงเชฟเชค เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเซเชธเชจเชพ เช…เชคเซเชฏเช‚เชค เชธเช‚เช•เซเชทเชฟเชชเซเชค เช…เชจเซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡.

เชนเซเช‚ เชจเซ‹เช‚เชง เช•เชฐเซ€เชถ เช•เซ‡ เช‰เชชเชฐเซ‹เช•เซเชค เช เชฎเชพเชคเซเชฐ Q เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เชคเซ‡เชจเซ‹ เชเช• เชญเชพเช— เช›เซ‡, เชคเซ‡เชฎเชพเช‚ เช…เชจเซเชฏ เชตเชฟเชถเชฟเชทเซเชŸ เชธเซเชตเชฟเชงเชพเช“ เชชเชฃ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชเช• เช…เชคเซเชฏเช‚เชค เชธเชฐเชณ IPC เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชœเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค Q เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชตเชšเซเชšเซ‡เชจเซ€ เชธเซ€เชฎเชพเชจเซ‡ เชญเซ‚เช‚เชธเซ€ เชจเชพเช–เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เช†เชฎเชพเช‚เชฅเซ€ เชธเซ‡เช‚เช•เชกเซ‹ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เชเช• เชจเซ‡เชŸเชตเชฐเซเช•เชฎเชพเช‚ เชœเซ‹เชกเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡, เชœเซ‡ เชตเชฟเชถเซเชตเชจเชพ เชตเชฟเชตเชฟเชง เชญเชพเช—เซ‹เชฎเชพเช‚ เชกเชเชจเซ‡เช• เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชธเซเชฅเชฟเชค เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹