Tarantool DBMS เจตเจฟเฉฑเจš เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€

เจนเฉˆเจฒเฉ‹, เจฎเฉˆเจ‚ DBMS เจฒเจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพ เจฐเจฟเจนเจพ/เจฐเจนเฉ€ เจนเจพเจ‚ เจคเจฐเฉฐเจคเฉ‚เจฒ Mail.ru เจธเจฎเฉ‚เจน เจฆเฉเจ†เจฐเจพ เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเจพ เจ‡เฉฑเจ• เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ• เจ‰เฉฑเจš-เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจพเจฒเฉ‡ DBMS เจ…เจคเฉ‡ เจฒเฉเจ† เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆเฅค เจŸเจพเจฐเจจเจŸเฉ‚เจฒ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจนเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจ‰เฉฑเจš เจ—เจคเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, DBMS เจฆเฉ‡ เจ‡เจจ-เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฎเฉ‹เจก เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เจพเจฐเฉ‹เจฌเจพเจฐเฉ€ เจคเจฐเจ• เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจ•เจพเจฐเจจเฅค เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, ACID เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจกเฉ‡เจŸเจพ เจธเจฅเจฟเจฐเจคเจพ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจ‡เฉฑเจ• WAL เจฒเฉŒเจ— เจกเจฟเจธเจ• เจคเฉ‡ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ)เฅค เจคเจฐเจจเจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจ…เจคเฉ‡ เจธเจผเจพเจฐเจกเจฟเฉฐเจ— เจฒเจˆ เจฌเจฟเจฒเจŸ-เจ‡เจจ เจธเจฎเจฐเจฅเจจ เจนเฉˆเฅค เจธเฉฐเจธเจ•เจฐเจฃ 2.1 เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, SQL เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจธเจตเจพเจฒ เจธเจฎเจฐเจฅเจฟเจค เจนเจจเฅค Tarantool เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจนเฉˆ เจ…เจคเฉ‡ เจธเจงเจพเจฐเจจ BSD เจฒเจพเจ‡เจธเฉฐเจธ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจฒเจพเจ‡เจธเฉฐเจธเจธเจผเฉเจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจตเจชเจพเจฐเจ• เจเจ‚เจŸเจฐเจชเฉเจฐเจพเจˆเจœเจผ เจธเฉฐเจธเจ•เจฐเจฃ เจตเฉ€ เจนเฉˆ.

Tarantool DBMS เจตเจฟเฉฑเจš เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€
เจธเจผเจ•เจคเฉ€ เจฎเจนเจฟเจธเฉ‚เจธ เจ•เจฐเฉ‹! (โ€ฆเจ‰เจฐเจซเจผ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเจพ เจ†เจจเฉฐเจฆ เจฎเจพเจฃเฉ‹)

เจ‰เจชเจฐเฉ‹เจ•เจค เจธเจพเจฐเฉ‡ เจŸเจพเจฐเจจเจŸเฉ‚เจฒ เจจเฉ‚เฉฐ เจ‰เฉฑเจš-เจฒเฉ‹เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจ†เจ•เจฐเจธเจผเจ• เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ เจœเฉ‹ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš, เจ…เจ•เจธเจฐ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจจเจ•เจฒ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ.

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, Tarantool เจตเจฟเฉฑเจš เจฌเจฟเจฒเจŸ-เจ‡เจจ เจกเจพเจŸเจพ เจฐเฉ€เจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆเฅค เจ‡เจธเจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเจพ เจธเจฟเจงเจพเจ‚เจค เจฎเจพเจธเจŸเจฐ เจฒเฉŒเจ— (WAL) เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจธเจพเจฐเฉ‡ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎเจตเจพเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ 'เจคเฉ‡ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจœเจฟเจนเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ (เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจ•เจนเจพเจ‚เจ—เฉ‡ เจ˜เฉฑเจŸ-เจชเฉฑเจงเจฐ) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจซเจพเจฒเจŸ เจธเจนเจฟเจฃเจธเจผเฉ€เจฒเจคเจพ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡/เจœเจพเจ‚ เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจฐเฉ€เจกเจฟเฉฐเจ— เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

Tarantool DBMS เจตเจฟเฉฑเจš เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€
เจšเฉŒเจฒ. 1. เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€

เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจชเจฟเจ• เจฆเฉเจฐเจฟเจธเจผ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ—/เจจเจฟเจ—เจฐเจพเจจเฉ€ เจฒเจˆ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ เจ—เจ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฆเฉ‚เจœเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจ•เจฐเจจเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจฌเจพเจ…เจฆ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉฑเจฒ เจจเฉ‚เฉฐ เจตเจฐเจคเจฃ เจฒเจˆ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ‰เฉฑเจš เจชเฉฑเจงเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ - เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เจพเจฐเฉ‹เจฌเจพเจฐเฉ€ เจคเจฐเจ• เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจกเฉ‡เจŸเจพ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เฅค เจ‰เจน. เจ…เจธเฉ€เจ‚ DBMS เจตเจฟเฉฑเจš เจฌเจฃเฉ‡ เจคเจฟเจ†เจฐ เจนเฉฑเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจชเจฐ เจธเจพเจกเฉ‡ เจฆเฉเจ†เจฐเจพ เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจซเจพเจ‡เจฆเฉ‡ เจ…เจคเฉ‡ เจจเฉเจ•เจธเจพเจจ เจฆเฉ‹เจตเฉ‡เจ‚ เจนเจจ. เจ†เจ“ เจซเจพเจ‡เจฆเจฟเจ†เจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจ•เจฐเฉ€เจเฅค

1. เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฌเฉฑเจšเจค:

  • เจคเฉเจธเฉ€เจ‚ เจธเจพเจฐเจพ เจกเจพเจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจ‡เจธเจฆเจพ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจนเจฟเฉฑเจธเจพ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจธเจฟเจฐเจซ เจ•เฉเจ เจŸเฉ‡เจฌเจฒ, เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ•เฉเจ เจ•เจพเจฒเจฎ เจœเจพเจ‚ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจฎเจพเจชเจฆเฉฐเจก เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจฆเฉ‡ เจนเจจ);
  • เจจเจฟเจฎเจจ-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ‡ เจ‰เจฒเจŸ, เจœเฉ‹ เจ•เจฟ เจฒเจ—เจพเจคเจพเจฐ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ (เจŸเจพเจฐเจจเจŸเฉ‚เจฒ เจฆเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃ - 1.10 เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ) เจœเจพเจ‚ เจธเจฎเจ•เจพเจฒเฉ€ (เจŸเจฐเจจเจŸเฉ‚เจฒ เจฆเฉ‡ เจ…เจ—เจฒเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจนเฉˆ) เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเฉˆเจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ (เจ…เจฐเจฅเจพเจค, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจชเจนเจฟเจฒเจพเจ‚ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจพเจˆเจœเจผ เจ•เจฐเจฆเฉ€ เจนเฉˆ - เจ‡เฉฑเจ• เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจกเฉ‡เจŸเจพ, เจซเจฟเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจฟเจฐเจพเจฎ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เจ—เจฒเจพ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ†เจฆเจฟ);
  • เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจฐเจฟเจ•เจพเจฐเจก เจ•เจˆ เจตเจพเจฐ เจฌเจฆเจฒ เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจธเจฟเจฐเจซ เจ‡เจธเจฆเฉ‡ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจ˜เฉฑเจŸ-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ‡ เจ‰เจฒเจŸ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเจพเจธเจŸเจฐ 'เจคเฉ‡ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ 'เจคเฉ‡ เจ•เฉเจฐเจฎเจตเจพเจฐ เจตเจพเจชเจธ เจšเจฒเจพเจˆเจ†เจ‚ เจœเจพเจฃเจ—เฉ€เจ†เจ‚)เฅค

2. HTTP เจเจ•เจธเจšเฉ‡เจ‚เจœ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจฎเฉเจธเจผเจ•เจฒ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฐเจฟเจฎเฉ‹เจŸ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจพเจˆเจœเจผ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

Tarantool DBMS เจตเจฟเฉฑเจš เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€
เจšเฉŒเจฒ. 2. HTTP เจ‰เฉฑเจคเฉ‡ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€

3. เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฌเจฃเจคเจฐเจพเจ‚ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเจพ เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ (เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ†เจฎ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจตเฉฑเจ–-เจตเฉฑเจ– DBMS, เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพเจตเจพเจ‚, เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎเจพเจ‚, เจ†เจฆเจฟ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจตเฉ€ เจธเฉฐเจญเจต เจนเฉˆ)เฅค

Tarantool DBMS เจตเจฟเฉฑเจš เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€
เจšเฉŒเจฒ. 3. เจตเจฟเจชเจฐเฉ€เจค เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€

เจจเจจเฉเจ•เจธเจพเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ, เจ”เจธเจคเจจ, เจชเฉเจฐเฉ‹เจ—เฉเจฐเจพเจฎเจฟเฉฐเจ— เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจจเจพเจฒเฉ‹เจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจฎเฉเจธเจผเจ•เจฒ/เจฎเจนเจฟเฉฐเจ—เฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจฌเจฟเจฒเจŸ-เจ‡เจจ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฌเจœเจพเจ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ€ เจ–เฉเจฆ เจฆเฉ€ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเฉ€ เจชเจตเฉ‡เจ—เฉ€เฅค

เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจ‰เจชเจฐเฉ‹เจ•เจค เจซเจพเจ‡เจฆเฉ‡ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเจจ (เจœเจพเจ‚ เจ‡เฉฑเจ• เจœเจผเจฐเฉ‚เจฐเฉ€ เจธเจผเจฐเจค เจนเฉˆ), เจคเจพเจ‚ เจ‡เจน เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเจฎเจเจฆเจพเจฐ เจนเฉˆเฅค เจ†เจ‰ Tarantool DBMS เจตเจฟเฉฑเจš เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจกเจพเจŸเจพ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจ•เจˆ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจเฅค

เจŸเฉเจฐเฉˆเจซเจฟเจ• เจ˜เฉฑเจŸ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจ•เจฐเจจเจพ

เจ‡เจธ เจฒเจˆ, เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ‡ เจซเจพเจ‡เจฆเจฟเจ†เจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฌเฉฑเจšเจค เจนเฉˆเฅค เจ‡เจธ เจซเจพเจ‡เจฆเฉ‡ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ, เจนเจฐเฉ‡เจ• เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค เจฌเฉ‡เจธเจผเฉฑเจ•, เจธเจพเจจเฉ‚เฉฐ เจ‡เจน เจจเจนเฉ€เจ‚ เจญเฉเฉฑเจฒเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจธเฉˆเจธเจผเจจ เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจกเฉ‡เจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจจเฉ‚เฉฐ เจธเจฐเฉ‹เจค เจจเจพเจฒ เจธเจฎเจ•เจพเจฒเฉ€ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ (เจ˜เฉฑเจŸเฉ‹ เจ˜เฉฑเจŸ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ‰เจธ เจนเจฟเฉฑเจธเฉ‡ เจฒเจˆ เจœเฉ‹ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉˆ).

เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจ˜เฉฑเจŸ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡? เจ‡เฉฑเจ• เจธเจฟเฉฑเจงเจพ เจนเฉฑเจฒ เจฎเจฟเจคเฉ€ เจ…เจคเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉเจ†เจฐเจพ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจจเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจฎเฉŒเจœเฉ‚เจฆ เจฎเจฟเจคเฉ€-เจธเจฎเจพเจ‚ เจ–เฉ‡เจคเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจœเฉ‡ เจ‡เจน เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ)เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• "เจ†เจฐเจกเจฐ" เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ–เฉ‡เจคเจฐ "เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจ†เจฐเจกเจฐ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจŸเจพเจˆเจฎ" เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ - delivery_time. เจ‡เจธ เจนเฉฑเจฒ เจฆเฉ‡ เจจเจพเจฒ เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‡เจธ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจธ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจœเฉ‹ เจ†เจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ€ เจฐเจšเจจเจพ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ…เจงเจฟเจ•เจคเจฎ เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจฏเจพเจฆ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ delivery_time, เจชเจฟเจ›เจฒเฉ‡ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจ…เจคเฉ‡ เจ…เจ—เจฒเฉ‡ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจ‰เฉฑเจš เจ–เฉ‡เจคเจฐ เจฎเฉเฉฑเจฒ เจตเจพเจฒเฉ‡ เจธเจพเจฐเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเฉ‹ delivery_time. เจ˜เฉฑเจŸ เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒ เจตเจพเจฒเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ delivery_time. เจจเจพเจฒ เจนเฉ€, เจ†เจฐเจกเจฐ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจธเจจ, เจœเจฟเจธ เจจเฉ‡ เจซเจฟเจฐ เจตเฉ€ เจ–เฉ‡เจคเจฐ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ delivery_time. เจฆเฉ‹เจตเจพเจ‚ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจฐเฉ‹เจค เจคเฉ‹เจ‚ เจฎเฉฐเจœเจผเจฟเจฒ เจคเฉฑเจ• เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจนเจจเจพเจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ "เจ“เจตเจฐเจฒเฉˆเจชเจฟเฉฐเจ—" เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€. เจ‰เจน. เจนเจฐเฉ‡เจ• เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจจเจพเจฒ เจธเจพเจฐเจพ เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡ delivery_time, เจ…เจคเฉ€เจค เจตเจฟเฉฑเจš เจ•เฉเจ เจฌเจฟเฉฐเจฆเฉ‚ เจคเฉ‹เจ‚ เจตเฉฑเจง (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฎเฉŒเจœเฉ‚เจฆเจพ เจชเจฒ เจคเฉ‹เจ‚ N เจ˜เฉฐเจŸเฉ‡)เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ เจ•เจฟ เจตเฉฑเจกเฉ‡ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ เจ‡เจน เจชเจนเฉเฉฐเจš เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฌเฉ‡เจฒเฉ‹เฉœเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฌเจšเจค เจจเฉ‚เฉฐ เจ˜เจŸเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚. เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจฎเจฟเจคเฉ€-เจธเจฎเฉ‡เจ‚ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจ–เฉ‡เจคเจฐ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจนเฉฑเจฒ, เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจตเจงเฉ‡เจฐเฉ‡ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ, เจกเฉ‡เจŸเจพ เจฆเฉ€ เจชเฉเจฐเจพเจชเจคเฉ€ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจนเจฐเฉ‡เจ• เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, เจธเจพเจฐเจพ เจกเฉ‡เจŸเจพ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธเจฆเฉ€ เจฐเจธเฉ€เจฆ เจชเฉเจฐเจพเจชเจคเจ•เจฐเจคเจพ เจฆเฉเจ†เจฐเจพ เจชเฉเจธเจผเจŸเฉ€ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ. เจ‡เจธเจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฐเฉ‹เจค เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฌเฉเจฒเฉ€เจ…เจจ เจ•เจพเจฒเจฎ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, is_transferred). เจœเฉ‡เจ•เจฐ เจชเฉเจฐเจพเจชเจคเจ•เจฐเจคเจพ เจฐเจฟเจ•เจพเจฐเจก เจฆเฉ€ เจฐเจธเฉ€เจฆ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจ–เฉ‡เจคเจฐ เจฎเฉเฉฑเจฒ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ true, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจเจ‚เจŸเจฐเฉ€ เจนเฉเจฃ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ‡เจธ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจตเจฟเจ•เจฒเจช เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจจเฉเจ•เจธเจพเจจ เจนเจจเฅค เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจฐเฉ‡เจ• เจฐเจฟเจ•เจพเจฐเจก เจฒเจˆ, เจ‡เฉฑเจ• เจฐเจธเฉ€เจฆ เจคเจฟเจ†เจฐ เจ…เจคเฉ‡ เจญเฉ‡เจœเฉ€ เจœเจพเจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค เจฎเฉ‹เจŸเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจฆเฉเฉฑเจ—เจฃเจพ เจ•เจฐเจจ เจ…เจคเฉ‡ เจฐเจพเจ‰เจ‚เจกเจŸเฉเจฐเจฟเจชเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจจเฉ‚เฉฐ เจฆเฉเฉฑเจ—เจฃเจพ เจ•เจฐเจจ เจฒเจˆ เจคเฉเจฒเจจเจพเจคเจฎเจ• เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฆเฉ‚เจœเจพ, เจ•เจˆ เจฐเจฟเจธเฉ€เจตเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจฐเจฟเจ•เจพเจฐเจก เจญเฉ‡เจœเจฃ เจฆเฉ€ เจ•เฉ‹เจˆ เจธเฉฐเจญเจพเจตเจจเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ (เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเจพ เจชเจนเจฟเจฒเจพ เจชเฉเจฐเจพเจชเจคเจ•เจฐเจคเจพ เจ†เจชเจฃเฉ‡ เจฒเจˆ เจ…เจคเฉ‡ เจฌเจพเจ•เฉ€ เจธเจพเจฐเจฟเจ†เจ‚ เจฒเจˆ เจฐเจธเฉ€เจฆ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเฉ‡เจ—เจพ)เฅค

เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ‡ เจ—เจ เจจเฉเจ•เจธเจพเจจ เจจเจนเฉ€เจ‚ เจนเจจ, เจ‡เจธ เจฆเฉ€เจ†เจ‚ เจ•เจคเจพเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจ•เจฐเจจ เจฒเจˆ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ€ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจพเจฒเจฎ เจœเฉ‹เฉœเจจเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจพเจฒเจฎ เจฎเจฟเจคเฉ€-เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจ•เจฟเจธเจฎ เจฆเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจนเจฐ เจตเจพเจฐ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ/เจฌเจฆเจฒเจฃ (เจœเฉ‹เฉœเจจ/เจคเจฌเจฆเฉ€เจฒเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจชเจฐเจฎเจพเจฃเฉ‚ เจคเฉŒเจฐ 'เจคเฉ‡) เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉเจ†เจฐเจพ เจธเฉˆเฉฑเจŸ/เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡, เจ†เจ“ เจ•เจพเจฒเจฎ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเฉ€เจ update_time. เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฒเจˆ เจ‡เจธ เจ•เจพเจฒเจฎ เจฆเฉ‡ เจ…เจงเจฟเจ•เจคเจฎ เจซเฉ€เจฒเจก เจตเฉˆเจฒเจฏเฉ‚ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจ•เฉ‡, เจ…เจธเฉ€เจ‚ เจ‡เจธ เจตเฉˆเจฒเจฏเฉ‚ เจฆเฉ‡ เจจเจพเจฒ เจ…เจ—เจฒเจพ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ (เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจจเจพเจฒ เจฐเจฟเจ•เจพเจฐเจก เจšเฉเจฃเฉ‹ update_time, เจชเจนเจฟเจฒเจพเจ‚ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจฎเฉเฉฑเจฒ เจคเฉ‹เจ‚ เจตเฉฑเจง)เฅค เจฌเจพเจ…เจฆ เจฆเฉ‡ เจชเจนเฉเฉฐเจš เจจเจพเจฒ เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจกเจพเจŸเจพ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฌเฉˆเจšเจพเจ‚ เจตเจฟเฉฑเจš เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ•เจพเจฒเจฎ เจตเจฟเฉฑเจš เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ update_time เจตเจฟเจฒเฉฑเจ–เจฃ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเจพเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจ‡เจน เจ•เจพเจฒเจฎ เจญเจพเจ—เจพเจ‚ เจตเจพเจฒเฉ‡ (เจชเฉฐเจจเฉ‡-เจฆเจฐ-เจชเฉฐเจจเฉ‡) เจกเฉ‡เจŸเจพ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฒเจˆ เจจเจนเฉ€เจ‚ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจชเฉฐเจจเฉ‡ เจฆเฉเจ†เจฐเจพ เจกเฉ‡เจŸเจพ เจชเฉ‡เจœ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเจพเจงเฉ‚ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ€ เจ•เจพเจข เจ•เฉฑเจขเจฃเฉ€ เจชเจตเฉ‡เจ—เฉ€ เจœเจฟเจธเจฆเฉ€ เจธเฉฐเจญเจพเจตเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจ•เฉเจธเจผเจฒเจคเจพ เจนเฉ‹เจตเฉ‡เจ—เฉ€ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเฉ‹เจ‚ เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจจเจพเจฒ เจธเจพเจฐเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ update_time เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจ…เจคเฉ‡ เจจเจฎเฉ‚เจจเฉ‡ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจ”เจซเจธเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจธเฉฐเจ–เจฟเจ† เจชเฉˆเจฆเจพ เจ•เจฐเจจเจพ)เฅค

เจคเฉเจธเฉ€เจ‚ เจชเจฟเจ›เจฒเฉ€ เจชเจนเฉเฉฐเจš เจตเจฟเฉฑเจš เจฅเฉ‹เฉœเฉเจนเจพ เจธเฉเจงเจพเจฐ เจ•เจฐเจ•เฉ‡ เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจฆเฉ€ เจ•เฉเจธเจผเจฒเจคเจพ เจตเจฟเฉฑเจš เจธเฉเจงเจพเจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจ•เจฐเจจ เจฒเจˆ เจ•เจพเจฒเจฎ เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒเจพเจ‚ เจตเจœเฉ‹เจ‚ เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• เจ•เจฟเจธเจฎ (เจฒเฉฐเจฌเฉ‡ เจชเฉ‚เจฐเจจ เจ…เฉฐเจ•) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจ†เจ“ เจ•เจพเจฒเจฎ เจฆเจพ เจจเจพเจฎ เจฆเฉ‡เจˆเจ row_ver. เจ‡เจธ เจ•เจพเจฒเจฎ เจฆเจพ เจ–เฉ‡เจคเจฐ เจฎเฉเฉฑเจฒ เจ…เจœเฉ‡ เจตเฉ€ เจนเจฐ เจตเจพเจฐ เจฐเจฟเจ•เจพเจฐเจก เจฌเจฃเจพเจ‰เจฃ/เจธเฉ‹เจงเจฃ 'เจคเฉ‡ เจธเฉˆเฉฑเจŸ/เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจชเจฐ เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ–เฉ‡เจคเจฐ เจจเฉ‚เฉฐ เจฎเฉŒเจœเฉ‚เจฆเจพ เจฎเจฟเจคเฉ€-เจธเจฎเจพเจ‚ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ, เจชเจฐ เจ•เฉเจ เจ•เจพเจŠเจ‚เจŸเจฐ เจฆเจพ เจฎเฉเฉฑเจฒ, เจ‡เฉฑเจ• เจฆเฉเจ†เจฐเจพ เจตเจงเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ•เจพเจฒเจฎ row_ver เจตเจฟเจฒเฉฑเจ–เจฃ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจจเจพ เจธเจฟเจฐเจซเจผ "เจกเฉˆเจฒเจŸเจพ" เจกเฉ‡เจŸเจพ (เจชเจฟเจ›เจฒเฉ‡ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจฆเฉ‡ เจ…เฉฐเจค เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจœเฉ‹เฉœเจฟเจ†/เจฌเจฆเจฒเจฟเจ† เจ—เจฟเจ† เจกเฉ‡เจŸเจพ) เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจธเจ—เฉ‹เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉฐเจจเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจตเฉฐเจกเจฃ เจฒเจˆ เจตเฉ€ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ‡ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฆเจพ เจ†เจ–เจฐเฉ€ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจคเจฐเฉ€เจ•เจพ เจฎเฉˆเจจเฉ‚เฉฐ เจธเจญ เจคเฉ‹เจ‚ เจ…เจจเฉเจ•เฉ‚เจฒ เจ…เจคเฉ‡ เจธเจฐเจต เจตเจฟเจ†เจชเจ• เจœเจพเจชเจฆเจพ เจนเฉˆ. เจ†เจ‰ เจ‡เจธ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจตเฉ‡เจ–เฉ€เจ.

เจ‡เฉฑเจ• เจ•เจคเจพเจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจ•เจพเจŠเจ‚เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจกเฉ‡เจŸเจพ เจชเจพเจธ เจ•เจฐเจจเจพ

เจธเจฐเจตเจฐ/เจฎเจพเจธเจŸเจฐ เจญเจพเจ— เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ

MS SQL เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš, เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจ•เจพเจฒเจฎ เจ•เจฟเจธเจฎ เจนเฉˆ - rowversion. เจนเจฐเฉ‡เจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจพเจŠเจ‚เจŸเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจนเจฐ เจตเจพเจฐ เจ‡เฉฑเจ• เจฐเจฟเจ•เจพเจฐเจก เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ†/เจฌเจฆเจฒเจฃ 'เจคเฉ‡ เจตเจงเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจพเจฒเจฎ เจนเฉเฉฐเจฆเจพ เจนเฉˆ rowversion. เจ‡เจธ เจ•เจพเจŠเจ‚เจŸเจฐ เจฆเจพ เจฎเฉเฉฑเจฒ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจœเฉ‹เฉœเจฟเจ†/เจฌเจฆเจฒเจฟเจ† เจฐเจฟเจ•เจพเจฐเจก เจตเจฟเฉฑเจš เจ‡เจธ เจ•เจพเจฒเจฎ เจฆเฉ‡ เจ–เฉ‡เจคเจฐ เจจเฉ‚เฉฐ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค Tarantool DBMS เจตเจฟเฉฑเจš เจธเจฎเจพเจจ เจฌเจฟเจฒเจŸ-เจ‡เจจ เจตเจฟเจงเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจคเจฐเจจเจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจ‡เจธเจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจฎเฉเจธเจผเจ•เจฒ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ.

เจชเจนเจฟเจฒเจพเจ‚, เจฅเฉ‹เฉœเฉ€ เจœเจฟเจนเฉ€ เจธเจผเจฌเจฆเจพเจตเจฒเฉ€: เจŸเจพเจฐเจจเจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจŸเฉ‡เจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจชเฉ‡เจธ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจŸเฉ‚เจชเจฒเจœเจผ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค Tarantool เจตเจฟเฉฑเจš เจคเฉเจธเฉ€เจ‚ เจ•เฉเจฐเจฎ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ•เฉเจฐเจฎ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจจเจพเจฎ เจตเจพเจฒเฉ‡ เจœเจจเจฐเฉ‡เจŸเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจง เจ•เฉเจ เจจเจนเฉ€เจ‚ เจนเจจเฅค เจ‰เจน. เจ‡เจน เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเฉ€ เจนเฉˆ เจœเจฟเจธเจฆเฉ€ เจธเจพเจจเฉ‚เฉฐ เจธเจพเจกเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจนเฉ‡เจ เจพเจ‚ เจ…เจธเฉ€เจ‚ เจ…เจœเจฟเจนเจพ เจ•เฉเจฐเจฎ เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡เฅค

Tarantool เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจตเฉ€ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจ•เจพเจฐเจตเจพเจˆ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

box.cfg{}

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, Tarantool เจฎเฉŒเจœเฉ‚เจฆเจพ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจธเจจเฉˆเจชเจธเจผเจพเจŸ เจ…เจคเฉ‡ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจฒเฉŒเจ— เจฒเจฟเจ–เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค

เจ†เจ‰ เจ‡เฉฑเจ• เจ•เฉเจฐเจฎ เจฌเจฃเจพเจ‰ row_version:

box.schema.sequence.create('row_version',
    { if_not_exists = true })

เจตเจฟเจ•เจฒเจช if_not_exists เจฐเจšเจจเจพ เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจ•เจˆ เจตเจพเจฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ: เจœเฉ‡เจ•เจฐ เจ†เจฌเจœเฉˆเจ•เจŸ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ, เจคเจพเจ‚ Tarantool เจ‡เจธเจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เจน เจตเจฟเจ•เจฒเจช เจธเจพเจฐเฉ€เจ†เจ‚ เจ…เจ—เจฒเฉ€เจ†เจ‚ DDL เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

เจ†เจ‰ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจธเจชเฉ‡เจธ เจฌเจฃเจพเจˆเจเฅค

box.schema.space.create('goods', {
    format = {
        {
            name = 'id',
            type = 'unsigned'

        },
        {
            name = 'name',
            type = 'string'

        },
        {
            name = 'code',
            type = 'unsigned'

        },
        {
            name = 'row_ver',
            type = 'unsigned'

        }
    },
    if_not_exists = true
})

เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจธเจชเฉ‡เจธ เจฆเจพ เจจเจพเจฎ เจธเฉˆเฉฑเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ (goods), เจ–เฉ‡เจคเจฐ เจฆเฉ‡ เจจเจพเจฎ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ•เจฟเจธเจฎเจพเจ‚เฅค

เจคเจฐเจจเจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจธเจตเฉˆ-เจตเจงเจพเจ‰เจฃ เจตเจพเจฒเฉ‡ เจ–เฉ‡เจคเจฐ เจตเฉ€ เจ•เฉเจฐเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฌเจฃเจพเจ เจ—เจ เจนเจจเฅค เจ†เจ‰ เจซเฉ€เจฒเจก เจฆเฉเจ†เจฐเจพ เจ‡เฉฑเจ• เจ†เจŸเฉ‹-เจ‡เจจเจ•เจฐเฉ€เจฎเฉˆเจ‚เจŸ เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจฌเจฃเจพเจˆเจ id:

box.schema.sequence.create('goods_id',
    { if_not_exists = true })
box.space.goods:create_index('primary', {
    parts = { 'id' },
    sequence = 'goods_id',
    unique = true,
    type = 'HASH',
    if_not_exists = true
})

Tarantool เจ•เจˆ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจตเจฐเจคเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• TREE เจ…เจคเฉ‡ HASH เจ•เจฟเจธเจฎเจพเจ‚ เจนเจจ, เจœเฉ‹ เจ•เจฟ เจจเจพเจฎ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฌเจฃเจคเจฐเจพเจ‚ 'เจคเฉ‡ เจ†เจงเจพเจฐเจฟเจค เจนเจจเฅค TREE เจธเจญ เจคเฉ‹เจ‚ เจฌเจนเฉเจฎเฉเจ–เฉ€ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจ•เจฟเจธเจฎ เจนเฉˆเฅค เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉฐเจ—เจ เจฟเจค เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจกเจพเจŸเจพ เจฎเฉเฉœ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจธเจนเจพเจ‡เจ• เจนเฉˆ. เจชเจฐ เจธเจฎเจพเจจเจคเจพ เจฆเฉ€ เจšเฉ‹เจฃ เจฒเจˆ, เจนเฉˆเจธเจผ เจตเจงเฉ‡เจฐเฉ‡ เจขเฉเจ•เจตเจพเจ‚ เจนเฉˆ. เจ‡เจธ เจ…เจจเฉเจธเจพเจฐ, เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจฒเจˆ เจนเฉˆเจธเจผ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจธเจฒเจพเจน เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ (เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ•เฉ€เจคเจพ เจธเฉ€)เฅค

เจ•เจพเจฒเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ row_ver เจฌเจฆเจฒเจฟเจ† เจกเจพเจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจ•เจพเจฒเจฎ เจฆเฉ‡ เจ–เฉ‡เจคเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉเจฐเจฎ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฌเฉฐเจจเฉเจนเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ row_ver. เจชเจฐ เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ‡ เจ‰เจฒเจŸ, เจ•เจพเจฒเจฎ เจ–เฉ‡เจคเจฐ เจฎเฉเฉฑเจฒ row_ver เจจเจพ เจธเจฟเจฐเจซเจผ เจจเจตเฉ‡เจ‚ เจฐเจฟเจ•เจพเจฐเจก เจœเฉ‹เฉœเจจ เจตเฉ‡เจฒเฉ‡, เจธเจ—เฉ‹เจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจตเฉ‡เจฒเฉ‡ เจตเฉ€ เจ‡เฉฑเจ• เจตเจพเจงเจพ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจŸเจฐเจฟเจ—เจฐเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค Tarantool เจตเจฟเฉฑเจš เจฆเฉ‹ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจธเจชเฉ‡เจธ เจŸเจฐเจฟเจ—เจฐ เจนเจจ: before_replace ะธ on_replace. เจœเจฆเฉ‹เจ‚ เจตเฉ€ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฌเจฆเจฒเจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจŸเจฐเจฟเจ—เจฐ เจซเจพเจ‡เจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ (เจชเจฐเจฟเจตเจฐเจคเจจเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจญเจพเจตเจฟเจค เจนเจฐเฉ‡เจ• เจŸเฉ‚เจชเจฒ เจฒเจˆ, เจ‡เฉฑเจ• เจŸเจฐเจฟเฉฑเจ—เจฐ เจซเฉฐเจ•เจธเจผเจจ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ)เฅค เจ‰เจฒเจŸ on_replace, before_replace-เจŸเฉเจฐเจฟเจ—เจฐเจธ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจŸเฉ‚เจชเจฒ เจฆเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเฉฐเจธเจผเฉ‹เจงเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ เจœเจฟเจธ เจฒเจˆ เจŸเจฐเจฟเฉฑเจ—เจฐ เจšเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจ…เจจเฉเจธเจพเจฐ, เจ†เจ–เจฐเฉ€ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจŸเจฐเจฟเจ—เจฐ เจธเจพเจกเฉ‡ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒ เจนเจจ.

box.space.goods:before_replace(function(old, new)
    return box.tuple.new({new[1], new[2], new[3],
        box.sequence.row_version:next()})
end)

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเจพ เจŸเจฐเจฟเฉฑเจ—เจฐ เจ–เฉ‡เจคเจฐ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเจพ เจนเฉˆ row_ver เจ•เฉเจฐเจฎ เจฆเฉ‡ เจ…เจ—เจฒเฉ‡ เจฎเฉเฉฑเจฒ เจคเฉฑเจ• เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ tuple row_version.

เจธเจชเฉ‡เจธ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจฒเจˆ goods เจ•เจพเจฒเจฎ เจฆเฉเจ†เจฐเจพ row_ver, เจ†เจ“ เจ‡เฉฑเจ• เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฌเจฃเจพเจˆเจ:

box.space.goods:create_index('row_ver', {
    parts = { 'row_ver' },
    unique = true,
    type = 'TREE',
    if_not_exists = true
})

เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจ•เจฟเจธเจฎ - เจฐเฉเฉฑเจ– (TREE), เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจ•เจพเจฒเจฎ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจตเจงเจฆเฉ‡ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€ row_ver.

เจ†เจ‰ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจ•เฉเจ เจกเฉ‡เจŸเจพ เจœเฉ‹เฉœเฉ€เจ:

box.space.goods:insert{nil, 'pen', 123}
box.space.goods:insert{nil, 'pencil', 321}
box.space.goods:insert{nil, 'brush', 100}
box.space.goods:insert{nil, 'watercolour', 456}
box.space.goods:insert{nil, 'album', 101}
box.space.goods:insert{nil, 'notebook', 800}
box.space.goods:insert{nil, 'rubber', 531}
box.space.goods:insert{nil, 'ruler', 135}

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเจนเจฟเจฒเจพ เจซเฉ€เจฒเจก เจ‡เฉฑเจ• เจ†เจŸเฉ‹-เจ‡เจจเจ•เจฐเฉ€เจฎเฉˆเจ‚เจŸ เจ•เจพเจŠเจ‚เจŸเจฐ เจนเฉˆ; เจ…เจธเฉ€เจ‚ เจ‡เจธเจฆเฉ€ เจฌเจœเจพเจ nil เจชเจพเจธ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค Tarantool เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจ…เจ—เจฒเฉ‡ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚, เจ•เจพเจฒเจฎ เจ–เฉ‡เจคเจฐเจพเจ‚ เจฆเฉ‡ เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš row_ver เจคเฉเจธเฉ€เจ‚ nil เจชเจพเจธ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ - เจœเจพเจ‚ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจฌเจฟเจฒเจ•เฉเจฒ เจจเจนเฉ€เจ‚ เจฆเฉฑเจธ เจธเจ•เจฆเฉ‡, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจ•เจพเจฒเจฎ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจ†เจ–เจฐเฉ€ เจธเจฅเจพเจจ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค

เจ†เจ‰ เจธเฉฐเจฎเจฟเจฒเจจ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ€เจ:

tarantool> box.space.goods:select()
---
- - [1, 'pen', 123, 1]
  - [2, 'pencil', 321, 2]
  - [3, 'brush', 100, 3]
  - [4, 'watercolour', 456, 4]
  - [5, 'album', 101, 5]
  - [6, 'notebook', 800, 6]
  - [7, 'rubber', 531, 7]
  - [8, 'ruler', 135, 8]
...

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจตเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจนเจฟเจฒเฉ‡ เจ…เจคเฉ‡ เจ†เจ–เจฐเฉ€ เจ–เฉ‡เจคเจฐ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ•เจฒเฉ€ เจญเจฐเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ. เจนเฉเจฃ เจธเจชเฉ‡เจธ เจฌเจฆเจฒเจพเจ… เจฆเฉ‡ เจชเฉฐเจจเฉ‡-เจฆเจฐ-เจชเฉฐเจจเฉ‡ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจซเฉฐเจ•เจธเจผเจจ เจฒเจฟเจ–เจฃเจพ เจ†เจธเจพเจจ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพ goods:

local page_size = 5
local function get_goods(row_ver)
    local index = box.space.goods.index.row_ver
    local goods = {}
    local counter = 0
    for _, tuple in index:pairs(row_ver, {
        iterator = 'GT' }) do
        local obj = tuple:tomap({ names_only = true })
        table.insert(goods, obj)
        counter = counter + 1
        if counter >= page_size then
            break
        end
    end
    return goods
end

เจซเฉฐเจ•เจธเจผเจจ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเจœเฉ‹เจ‚ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ row_ver, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจฆเจฒเจพเจต เจจเฉ‚เฉฐ เจ…เจจเจฒเฉ‹เจก เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฌเจฆเจฒเฉ‡ เจนเฉ‹เจ เจกเฉ‡เจŸเจพ เจฆเจพ เจ‡เฉฑเจ• เจนเจฟเฉฑเจธเจพ เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจคเจฐเจจเจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจธเฉˆเจ‚เจชเจฒเจฟเฉฐเจ— เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจซเฉฐเจ•เจธเจผเจจ get_goods เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉเจ†เจฐเจพ เจ‡เฉฑเจ• เจ‡เจŸเจฐเฉ‡เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ row_ver เจฌเจฆเจฒเจฟเจ† เจกเจพเจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ. เจ‡เจŸเจฐเฉ‡เจŸเจฐ เจฆเฉ€ เจ•เจฟเจธเจฎ GT (เจ‡เจธ เจคเฉ‹เจ‚ เจตเฉฑเจง, เจ‡เจธ เจคเฉ‹เจ‚ เจตเฉฑเจง) เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจ‡เจน เจนเฉˆ เจ•เจฟ เจฆเฉเจนเจฐเจพเจ“ เจ•เฉเจฐเจฎเจตเจพเจฐ เจชเจพเจธ เจ•เฉ€เจคเฉ€ เจ•เฉเฉฐเจœเฉ€ (เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒ) เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจตเจพเจฒเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐ เจ•เจฐเฉ‡เจ—เจพ row_ver).

เจฆเฉเจนเจฐเจพเจ‰เจฃ เจตเจพเจฒเจพ เจŸเฉ‚เจชเจฒ เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš HTTP เจฆเฉเจ†เจฐเจพ เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจฒเจˆ, เจŸเฉ‚เจชเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจพเจ…เจฆ เจฆเฉ‡ เจธเฉ€เจฐเฉ€เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจฒเจˆ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจฃ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ tomap. เจตเจฐเจคเจฃ เจฆเฉ€ เจฌเจœเจพเจ tomap เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเจพ เจซเฉฐเจ•เจธเจผเจจ เจฒเจฟเจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ–เฉ‡เจคเจฐ เจฆเจพ เจจเจพเจฎ เจฌเจฆเจฒเจฃเจพ เจšเจพเจน เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ name, เจ–เฉ‡เจคเจฐ เจจเฉ‚เฉฐ เจชเจพเจธ เจจเจพ เจ•เจฐเฉ‹ code เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ–เฉ‡เจคเจฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹ comment:

local function unflatten_goods(tuple)
    local obj = {}
    obj.id = tuple.id
    obj.goods_name = tuple.name
    obj.comment = 'some comment'
    obj.row_ver = tuple.row_ver
    return obj
end

เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจกเฉ‡เจŸเจพ เจฆเจพ เจชเฉฐเจจเจพ เจ†เจ•เจพเจฐ (เจ‡เฉฑเจ• เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€) เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ page_size. เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจฒ page_size 5 เจนเฉˆ. เจ‡เฉฑเจ• เจ…เจธเจฒ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจตเจฟเฉฑเจš, เจชเฉฐเจจเฉ‡ เจฆเจพ เจ†เจ•เจพเจฐ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจธเจชเฉ‡เจธ เจŸเฉ‚เจชเจฒ เจฆเฉ‡ เจ”เจธเจค เจ†เจ•เจพเจฐ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ…เจจเฉเจ•เฉ‚เจฒ เจชเฉฐเจจเฉ‡ เจฆเจพ เจ†เจ•เจพเจฐ เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจธเจฎเฉ‡เจ‚ เจจเฉ‚เฉฐ เจฎเจพเจช เจ•เฉ‡ เจ…เจจเฉเจญเจตเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจชเฉฐเจจเฉ‡ เจฆเจพ เจ†เจ•เจพเจฐ เจœเจฟเฉฐเจจเจพ เจตเฉฑเจกเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจญเฉ‡เจœเจฃ เจ…เจคเฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจชเจพเจธเจฟเจ†เจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจฐเจพเจŠเจ‚เจกเจŸเจฐเจฟเจช เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ“เจจเฉ€ เจนเฉ€ เจ˜เฉฑเจŸ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจธเจฎเฉเฉฑเจšเจพ เจธเจฎเจพเจ‚ เจ˜เจŸเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจœเฉ‡เจ•เจฐ เจชเฉฐเจจเฉ‡ เจฆเจพ เจ†เจ•เจพเจฐ เจฌเจนเฉเจค เจตเฉฑเจกเจพ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจจเจฎเฉ‚เจจเฉ‡ เจจเฉ‚เฉฐ เจธเฉ€เจฐเฉ€เจ…เจฒ เจ•เจฐเจจ เจฒเจˆ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจฌเจนเฉเจค เจฒเฉฐเจฎเจพ เจธเจฎเจพเจ‚ เจฌเจฟเจคเจพเจตเจพเจ‚เจ—เฉ‡เฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ†เจ‰เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจนเฉ‹เจฐ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฆเฉ‡เจฐเฉ€ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ page_size เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจคเฉ‹เจ‚ เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจนเจฐเฉ‡เจ• เจชเฉเจฐเจธเจพเจฐเจฟเจค เจธเจชเฉ‡เจธ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเจพ เจ†เจชเจฃเจพ เจฎเฉเฉฑเจฒ เจธเฉˆเฉฑเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเจชเฉ‡เจธ เจฒเจˆ เจกเจฟเจซเจพเจฒเจŸ เจฎเฉเฉฑเจฒ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, 100) เจขเฉเจ•เจตเจพเจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ†เจ‰ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸ เจ•เจฐเฉ€เจ get_goods:

tarantool> get_goods(0)

---
- - row_ver: 1
    code: 123
    name: pen
    id: 1
  - row_ver: 2
    code: 321
    name: pencil
    id: 2
  - row_ver: 3
    code: 100
    name: brush
    id: 3
  - row_ver: 4
    code: 456
    name: watercolour
    id: 4
  - row_ver: 5
    code: 101
    name: album
    id: 5
...

เจ†เจ‰ เจซเฉ€เจฒเจก เจตเฉˆเจฒเจฏเฉ‚ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚ row_ver เจ†เจ–เจฐเฉ€ เจฒเจพเจˆเจจ เจคเฉ‹เจ‚ เจ…เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจ•เจพเจฒ เจ•เจฐเฉ‹:

tarantool> get_goods(5)

---
- - row_ver: 6
    code: 800
    name: notebook
    id: 6
  - row_ver: 7
    code: 531
    name: rubber
    id: 7
  - row_ver: 8
    code: 135
    name: ruler
    id: 8
...

เจ‡เฉฑเจ• เจตเจพเจฐ เจซเจฟเจฐ เจคเฉ‹เจ‚:

tarantool> get_goods(8)
---
- []
...

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจตเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเจฆเฉ‹เจ‚ เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจซเฉฐเจ•เจธเจผเจจ เจธเจพเจฐเฉ‡ เจธเจชเฉ‡เจธ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉฐเจจเฉ‡ เจฆเฉ‡ เจนเจฟเจธเจพเจฌ เจจเจพเจฒ เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆ goods. เจ†เจ–เจฐเฉ€ เจชเฉฐเจจเฉ‡ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‡เฉฑเจ• เจ–เจพเจฒเฉ€ เจšเฉ‹เจฃ เจนเฉˆเฅค

เจ†เจ‰ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจพเจ… เจ•เจฐเฉ€เจ:

box.space.goods:update(4, {{'=', 6, 'copybook'}})
box.space.goods:insert{nil, 'clip', 234}
box.space.goods:insert{nil, 'folder', 432}

เจ…เจธเฉ€เจ‚ เจ–เฉ‡เจคเจฐ เจฎเฉเฉฑเจฒ เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ เจนเฉˆ name เจ‡เฉฑเจ• เจเจ‚เจŸเจฐเฉ€ เจฒเจˆ เจ…เจคเฉ‡ เจฆเฉ‹ เจจเจตเฉ€เจ†เจ‚ เจเจ‚เจŸเจฐเฉ€เจ†เจ‚ เจœเฉ‹เฉœเฉ€เจ†เจ‚เฅค

เจšเจฒเฉ‹ เจ†เจ–เจฐเฉ€ เจซเฉฐเจ•เจธเจผเจจ เจ•เจพเจฒ เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ“:

tarantool> get_goods(8)
---



- - row_ver: 9
    code: 800
    name: copybook
    id: 6
  - row_ver: 10
    code: 234
    name: clip
    id: 9
  - row_ver: 11
    code: 432
    name: folder
    id: 10
...

เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‡ เจฌเจฆเจฒเจฟเจ† เจ…เจคเฉ‡ เจœเฉ‹เฉœเจฟเจ† เจฐเจฟเจ•เจพเจฐเจก เจตเจพเจชเจธ เจ•เจฐ เจฆเจฟเฉฑเจคเจพเฅค เจ‡เจธ เจฒเจˆ เจซเฉฐเจ•เจธเจผเจจ get_goods เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเจพเจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‡เจธเจฆเฉ€ เจชเจฟเจ›เจฒเฉ€ เจ•เจพเจฒ เจคเฉ‹เจ‚ เจฌเจฆเจฒเจฟเจ† เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจตเจฟเจšเจพเจฐ เจ…เจงเฉ€เจจ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจตเจฟเจงเฉ€ เจฆเจพ เจ†เจงเจพเจฐ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฒเฉ‡เจ– เจฆเฉ‡ เจฆเจพเจ‡เจฐเฉ‡ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ JSON เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš HTTP เจฐเจพเจนเฉ€เจ‚ เจจเจคเฉ€เจœเฉ‡ เจœเจพเจฐเฉ€ เจ•เจฐเจจ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจฆเฉ‡เจตเจพเจ‚เจ—เฉ‡เฅค เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹: https://habr.com/ru/company/mailru/blog/272141/

เจ•เจฒเจพเจ‡เฉฐเจŸ/เจธเจฒเฉ‡เจต เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ

เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจชเจพเจธเฉ‡ เจฆเจพ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจ•เจฟเจนเฉ‹ เจœเจฟเจนเจพ เจฆเจฟเจธเจฆเจพ เจนเฉˆเฅค เจ†เจ‰ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจชเจพเจธเฉ‡ เจ‡เฉฑเจ• เจฅเจพเจ‚ เจฌเจฃเจพเจˆเจ:

box.schema.space.create('goods', {
    format = {
        {
            name = 'id',
            type = 'unsigned'

        },
        {
            name = 'name',
            type = 'string'

        },
        {
            name = 'code',
            type = 'unsigned'

        }
    },
    if_not_exists = true
})

box.space.goods:create_index('primary', {
    parts = { 'id' },
    sequence = 'goods_id',
    unique = true,
    type = 'HASH',
    if_not_exists = true
})

เจธเจชเฉ‡เจธ เจฆเฉ€ เจฌเจฃเจคเจฐ เจธเจฐเฉ‹เจค เจตเจฟเฉฑเจš เจธเจชเฉ‡เจธ เจฆเฉ€ เจฌเจฃเจคเจฐ เจตเจฐเจ—เฉ€ เจนเฉˆเฅค เจชเจฐ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจ•เจฟเจคเฉ‡ เจตเฉ€ เจชเจพเจธ เจจเจนเฉ€เจ‚ เจ•เจฐเจจ เจœเจพ เจฐเจนเฉ‡ เจนเจพเจ‚, เจ•เจพเจฒเจฎ row_ver เจชเฉเจฐเจพเจชเจคเจ•เจฐเจคเจพ เจฆเฉ€ เจฅเจพเจ‚ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš id เจธเจฐเฉ‹เจค เจชเจ›เจพเจฃเจ•เจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฐเจฟเจ•เจพเจฐเจก เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจฒเจˆ, เจฐเจฟเจธเฉ€เจตเจฐ เจตเจพเจฒเฉ‡ เจชเจพเจธเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจธเจตเฉˆ-เจตเจงเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ.

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจธเจพเจจเฉ‚เฉฐ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจšเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจฅเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ row_ver:

box.schema.space.create('row_ver', {
    format = {
        {
            name = 'space_name',
            type = 'string'

        },
        {
            name = 'value',
            type = 'string'

        }
    },
    if_not_exists = true
})

box.space.row_ver:create_index('primary', {
    parts = { 'space_name' },
    unique = true,
    type = 'HASH',
    if_not_exists = true
})

เจนเจฐเฉ‡เจ• เจฒเฉ‹เจก เจ•เฉ€เจคเฉ€ เจฅเจพเจ‚ เจฒเจˆ (เจซเฉ€เจฒเจก space_name) เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจฅเฉ‡ เจ†เจ–เจฐเฉ€ เจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจพเจ‚เจ—เฉ‡ row_ver (เจซเฉ€เจฒเจก value). เจ•เจพเจฒเจฎ เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ space_name.

เจ†เจ‰ เจธเจชเฉ‡เจธ เจกเฉ‡เจŸเจพ เจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจฌเจฃเจพเจˆเจ goods HTTP เจฆเฉเจ†เจฐเจพ. เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ• HTTP เจ•เจฒเจพเจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจฒเจพเจˆเจจ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ HTTP เจ•เจฒเจพเจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจšเจพเจฒเฉ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ:

local http_client = require('http.client').new()

เจธเจพเจจเฉ‚เฉฐ json เจกเฉ€เจธเฉ€เจฐเฉ€เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

local json = require('json')

เจ‡เจน เจ‡เฉฑเจ• เจกเจพเจŸเจพ เจฒเฉ‹เจกเจฟเฉฐเจ— เจซเฉฐเจ•เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เจพเจซเฉ€ เจนเฉˆ:

local function load_data(url, row_ver)
    local url = ('%s?rowVer=%s'):format(url,
        tostring(row_ver))
    local body = nil
    local data = http_client:request('GET', url, body, {
        keepalive_idle =  1,
        keepalive_interval = 1
    })
    return json.decode(data.body)
end

เจซเฉฐเจ•เจธเจผเจจ url เจชเจคเฉ‡ เจคเฉ‡ เจ‡เฉฑเจ• HTTP เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจญเฉ‡เจœเจฆเจพ เจนเฉˆ row_ver เจ‡เฉฑเจ• เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจคเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจฆเจพ เจกเฉ€เจธเฉ€เจฐเฉ€เจ…เจฒเจพเจˆเจœเจผเจก เจจเจคเฉ€เจœเจพ เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจชเฉเจฐเจพเจชเจค เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจ เจฒเจˆ เจซเฉฐเจ•เจธเจผเจจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ:

local function save_goods(goods)
    local n = #goods
    box.atomic(function()
        for i = 1, n do
            local obj = goods[i]
            box.space.goods:put(
                obj.id, obj.name, obj.code)
        end
    end)
end

เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจกเจพเจŸเจพ เจฌเจšเจพเจ‰เจฃ เจฆเจพ เจšเฉฑเจ•เจฐ goods เจ‡เฉฑเจ• เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฟเจ† เจ—เจฟเจ† (เจ‡เจธ เจฒเจˆ เจซเฉฐเจ•เจธเจผเจจ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ box.atomic) เจกเจฟเจธเจ• เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฒเจˆ.

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจธเจฅเจพเจจเจ• เจธเจชเฉ‡เจธ เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจซเฉฐเจ•เจธเจผเจจ goods เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฒเจพเจ—เฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

local function sync_goods()
    local tuple = box.space.row_ver:get('goods')
    local row_ver = tuple and tuple.value or 0

    โ€”โ€” set your url here:
    local url = 'http://127.0.0.1:81/test/goods/list'

    while true do
        local goods = load_goods(url, row_ver)

        local count = #goods
        if count == 0 then
            return
        end

        save_goods(goods)

        row_ver = goods[count].rowVer
        box.space.row_ver:put({'goods', row_ver})
    end
end

เจชเจนเจฟเจฒเจพเจ‚ เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจธเฉ‡เจต เจ•เฉ€เจคเฉ‡ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจฆเฉ‡ เจนเจพเจ‚ row_ver เจธเจชเฉ‡เจธ เจฒเจˆ goods. เจœเฉ‡เจ•เจฐ เจ‡เจน เจ—เฉเฉฐเจฎ เจนเฉˆ (เจชเจนเจฟเจฒเจพ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ), เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚ row_ver เจœเจผเฉ€เจฐเฉ‹ เจ…เฉฑเจ—เฉ‡ เจšเฉฑเจ•เจฐ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจจเจฟเจธเจผเจšเจฟเจค url 'เจคเฉ‡ เจธเจฐเฉ‹เจค เจคเฉ‹เจ‚ เจฌเจฆเจฒเฉ‡ เจ—เจ เจกเฉ‡เจŸเจพ เจฆเจพ เจชเฉฐเจจเจพ-เจฆเจฐ-เจชเฉฐเจจเจพ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจนเจฐเฉ‡เจ• เจฆเฉเจนเจฐเจพเจ… 'เจคเฉ‡, เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ‰เจšเจฟเจค เจธเจฅเจพเจจเจ• เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ row_ver (เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš row_ver เจ…เจคเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจตเจฟเฉฑเจš row_ver) - เจฎเฉเฉฑเจฒ เจฒเจตเฉ‹ row_ver เจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ†เจ–เจฐเฉ€ เจฒเจพเจˆเจจ เจคเฉ‹เจ‚เฅค

เจฆเฉเจฐเจ˜เจŸเจจเจพเจคเจฎเจ• เจฒเฉ‚เจชเจฟเฉฐเจ— (เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš) เจคเฉ‹เจ‚ เจฌเจšเจพเจ‰เจฃ เจฒเจˆ, เจฒเฉ‚เจช while เจฆเฉเจ†เจฐเจพ เจฌเจฆเจฒเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ for:

for _ = 1, max_req do ...

เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ sync_goods เจธเจชเฉ‡เจธ goods เจชเฉเจฐเจพเจชเจคเจ•เจฐเจคเจพ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจธเจชเฉ‡เจธ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเฉ‡ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃเจ—เฉ‡ goods เจธเจฐเฉ‹เจค เจตเจฟเฉฑเจš.

เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ, เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจกเจพเจŸเจพ เจฎเจฟเจŸเจพเจ‰เจฃ เจฆเจพ เจชเฉเจฐเจธเจพเจฐเจฃ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ…เจœเจฟเจนเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจฎเจฟเจŸเจพเจ‰เจฃ เจฆเฉ‡ เจจเจฟเจธเจผเจพเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹ goods เจฌเฉ‚เจฒเฉ€เจ…เจจ เจ–เฉ‡เจคเจฐ is_deleted เจ…เจคเฉ‡ เจฐเจฟเจ•เจพเจฐเจก เจจเฉ‚เฉฐ เจญเฉŒเจคเจฟเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจฎเจฟเจŸเจพเจ‰เจฃ เจฆเฉ€ เจฌเจœเจพเจ, เจ…เจธเฉ€เจ‚ เจฒเจพเจœเจผเฉ€เจ•เจฒ เจฎเจฟเจŸเจพเจ‰เจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ - เจ…เจธเฉ€เจ‚ เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒ เจธเฉˆเฉฑเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ is_deleted เจ…เจฐเจฅ เจตเจฟเฉฑเจš true. เจ•เจˆ เจตเจพเจฐ เจฌเฉ‚เจฒเฉ€เจ…เจจ เจซเฉ€เจฒเจก เจฆเฉ€ เจฌเจœเจพเจ is_deleted เจ–เฉ‡เจคเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจตเจงเฉ‡เจฐเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ deleted, เจœเฉ‹ เจ•เจฟ เจฐเจฟเจ•เจพเจฐเจก เจฆเฉ‡ เจฒเจพเจœเจผเฉ€เจ•เจฒ เจฎเจฟเจŸเจพเจ‰เจฃ เจฆเฉ€ เจฎเจฟเจคเฉ€-เจธเจฎเฉ‡เจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฒเจพเจœเจผเฉ€เจ•เจฒ เจกเจฟเจฒเฉ€เจŸ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฎเจฟเจŸเจพเจ‰เจฃ เจฒเจˆ เจฎเจพเจฐเจ• เจ•เฉ€เจคเฉ‡ เจฐเจฟเจ•เจพเจฐเจก เจจเฉ‚เฉฐ เจธเจฐเฉ‹เจค เจคเฉ‹เจ‚ เจฎเฉฐเจœเจผเจฟเจฒ เจคเฉฑเจ• เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ (เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ‡ เจ—เจ เจคเจฐเจ• เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ)เฅค

เจ•เฉเจฐเจฎ row_ver เจนเฉ‹เจฐ เจธเจชเฉ‡เจธ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ: เจนเจฐเฉ‡เจ• เจชเฉเจฐเจธเจพเจฐเจฟเจค เจธเจชเฉ‡เจธ เจฒเจˆ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจ•เฉเจฐเจฎ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ Tarantool DBMS เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจกเจพเจŸเจพ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเจญเจพเจตเฉ€ เจคเจฐเฉ€เจ•เฉ‡ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฟเจ†เฅค

เจธเจฟเฉฑเจŸเจพ

  1. Tarantool DBMS เจ‰เฉฑเจš-เจฒเฉ‹เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจ†เจ•เจฐเจธเจผเจ•, เจตเจพเจ…เจฆเจพ เจ•เจฐเจจ เจตเจพเจฒเจพ เจ‰เจคเจชเจพเจฆ เจนเฉˆเฅค
  2. เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจกเจพเจŸเจพ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ‡ เจนเฉ‡เจ เจฒเฉ‡-เจชเฉฑเจงเจฐ เจฆเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจจเจพเจฒเฉ‹เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจซเจพเจ‡เจฆเฉ‡ เจนเจจเฅค
  3. เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจšเจฐเจšเจพ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจตเจฟเจงเฉ€ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ‰เจนเจจเจพเจ‚ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจ•เฉ‡ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจชเจฟเจ›เจฒเฉ‡ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเฉˆเจธเจผเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฌเจฆเจฒ เจ—เจ เจนเจจเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹