ื”ื•ื™ืš-ืžื“ืจื’ื” ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ Tarantool DBMS

ื”ืขืœื, ืื™ืš ืงืจื™ื™ื™ื˜ื™ื ื’ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืคึฟืึทืจ DBMS Tarantool ืื™ื– ืึท ืคึผืœืึทื˜ืคืึธืจืžืข ื“ืขื•ื•ืขืœืึธืคึผืขื“ ื“ื•ืจืš Mail.ru ื’ืจื•ืคืข ื•ื•ืึธืก ืงืึทืžื‘ื™ื™ื ื– ืึท ื”ื•ื™ืš-ืคืึธืจืฉื˜ืขืœื•ื ื’ DBMS ืื•ืŸ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ ืื™ืŸ ื“ื™ Lua ืฉืคึผืจืึทืš. ื“ื™ ื”ื•ื™ืš ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืกืึทืœื•ืฉืึทื ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื˜ืึทืจืึทื ื˜ืึธืึธืœ ืื™ื– ืึทื˜ืฉื™ื•ื•ื“, ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ, ืจืขื›ื˜ ืฆื• ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ ืื™ืŸ-ื–ื™ืงืึธืจืŸ ืžืึธื“ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ DBMS ืื•ืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื•ื™ืกืคื™ืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื’ืขืฉืขืคื˜ ืœืึธื’ื™ืง ืื™ืŸ ืึท ืื™ื™ืŸ ืึทื“ืจืขืก ืคึผืœืึทืฅ ืžื™ื˜ ื“ืึทื˜ืŸ. ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ื“ืึทื˜ืŸ ืคึผืขืจืกื™ืกื˜ืึทื ืก ืื™ื– ื™ื ืฉื•ืจื“ ืžื™ื˜ ืึทืกื™ื“ ื˜ืจืึทื ื–ืึทืงืฉืึทื ื– (ืึท WAL ืงืœืึธืฅ ืื™ื– ืžื™ื™ื ื˜ื™ื™ื ื“ ืื•ื™ืฃ ื“ื™ ื“ื™ืกืง). Tarantool ื”ืื˜ ืึท ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ืŸ ืฉืึทืจื“ื™ื ื’. ืกื˜ืึทืจื˜ื™ื ื’ ืคื•ืŸ ื•ื•ืขืจืกื™ืข 2.1, ืงื•ื•ื™ืจื™ื– ืื™ืŸ SQL ืฉืคึผืจืึทืš ื–ืขื ืขืŸ ื’ืขืฉื˜ื™ืฆื˜. Tarantool ืื™ื– ืึธืคึฟืŸ ืžืงื•ืจ ืื•ืŸ ืœื™ื™ืกืึทื ืกื˜ ืื•ื ื˜ืขืจ ื“ื™ ืกื™ืžืคึผืœื™ืคื™ืขื“ BSD ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ. ืขืก ืื™ื– ืื•ื™ืš ืึท ื’ืขืฉืขืคื˜ ืขื ื˜ืขืจืคึผืจื™ื™ื– ื•ื•ืขืจืกื™ืข.

ื”ื•ื™ืš-ืžื“ืจื’ื” ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ Tarantool DBMS
ืคื™ืœืŸ ื“ื™ ืžืึทื›ื˜! (... ืื•ื™ืš ื”ื ืื” ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’)

ืึทืœืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืื•ื™ื‘ืŸ ืžืื›ื˜ Tarantool ืึท ืึทื˜ืจืึทืงื˜ื™ื•ื• ืคึผืœืึทื˜ืคืึธืจืžืข ืคึฟืึทืจ ืงืจื™ื™ื™ื˜ื™ื ื’ ื”ื•ื™ืš-ืžืึทืกืข ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืžื™ื˜ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื–. ืื™ืŸ ืึทื–ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–, ืขืก ืื™ื– ืึธืคื˜ ืึท ื ื•ื™ื˜ ืคึฟืึทืจ ื“ืึทื˜ืŸ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ื•ื•ื™ ื“ืขืจืžืื ื˜ ืื•ื™ื‘ืŸ, Tarantool ื”ืื˜ ืึท ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ื“ืึทื˜ืŸ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ. ื“ืขืจ ืคึผืจื™ื ืฆื™ืคึผ ืคื•ืŸ ื–ื™ื™ึทืŸ ืึธืคึผืขืจืึทืฆื™ืข ืื™ื– ืฆื• ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™ ื•ื™ืกืคื™ืจืŸ ืื•ื™ืฃ ืจืขืคึผืœืึทืงืึทื– ืึทืœืข ื˜ืจืึทื ื–ืึทืงืฉืึทื ื– ืงืึทื ื˜ื™ื™ื ื“ ืื™ืŸ ื“ื™ ื‘ืขืœ ืงืœืึธืฅ (WAL). ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืึทื–ืึท ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ (ืžื™ืจ ื•ื•ืขืœืŸ ื•ื•ื™ื™ื˜ืขืจ ืจื•ืคืŸ ืขืก ื ื™ื“ืขืจื™ืง-ืžื“ืจื’ื”) ืื™ื– ื’ืขื ื™ืฆื˜ ืฆื• ืขื ืฉื•ืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฉื•ืœื“ ื˜ืึธืœืขืจืึทื ืฅ ืื•ืŸ / ืึธื“ืขืจ ืฆื• ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ื“ื™ ืœื™ื™ืขื ืขืŸ ืžืึทืกืข ืฆื•ื•ื™ืฉืŸ ืงื ื•ื™ืœ ื ืึธื•ื“ื–.

ื”ื•ื™ืš-ืžื“ืจื’ื” ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ Tarantool DBMS
ืจื™ื™ืก. 1. ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ื™ืŸ ืึท ืงื ื•ื™ืœ

ื ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ืึทืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืกืฆืขื ืึทืจ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื˜ืจืึทื ืกืคืขืจื™ื ื’ ื“ืึทื˜ืŸ ื‘ืืฉืืคืŸ ืื™ืŸ ืื™ื™ืŸ ื“ืึทื˜ืึทื‘ื™ื™ืก ืฆื• ืืŸ ืื ื“ืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก ืคึฟืึทืจ ืคึผืจืึทืกืขืกื™ื ื’ / ืžืึธื ื™ื˜ืึธืจื™ื ื’. ืื™ืŸ ื“ื™ ืœืขืฆื˜ืข ืคืึทืœ, ืึท ืžืขืจ ื‘ืึทืงื•ื•ืขื ืœื™ื™ื–ื•ื ื’ ืงืขืŸ ื–ื™ื™ืŸ ืฆื• ื ื•ืฆืŸ ื”ื•ื™ื›ืข ืœืขื•ื•ืขืœ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ - ื“ืึทื˜ืŸ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื’ืขืฉืขืคื˜ ืœืึธื’ื™ืง ืžื“ืจื’ื”. ื™ืขื ืข. ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื ื•ืฆืŸ ืึท ืคืึทืจื˜ื™ืง ืœื™ื™ื–ื•ื ื’ ื’ืขื‘ื•ื™ื˜ ืื™ืŸ ื“ื™ DBMS, ืึธื‘ืขืจ ื™ื ืกื˜ืจื•ืžืขื ื˜ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืขื ืข ืื™ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืึธืก ืžื™ืจ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ. ื“ืขื ืฆื•ื’ืึทื ื’ ื”ืื˜ ื‘ื™ื™ื“ืข ืึทื“ื•ื•ืึทื ื™ื“ื–ืฉื™ื– ืื•ืŸ ื“ื™ืกืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื–. ื–ืืœ ืก ืจืฉื™ืžื” ื“ื™ ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื–.

1. ืคืึทืจืงืขืจ ืกื™ื™ื•ื•ื™ื ื’ื–:

  • ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืึทืœืข ื“ื™ ื“ืึทื˜ืŸ, ืึธื‘ืขืจ ื‘ืœื•ื™ื– ื˜ื™ื™ืœ ืคื•ืŸ ืขืก (ืœืžืฉืœ, ืื™ืจ ืงืขื ืขืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ื‘ืœื•ื™ื– ืขื˜ืœืขื›ืข ื˜ื™ืฉืŸ, ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื–ื™ื™ืขืจ ืฉืคืืœื˜ืŸ ืึธื“ืขืจ ืจืขืงืึธืจื“ืก ื•ื•ืึธืก ื˜ืจืขืคืŸ ืึท ื–ื™ื›ืขืจ ืงืจื™ื˜ืขืจื™ืึธืŸ);
  • ื ื™ื˜ ืขื ืœืขืš ื ื™ื“ืขืจื™ืง-ืžื“ืจื’ื” ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื•ื•ืึธืก ืื™ื– ืงืึทื ื˜ื™ื ื™ื•ืึทืกืœื™ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ืŸ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก (ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื™ืŸ ื“ื™ ืงืจืึทื ื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹Tarantool - 1.10) ืึธื“ืขืจ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก (ืฆื• ื–ื™ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื™ืŸ ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ Tarantool), ื”ื•ื™ืš-ืžื“ืจื’ื” ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ืŸ ืกืขืฉืึทื ื– (ื“"ื” ื“ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืขืจืฉื˜ืขืจ ืกื™ื ื’ืงืจืึทื ื™ื™ื– ื“ื™ ื“ืึทื˜ืŸ - ืึท ื•ื•ืขืงืกืœ ืกืขืกื™ืข ื“ืึทื˜ืŸ, ื“ืขืžืึธืœื˜ ืขืก ืื™ื– ืึท ืคึผื•ื™ื–ืข ืื™ืŸ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื ืึธืš ื•ื•ืึธืก ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ื•ื•ืขืงืกืœ ืกืขืกื™ืข ืึทืงืขืจื–, ืืื–"ื• ื•);
  • ืื•ื™ื‘ ืึท ืจืขืงืึธืจื“ ื”ืื˜ ื’ืขื‘ื™ื˜ืŸ ืขื˜ืœืขื›ืข ืžืึธืœ, ืื™ืจ ืงืขื ืขืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ื‘ืœื•ื™ื– ื“ื™ ืœืขืฆื˜ืข ื•ื•ืขืจืกื™ืข (ื ื™ื˜ ืขื ืœืขืš ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื ื™ื“ืขืจื™ืง ืžื“ืจื’ื”, ืื™ืŸ ื•ื•ืึธืก ืึทืœืข ืขื ื“ืขืจื•ื ื’ืขืŸ ื’ืขืžืื›ื˜ ืื•ื™ืฃ ื“ื™ ื‘ืขืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคึผืœื™ื™ึทืขื“ ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™ ืื•ื™ืฃ ื“ื™ ืจืขืคึผืœืึทืงืึทื–).

2. ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืฉื•ื•ืขืจื™ืงื™ื™ื˜ืŸ ืžื™ื˜ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ื”ื˜ื˜ืคึผ ื•ื•ืขืงืกืœ, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืกื™ื ื’ืงืจืึทื ื™ื™ื– ื•ื•ื™ื™ึทื˜ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื–.

ื”ื•ื™ืš-ืžื“ืจื’ื” ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ Tarantool DBMS
ืจื™ื™ืก. 2. ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื‘ืขืจ ื”ื˜ื˜ืคึผ

3. ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืกื˜ืจืึทืงื˜ืฉืขืจื– ืฆื•ื•ื™ืฉืŸ ื•ื•ืึธืก ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื˜ืจืึทื ืกืคืขืจื“ ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืฆื• ื–ื™ื™ืŸ ื“ื™ ื–ืขืœื‘ืข (ื“ืขืจื™ื‘ืขืจ, ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืขืก ืื™ื– ืืคื™ืœื• ืžืขื’ืœืขืš ืฆื• ื ื•ืฆืŸ ืคืึทืจืฉื™ื“ืขื ืข ื“ื‘ืžืก, ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทื›ืŸ, ืคึผืœืึทื˜ืคืึธืจืžืก, ืืื–"ื• ื•).

ื”ื•ื™ืš-ืžื“ืจื’ื” ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ 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 Server, ืขืก ืื™ื– ืึท ืกืคึผืขืฆื™ืขืœ ื–ื™ื™ึทืœ ื˜ื™ืคึผ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ืขื ืฆื•ื’ืึทื ื’ - rowversion. ื™ืขื“ืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก ื”ืื˜ ืึท ื˜ืึธืžื‘ืึทื ืง ื•ื•ืึธืก ื™ื ืงืจื™ืกื™ื– ืžื™ื˜ ืื™ื™ืŸ ื™ืขื“ืขืจ ืžืึธืœ ืึท ืจืขืงืึธืจื“ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ / ื’ืขื‘ื™ื˜ืŸ ืื™ืŸ ืึท ื˜ื™ืฉ ื•ื•ืึธืก ื”ืื˜ ืึท ื–ื™ื™ึทืœ ื•ื•ื™ rowversion. ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ืขื ื˜ืึธืžื‘ืึทื ืง ืื™ื– ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืึทืกื™ื™ื ื“ ืฆื• ื“ื™ ืคืขืœื“ ืคื•ืŸ ื“ืขื ื–ื™ื™ึทืœ ืื™ืŸ ื“ื™ ืฆื•ื’ืขื’ืขื‘ืŸ / ื˜ืฉื™ื™ื ื“ื–ืฉื“ ืจืขืงืึธืจื“. ื“ื™ Tarantool DBMS ื”ืื˜ ื ื™ืฉื˜ ืึท ืขื ืœืขืš ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืžืขืงืึทื ื™ื–ืึทื. ืึธื‘ืขืจ, ืื™ืŸ Tarantool ืขืก ืื™ื– ื ื™ืฉื˜ ืฉื•ื•ืขืจ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืขืก ืžืึทื ื™ื•ืึทืœื™. ื–ืืœ ืก ืงื•ืง ืื™ืŸ ื•ื•ื™ ื“ืึธืก ืื™ื– ื’ืขื˜ืืŸ.

ืขืจืฉื˜ืขืจ, ืึท ื‘ื™ืกืœ ื˜ืขืจืžื™ื ืึธืœืึธื’ื™ืข: ื˜ื™ืฉืŸ ืื™ืŸ Tarantool ื–ืขื ืขืŸ ื’ืขืจื•ืคึฟืŸ ืกืคึผื™ื™ืกืึทื–, ืื•ืŸ ืจืขืงืึธืจื“ืก ื–ืขื ืขืŸ ื’ืขืจื•ืคึฟืŸ ื˜ื•ืคึผืœืขืก. ืื™ืŸ 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), ืคืขืœื“ ื ืขืžืขืŸ ืื•ืŸ ื–ื™ื™ืขืจ ื˜ื™ื™ืคึผืก.

ืึทื•ื˜ืึธ ื™ื ืงืจืึทืžืึทื ื˜ื™ื ื’ ืคืขืœื“ืขืจ ืื™ืŸ Tarantool ื–ืขื ืขืŸ ืื•ื™ืš ื‘ืืฉืืคืŸ ืžื™ื˜ ืกื™ืงื•ื•ืึทื ืกื™ื–. ืœืึธืžื™ืจ ืžืึทื›ืŸ ืึทืŸ ืึทื•ื˜ืึธ ื™ื ืงืจืึทืžืึทื ื˜ื™ื ื’ ืขืจืฉื˜ื™ืง ืฉืœื™ืกืœ ื“ื•ืจืš ืคืขืœื“ 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 ืฉื˜ื™ืฆื˜ ืขื˜ืœืขื›ืข ื˜ื™ื™ืคึผืก ืคื•ืŸ ื™ื ื“ืขืงืกื™ื–. ื“ื™ ืžืขืจืกื˜ ืงืึทืžืึทื ืœื™ ื’ืขื•ื•ื™ื™ื ื˜ ื™ื ื“ืขืงืกื™ื– ื–ืขื ืขืŸ ื˜ืจื™ ืื•ืŸ ื”ืึทืฉ ื˜ื™ื™ืคึผืก, ื•ื•ืึธืก ื–ืขื ืขืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืกื˜ืจืึทืงื˜ืฉืขืจื– ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืฆื• ื“ืขื ื ืึธืžืขืŸ. ื˜ืจื™ ืื™ื– ื“ื™ ืžืขืจืกื˜ ื•ื•ืขืจืกืึทื˜ืึทืœ ืื™ื ื“ืขืงืก ื˜ื™ืคึผ. ืขืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืฆื•ืจื™ืงืงืจื™ื’ืŸ ื“ืึทื˜ืŸ ืื™ืŸ ืึท ืึธืจื’ืึทื ื™ื–ื™ืจื˜ ืฉื˜ื™ื™ื’ืขืจ. ืึธื‘ืขืจ ืคึฟืึทืจ ื™ืงื•ื•ืึทืœืึทื˜ื™ ืกืขืœืขืงืฆื™ืข, HASH ืื™ื– ืžืขืจ ืคึผืึทืกื™ืง. ืึทืงืงืึธืจื“ื™ื ื’ืœื™, ืขืก ืื™ื– ืงืขื“ื™ื™ึทื™ืง ืฆื• ื ื•ืฆืŸ HASH ืคึฟืึทืจ ื“ื™ ืขืจืฉื˜ื™ืง ืฉืœื™ืกืœ (ื•ื•ืึธืก ืื™ื– ื•ื•ืึธืก ืžื™ืจ ื”ืื‘ืŸ).

ืฆื• ื ื•ืฆืŸ ื“ื™ ื–ื™ื™ึทืœ 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 ืกื˜ืึธืจื“ ื˜ื•ืคึผืœืข ืฆื• ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ืกื™ืงื•ื•ืึทื ืก 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}

ื•ื•ื™ื™ึทืœ ื“ืขืจ ืขืจืฉื˜ืขืจ ืคืขืœื“ ืื™ื– ืึทืŸ ืึทื•ื˜ืึธ ื™ื ืงืจืึทืžืึทื ื˜ื™ื ื’ ื˜ืึธืžื‘ืึทื ืง; ืžื™ืจ ืคืึธืจืŸ ื ื™ื™ืœ ืึทื ืฉื˜ืึธื˜. Tarantool ื•ื•ืขื˜ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจ ื•ื•ืขืจื˜. ืกื™ืžื™ืœืึทืจืœื™, ื•ื•ื™ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ื–ื™ื™ึทืœ ืคืขืœื“ืขืจ row_ver ืื™ืจ ืงืขื ืขืŸ ืคืึธืจืŸ ื ื•ืœ - ืึธื“ืขืจ ื ื™ืฉื˜ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื•ื•ืขืจื˜ ื‘ื™ื™ึท ืึทืœืข, ื•ื•ื™ื™ึทืœ ื“ืขื ื–ื™ื™ึทืœ ืึทืงื™ืึทืคึผื™ื™ื– ื“ื™ ืœืขืฆื˜ืข ืฉื˜ืขืœืข ืื™ืŸ ื“ืขื ืคึผืœืึทืฅ.

ื–ืืœ ืก ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ื™ื ืกืขืจืฉืึทืŸ ืจืขื–ื•ืœื˜ืึทื˜:

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, ืกื˜ืึทืจื˜ื™ื ื’ ืคื•ืŸ ื•ื•ืึธืก ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืึทื ืœืึธื•ื“ ืขื ื“ืขืจื•ื ื’ืขืŸ, ืื•ืŸ ืงืขืจื˜ ืึท ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ื’ืขื‘ื™ื˜ืŸ ื“ืึทื˜ืŸ.

ื“ืึทื˜ืึท ืžื•ืกื˜ืขืจื•ื ื’ ืื™ืŸ Tarantool ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ื“ื•ืจืš ื™ื ื“ืขืงืกื™ื–. ืคึฟื•ื ืงืฆื™ืข get_goods ื ื™ืฆื˜ ืึทืŸ ื™ื˜ืขืจืึทื˜ืึธืจ ื“ื•ืจืš ืื™ื ื“ืขืงืก row_ver ืฆื• ื‘ืึทืงื•ืžืขืŸ ื’ืขื‘ื™ื˜ืŸ ื“ืึทื˜ืŸ. ื™ื˜ืขืจืึทื˜ืึธืจ ื˜ื™ืคึผ ืื™ื– GT (ื’ืจืขืกืขืจ ื•ื•ื™, ื’ืจืขืกืขืจ ื•ื•ื™). ื“ืขื ืžื™ื˜ืœ ืึทื– ื“ืขืจ ื™ื˜ืขืจืึทื˜ืึธืจ ื•ื•ืขื˜ ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™ ื“ื•ืจื›ื’ื™ื™ืŸ ื“ื™ ืื™ื ื“ืขืงืก ื•ื•ืึทืœื•ืขืก ืกื˜ืึทืจื˜ื™ื ื’ ืคื•ืŸ ื“ื™ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฉืœื™ืกืœ (ืคืขืœื“ ื•ื•ืขืจื˜ row_ver).

ื“ืขืจ ื™ื˜ืขืจืึทื˜ืึธืจ ืงืขืจื˜ ื˜ื•ืคึผืœืขืก. ืื™ืŸ ืกื“ืจ ืฆื• ื“ืขืจื ืึธืš ืงืขื ืขืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ื“ืึทื˜ืŸ ื“ื•ืจืš ื”ื˜ื˜ืคึผ, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ื‘ื™ื™ึทื˜ืŸ ื“ื™ ื˜ื•ืคึผืœืขืก ืฆื• ืึท ืกื˜ืจื•ืงื˜ื•ืจ ื•ื•ืึธืก ืื™ื– ื‘ืึทืงื•ื•ืขื ืคึฟืึทืจ ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ืกื™ืจื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ. ื“ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ ื ื™ืฆื˜ ื“ื™ ื ืึธืจืžืึทืœ ืคื•ื ืงืฆื™ืข ืคึฟืึทืจ ื“ืขื 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 ืึทืจื•ื™ืก ื“ื™ ืคืึทืจื ืขื ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ. ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ืขื ืขืŸ ื•ื•ืขื’ืŸ ื“ืขื ื“ืึธ: 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 ืงืœื™ืขื ื˜:

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

ืžื™ืจ ืื•ื™ืš ื“ืึทืจืคึฟืŸ ืึท ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคึฟืึทืจ ื“ื–ืฉืกืึธืŸ ื“ืขืกืขืจื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ:

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 ืึทื“ืจืขืก ืื•ืŸ ืกืขื ื“ื– ืขืก 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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’