āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ā§‡ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ

āĻšā§āĻ¯āĻžāĻ˛ā§‹, āĻ†āĻŽāĻŋ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ›āĻŋ āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ Mail.ru āĻ—ā§āĻ°ā§āĻĒ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ‰āĻšā§āĻš-āĻ•āĻžāĻ°ā§āĻ¯āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ DBMS āĻāĻŦāĻ‚ Lua āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻ•ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡āĨ¤ Tarantool-āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻšā§āĻš āĻ—āĻ¤āĻŋ āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻŦāĻŋāĻļā§‡āĻˇāĻ¤, DBMS-āĻāĻ° āĻ‡āĻ¨-āĻŽā§‡āĻŽāĻ°āĻŋ āĻŽā§‹āĻĄā§‡āĻ° āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻ° āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡āĨ¤ āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡, ACID āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻĨāĻŋāĻ°āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ (āĻĄāĻŋāĻ¸ā§āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ WAL āĻ˛āĻ— āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ)āĨ¤ āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻŦāĻ‚ āĻļāĻžāĻ°ā§āĻĄāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 2.1 āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡, SQL āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤āĨ¤ Tarantool āĻšāĻ˛ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻāĻŦāĻ‚ āĻ¸āĻ°āĻ˛ā§€āĻ•ā§ƒāĻ¤ BSD āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸āĻĒā§āĻ°āĻžāĻĒā§āĻ¤āĨ¤ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻŖāĻŋāĻœā§āĻ¯āĻŋāĻ• āĻāĻ¨ā§āĻŸāĻžāĻ°āĻĒā§āĻ°āĻžāĻ‡āĻœ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ“ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ā§‡ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ
āĻļāĻ•ā§āĻ¤āĻŋ āĻ…āĻ¨ā§ā§āĻ­āĻŦ āĻ•āĻ°! (...āĻ“āĻ°āĻĢā§‡ āĻ…āĻ­āĻŋāĻ¨āĻ¯āĻŧ āĻ‰āĻĒāĻ­ā§‹āĻ— āĻ•āĻ°ā§āĻ¨)

āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ¸āĻŦāĻ—ā§āĻ˛ā§‹āĻ‡ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻāĻŽāĻ¨ āĻšāĻžāĻ‡-āĻ˛ā§‹āĻĄ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡, āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĒāĻ°ā§‡ āĻ‰āĻ˛ā§āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, Tarantool āĻāĻ° āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ° āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒā§‡āĻ° āĻ¨ā§€āĻ¤āĻŋāĻŸāĻŋ āĻšāĻ˛ āĻŽāĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ˛āĻ— (WAL) āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĨāĻžāĻ•āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§‡ āĻ•ā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ (āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ°āĻ“ āĻ•āĻ˛ āĻ•āĻ°āĻŦ āĻ¨āĻŋāĻŽā§āĻ¨ āĻ¸ā§āĻ¤āĻ°ā§‡āĻ°) āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻĢāĻ˛ā§āĻŸ āĻ¸āĻšāĻ¨āĻļā§€āĻ˛āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚/āĻ…āĻĨāĻŦāĻž āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ¨ā§‹āĻĄā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻĄāĻŧāĻžāĻ° āĻ˛ā§‹āĻĄ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ā§‡ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ
āĻ­āĻžāĻ¤āĨ¤ 1. āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ

āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ/āĻ¨āĻŋāĻ°ā§€āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻĄā§‡āĻŸāĻž āĻ…āĻ¨ā§āĻ¯ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻ•āĻŸāĻŋ āĻ†āĻ°āĻ“ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ‰āĻšā§āĻšāĻ¸ā§āĻ¤āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ - āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ¸ā§āĻ¤āĻ°ā§‡ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĨ¤ āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹. āĻ†āĻŽāĻ°āĻž DBMS-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•ā§‹āĻ¨ā§‹ āĻ°ā§‡āĻĄāĻŋāĻŽā§‡āĻĄ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ āĻ¨āĻž, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻžāĻ¨āĻŸāĻŋ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒ āĻ•āĻ°āĻ›āĻŋ āĻ¤āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¨āĻŋāĻœā§‡āĻ°āĻžāĻ‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻŋāĨ¤ āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻŦāĻ‚ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ‰āĻ­āĻ¯āĻŧāĻ‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤

1. āĻŸā§āĻ°āĻžāĻĢāĻŋāĻ• āĻ¸āĻžā§āĻšāĻ¯āĻŧ:

  • āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋāĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ‚āĻļ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ•āĻŋāĻ›ā§ āĻŸā§‡āĻŦāĻŋāĻ˛, āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ•āĻ˛āĻžāĻŽ āĻŦāĻž āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻŽāĻžāĻ¨āĻĻāĻŖā§āĻĄ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°ā§‡);
  • āĻ¨āĻŋāĻŽā§āĻ¨-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ā§‡, āĻ¯āĻž āĻ…āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨āĻ­āĻžāĻŦā§‡ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ (Tarantool-āĻāĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ - 1.10) āĻŦāĻž āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ (Tarantool-āĻāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻŦā§‡) āĻŽā§‹āĻĄā§‡, āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻ¯ā§‡āĻŽāĻ¨, āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻĄā§‡āĻŸāĻž āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœ āĻ•āĻ°ā§‡ - āĻāĻ•āĻŸāĻŋ āĻāĻ•ā§āĻ¸āĻšā§‡āĻžā§āĻœ āĻ¸ā§‡āĻļāĻ¨ āĻĄā§‡āĻŸāĻž, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ°āĻ¤āĻŋ āĻĨāĻžāĻ•ā§‡, āĻ¯āĻžāĻ° āĻĒāĻ°ā§‡ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻāĻ•ā§āĻ¸āĻšā§‡āĻžā§āĻœ āĻ¸ā§‡āĻļāĻ¨ āĻ˜āĻŸā§‡ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ;
  • āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŦāĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ° āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ (āĻ¨āĻŋāĻŽā§āĻ¨-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ā§‡, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŽāĻžāĻ¸ā§āĻŸāĻžāĻ°ā§‡ āĻ•āĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ•ā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻšāĻŦā§‡)āĨ¤

2. HTTP āĻāĻ•ā§āĻ¸āĻšā§‡āĻžā§āĻœ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡ āĻ•ā§‹āĻ¨ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨ā§‡āĻ‡, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĻā§‚āĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻĄā§‡āĻŸāĻžāĻŦā§‡āĻ¸āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ā§‡ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ
āĻ­āĻžāĻ¤āĨ¤ 2. HTTP āĻāĻ° āĻ‰āĻĒāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ

3. āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ° āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻž āĻāĻ•āĻ‡ āĻšāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻž (āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸, āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž, āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ“ āĻ¸āĻŽā§āĻ­āĻŦ)āĨ¤

āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ā§‡ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ
āĻ­āĻžāĻ¤āĨ¤ 3. āĻ­āĻŋāĻ¨ā§āĻ¨āĻ§āĻ°ā§āĻŽā§€ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ

āĻ¨ā§‡āĻ¤āĻŋāĻŦāĻžāĻšāĻ• āĻĻāĻŋāĻ•āĻŸāĻŋ āĻšāĻ˛, āĻ—āĻĄāĻŧā§‡, āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻŦā§‡āĻļāĻŋ āĻ•āĻ āĻŋāĻ¨/āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ•āĻžāĻ¸ā§āĻŸāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻœā§‡āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§‡ āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ—ā§āĻ˛āĻŋ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ¯āĻŧ (āĻŦāĻž āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻļāĻ°ā§āĻ¤), āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻŦā§‹āĻ§āĻ—āĻŽā§āĻ¯āĨ¤ āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ā§‡ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻĻā§‡āĻ–ā§āĻ¨āĨ¤

āĻŸā§āĻ°āĻžāĻĢāĻŋāĻ• āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ˛ āĻŸā§āĻ°āĻžāĻĢāĻŋāĻ• āĻ¸āĻžā§āĻšāĻ¯āĻŧāĨ¤ āĻāĻ‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§āĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻ¸ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ•āĻŽāĻŋāĻ¯āĻŧā§‡ āĻ†āĻ¨āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ­ā§āĻ˛ā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ āĻ¯ā§‡ āĻ¸ā§‡āĻļāĻ¨ā§‡āĻ° āĻļā§‡āĻˇā§‡, āĻĄā§‡āĻŸāĻž āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ°āĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ‰āĻ¤ā§āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ (āĻ…āĻ¨ā§āĻ¤āĻ¤ āĻĄā§‡āĻŸāĻžāĻ° āĻ¸ā§‡āĻ‡ āĻ…āĻ‚āĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§‡ āĻœāĻĄāĻŧāĻŋāĻ¤)āĨ¤

āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻŽāĻžāĻ¨ā§‹ āĻ¯āĻžāĻ¯āĻŧ? āĻ¤āĻžāĻ°āĻŋāĻ– āĻāĻŦāĻ‚ āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻĄā§‡āĻŸāĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¤āĻžāĻ°āĻŋāĻ–-āĻ¸āĻŽāĻ¯āĻŧ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ (āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻ•ā§‡)āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ "āĻ…āĻ°ā§āĻĄāĻžāĻ°" āĻ¨āĻĨāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ "āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ…āĻ°ā§āĻĄāĻžāĻ° āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ" - 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 āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻŽāĻžāĻ¨ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° "āĻĄā§‡āĻ˛ā§āĻŸāĻž" āĻĄā§‡āĻŸāĻž (āĻ†āĻ—ā§‡āĻ° āĻāĻ•ā§āĻ¸āĻšā§‡āĻžā§āĻœ āĻ¸ā§‡āĻļāĻ¨ā§‡āĻ° āĻļā§‡āĻˇ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻ¯ā§‹āĻ—/āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡) āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋāĻ•ā§‡ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻŦāĻŋāĻ­āĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡āĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°āĻžāĻ° āĻļā§‡āĻˇ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻ¨ā§āĻ•ā§‚āĻ˛ āĻāĻŦāĻ‚ āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ° āĻ†āĻ°ā§‹ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻ¤āĻžāĻ•āĻžāĻ¨.

āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž

āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°/āĻŽāĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ…āĻ‚āĻļā§‡āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨

āĻāĻŽāĻāĻ¸ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡, āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻ§āĻ°āĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - 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 āĻšāĻ˛ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŦāĻšā§āĻŽā§āĻ–ā§€ āĻ¸ā§‚āĻšāĻ•ā§‡āĻ° āĻ§āĻ°āĻ¨āĨ¤ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŽāĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻšā§āĻ¯āĻžāĻļ āĻ†āĻ°āĻ“ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤āĨ¤ āĻ¤āĻĻāĻ¨ā§āĻ¸āĻžāĻ°ā§‡, āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ•ā§€ (āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻ•āĻ°ā§‡āĻ›āĻŋ) āĻāĻ° āĻœāĻ¨ā§āĻ¯ HASH āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻšā§āĻ›ā§‡āĨ¤

āĻ•āĻ˛āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ row_ver āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ‡ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ•ā§āĻ°āĻŽ āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ†āĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ row_ver. āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ•ā§€ āĻĨā§‡āĻ•ā§‡ āĻ­āĻŋāĻ¨ā§āĻ¨, āĻ•āĻ˛āĻžāĻŽ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻŽāĻžāĻ¨ row_ver āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ‡ āĻ¨āĻ¯āĻŧ, āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ“ āĻāĻ• āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŸā§āĻ°āĻŋāĻ—āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ā§‡āĻ° āĻĻā§āĻŸāĻŋ āĻ§āĻ°āĻŖā§‡āĻ° āĻ¸ā§āĻĒā§‡āĻ¸ āĻŸā§āĻ°āĻŋāĻ—āĻžāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: 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, āĻ¯ā§‡āĻ–āĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ†āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻĄā§‡āĻŸāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ‚āĻļ āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ā§‡ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻ¯āĻžāĻŽā§āĻĒāĻ˛āĻŋāĻ‚ āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĢāĻžāĻ‚āĻļāĻ¨ 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 deserialization āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ“ āĻĻāĻ°āĻ•āĻžāĻ°:

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 āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° deserialized āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡.

āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻāĻ‡ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

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. āĻŸāĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ āĻāĻ•āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ, āĻ‰āĻšā§āĻš-āĻ˛ā§‹āĻĄ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋāĻļā§€āĻ˛ āĻĒāĻŖā§āĻ¯āĨ¤
  2. āĻ¨āĻŋāĻŽā§āĻ¨-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
  3. āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻ˛ā§‹āĻšāĻŋāĻ¤ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§‡āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§‡āĻ‡ āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯āĻž āĻ—āĻ¤ āĻāĻ•ā§āĻ¸āĻšā§‡āĻžā§āĻœ āĻ¸ā§‡āĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨