Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° високог Π½ΠΈΠ²ΠΎΠ° Ρƒ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π”Π‘ΠœΠ‘

Π—Π΄Ρ€Π°Π²ΠΎ, ΠΏΡ€Π°Π²ΠΈΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π·Π° Π”Π‘ΠœΠ‘ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» јС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠΎΡ˜Ρƒ јС Ρ€Π°Π·Π²ΠΈΠ»Π° Маил.Ρ€Ρƒ Π“Ρ€ΠΎΡƒΠΏ која ΠΊΠΎΠΌΠ±ΠΈΠ½ΡƒΡ˜Π΅ Π”Π‘ΠœΠ‘ високих пСрформанси ΠΈ сСрвСр Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π½Π° Ρ˜Π΅Π·ΠΈΠΊΡƒ Π›ΡƒΠ°. Π’Π΅Π»ΠΈΠΊΠ° Π±Ρ€Π·ΠΈΠ½Π° Ρ€Π΅ΡˆΠ΅ΡšΠ° заснованих Π½Π° Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ»-Ρƒ јС постигнута, посСбно, Π·Π°Ρ…Π²Π°Ρ™ΡƒΡ˜ΡƒΡ›ΠΈ ΠΏΠΎΠ΄Ρ€ΡˆΡ†ΠΈ ΠΈΠ½-ΠΌΠ΅ΠΌΠΎΡ€ΠΈ Ρ€Π΅ΠΆΠΈΠΌΡƒ Π”Π‘ΠœΠ‘-Π° ΠΈ могућности ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° пословнС Π»ΠΎΠ³ΠΈΠΊΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Ρƒ јСдном адрСсном простору са ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ°. Π£ исто Π²Ρ€Π΅ΠΌΠ΅, ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎΡΡ‚ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° јС ΠΎΠ±Π΅Π·Π±Π΅Ρ’Π΅Π½Π° ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ΠΌ ΠΠ¦Π˜Π” Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π° (ВАЛ Π΄Π½Π΅Π²Π½ΠΈΠΊ сС ΠΎΠ΄Ρ€ΠΆΠ°Π²Π° Π½Π° диску). Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» ΠΈΠΌΠ° ΡƒΠ³Ρ€Π°Ρ’Π΅Π½Ρƒ ΠΏΠΎΠ΄Ρ€ΡˆΠΊΡƒ Π·Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΈ Π΄Π΅Ρ™Π΅ΡšΠ΅. ΠŸΠΎΡ‡Π΅Π²ΡˆΠΈ ΠΎΠ΄ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ 2.1, ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π½ΠΈ су ΡƒΠΏΠΈΡ‚ΠΈ Ρƒ Π‘ΠšΠ› Ρ˜Π΅Π·ΠΈΠΊΡƒ. Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» јС ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° ΠΈ Π»ΠΈΡ†Π΅Π½Ρ†ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄ Π‘ΠΈΠΌΠΏΠ»ΠΈΡ„ΠΈΠ΅Π΄ Π‘Π‘Π” Π»ΠΈΡ†Π΅Π½Ρ†ΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΈ ΠΊΠΎΠΌΠ΅Ρ€Ρ†ΠΈΡ˜Π°Π»Π½Π° ЕнтСрприсС Π²Π΅Ρ€Π·ΠΈΡ˜Π°.

Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° високог Π½ΠΈΠ²ΠΎΠ° Ρƒ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π”Π‘ΠœΠ‘
ΠžΡΠ΅Ρ‚ΠΈΡ‚ΠΈ снагу! (... Ρ‚Π°ΠΊΠΎΡ’Π΅ ΡƒΠΆΠΈΠ²Π°Ρ˜Ρ‚Π΅ Ρƒ наступу)

Π‘Π²Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Ρ‡ΠΈΠ½ΠΈ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π°Ρ‚Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΌ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° са Π²Π΅Π»ΠΈΠΊΠΈΠΌ ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ΅ΠΌ којС Ρ€Π°Π΄Π΅ са Π±Π°Π·Π°ΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Π£ Ρ‚Π°ΠΊΠ²ΠΈΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ° чСсто ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π·Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΎΠΌ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.

Као ΡˆΡ‚ΠΎ јС Π³ΠΎΡ€Π΅ ΠΏΠΎΠΌΠ΅Π½ΡƒΡ‚ΠΎ, Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» ΠΈΠΌΠ° ΡƒΠ³Ρ€Π°Ρ’Π΅Π½Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ њСговог Ρ€Π°Π΄Π° јС Π΄Π° узастопно ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π° Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°ΠΌΠ° свС Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π΅ садрТанС Ρƒ Π³Π»Π°Π²Π½ΠΎΠΌ Π΄Π½Π΅Π²Π½ΠΈΠΊΡƒ (ВАЛ). ΠžΠ±ΠΈΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠ²Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° (Π΄Π°Ρ™Π΅ Ρ›Π΅ΠΌΠΎ јС Π½Π°Π·Π²Π°Ρ‚ΠΈ Π½ΠΈΠ·Π°ΠΊ Π½ΠΈΠ²ΠΎ) сС користи Π΄Π° Π±ΠΈ сС ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠ»Π° Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ†ΠΈΡ˜Π° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΈ/ΠΈΠ»ΠΈ Π·Π° расподСлу ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ° Ρ‡ΠΈΡ‚Π°ΡšΠ° ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ Ρ‡Π²ΠΎΡ€ΠΎΠ²Π° кластСра.

Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° високог Π½ΠΈΠ²ΠΎΠ° Ρƒ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π”Π‘ΠœΠ‘
ΠŸΠΈΡ€ΠΈΠ½Π°Ρ‡. 1. Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΡƒΠ½ΡƒΡ‚Π°Ρ€ кластСра

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡ˜Π° Π±ΠΈ Π±ΠΈΠΎ прСнос ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈΡ… Ρƒ јСдној Π±Π°Π·ΠΈ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ Π΄Ρ€ΡƒΠ³Ρƒ Π±Π°Π·Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρ€Π°Π΄ΠΈ ΠΎΠ±Ρ€Π°Π΄Π΅/надглСдања. Π£ послСдњСм ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ, погоднијС Ρ€Π΅ΡˆΠ΅ΡšΠ΅ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° висок Π½ΠΈΠ²ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° – Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎΡƒ пословнС Π»ΠΎΠ³ΠΈΠΊΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅. ОнС. НС користимо Π³ΠΎΡ‚ΠΎΠ²ΠΎ Ρ€Π΅ΡˆΠ΅ΡšΠ΅ ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΎ Ρƒ Π”Π‘ΠœΠ‘, Π²Π΅Ρ› сами ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Ρƒ ΠΎΠΊΠ²ΠΈΡ€Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΊΠΎΡ˜Ρƒ Ρ€Π°Π·Π²ΠΈΡ˜Π°ΠΌΠΎ. Овај приступ ΠΈΠΌΠ° ΠΈ прСдности ΠΈ нСдостаткС. Π₯ајдС Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΠΌΠΎ прСдности.

1. Π£ΡˆΡ‚Π΅Π΄Π΅ Ρƒ ΡΠ°ΠΎΠ±Ρ€Π°Ρ›Π°Ρ˜Ρƒ:

  • НС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈ свС ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅, Π²Π΅Ρ› само ΡšΠΈΡ…ΠΎΠ² Π΄Π΅ΠΎ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈ само Π½Π΅ΠΊΠ΅ Ρ‚Π°Π±Π΅Π»Π΅, Π½Π΅ΠΊΠ΅ ΡšΠΈΡ…ΠΎΠ²Π΅ ΠΊΠΎΠ»ΠΎΠ½Π΅ ΠΈΠ»ΠΈ записС који ΠΈΡΠΏΡƒΡšΠ°Π²Π°Ρ˜Ρƒ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡ˜ΡƒΠΌ);
  • Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΡƒ ΠΎΠ΄ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ниског Π½ΠΈΠ²ΠΎΠ°, која сС ΠΎΠ±Π°Π²Ρ™Π° ΠΊΠΎΠ½Ρ‚ΠΈΠ½ΡƒΠΈΡ€Π°Π½ΠΎ Ρƒ асинхроном (ΠΏΡ€ΠΈΠΌΠ΅ΡšΠ΅Π½ΠΎΠΌ Ρƒ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎΡ˜ Π²Π΅Ρ€Π·ΠΈΡ˜ΠΈ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ»-Π° - 1.10) ΠΈΠ»ΠΈ синхроном (који Ρ›Π΅ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΠΈ Ρƒ Π½Π°Ρ€Π΅Π΄Π½ΠΈΠΌ Π²Π΅Ρ€Π·ΠΈΡ˜Π°ΠΌΠ° Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ»-Π°) Ρ€Π΅ΠΆΠΈΠΌΡƒ, Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° високог Π½ΠΈΠ²ΠΎΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²ΠΎΠ΄ΠΈ Ρƒ сСсијама (Ρ‚Ρ˜. Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΏΡ€Π²ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΡƒΡ˜Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ - ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΎ сСсији Ρ€Π°Π·ΠΌΠ΅Π½Π΅, Π·Π°Ρ‚ΠΈΠΌ слСди ΠΏΠ°ΡƒΠ·Π° Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ, Π½Π°ΠΊΠΎΠ½ Ρ‡Π΅Π³Π° Π΄ΠΎΠ»Π°Π·ΠΈ Π΄ΠΎ слСдСћС сСсијС Ρ€Π°Π·ΠΌΠ΅Π½Π΅ ΠΈΡ‚Π΄.);
  • Π°ΠΊΠΎ сС запис ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΏΡƒΡ‚Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈ само ΡšΠ΅Π³ΠΎΠ²Ρƒ Π½Π°Ρ˜Π½ΠΎΠ²ΠΈΡ˜Ρƒ Π²Π΅Ρ€Π·ΠΈΡ˜Ρƒ (Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΡƒ ΠΎΠ΄ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ниског Π½ΠΈΠ²ΠΎΠ°, Ρƒ којој Ρ›Π΅ сС свС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ Π½Π°ΠΏΡ€Π°Π²Ρ™Π΅Π½Π΅ Π½Π° мастСру Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΠΎΠ²Π°Ρ‚ΠΈ узастопно Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°ΠΌΠ°).

2. НСма ΠΏΠΎΡ‚Π΅ΡˆΠΊΠΎΡ›Π° са ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜ΠΎΠΌ Π₯ВВП Ρ€Π°Π·ΠΌΠ΅Π½Π΅, која Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΡƒΡ˜Π΅Ρ‚Π΅ ΡƒΠ΄Π°Ρ™Π΅Π½Π΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.

Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° високог Π½ΠΈΠ²ΠΎΠ° Ρƒ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π”Π‘ΠœΠ‘
ΠŸΠΈΡ€ΠΈΠ½Π°Ρ‡. 2. Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΏΡ€Π΅ΠΊΠΎ Π₯ВВП-Π°

3. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ ΠΊΠΎΡ˜ΠΈΡ… сС прСносС ΠΏΠΎΠ΄Π°Ρ†ΠΈ Π½Π΅ ΠΌΠΎΡ€Π°Ρ˜Ρƒ Π΄Π° Π±ΡƒΠ΄Ρƒ истС (ΡˆΡ‚Π°Π²ΠΈΡˆΠ΅, Ρƒ ΠΎΠΏΡˆΡ‚Π΅ΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ јС Ρ‡Π°ΠΊ ΠΌΠΎΠ³ΡƒΡ›Π΅ користити Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ Π”Π‘ΠœΠ‘, програмскС јСзикС, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΡ‚Π΄.).

Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° високог Π½ΠΈΠ²ΠΎΠ° Ρƒ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π”Π‘ΠœΠ‘
ΠŸΠΈΡ€ΠΈΠ½Π°Ρ‡. 3. Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Ρƒ Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½ΠΈΠΌ систСмима

Π›ΠΎΡˆΠ° страна јС Ρƒ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚ΠΎ јС, Ρƒ просСку, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅ Ρ‚Π΅ΠΆΠ΅/скупљС ΠΎΠ΄ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡΠ°ΡšΠ°, ΠΈ умСсто ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΡ’Π°Π²Π°ΡšΠ° ΡƒΠ³Ρ€Π°Ρ’Π΅Π½Π΅ функционалности, ΠΌΠΎΡ€Π°Ρ›Π΅Ρ‚Π΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ сопствСну.

Ако су Ρƒ вашој ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜ΠΈ Π³ΠΎΡ€Π΅ Π½Π°Π²Π΅Π΄Π΅Π½Π΅ прСдности ΠΊΡ™ΡƒΡ‡Π½Π΅ (ΠΈΠ»ΠΈ су Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π°Π½ услов), ΠΎΠ½Π΄Π° ΠΈΠΌΠ° смисла користити Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ високог Π½ΠΈΠ²ΠΎΠ°. Π₯ајдС Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° високог Π½ΠΈΠ²ΠΎΠ° Ρƒ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π”Π‘ΠœΠ‘.

ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π° ΡΠ°ΠΎΠ±Ρ€Π°Ρ›Π°Ρ˜Π°

Π”Π°ΠΊΠ»Π΅, јСдна ΠΎΠ΄ прСдности Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° високом Π½ΠΈΠ²ΠΎΡƒ јС ΡƒΡˆΡ‚Π΅Π΄Π° ΡΠ°ΠΎΠ±Ρ€Π°Ρ›Π°Ρ˜Π°. Π”Π° Π±ΠΈ ΠΎΠ²Π° прСдност Π±ΠΈΠ»Π° Ρƒ потпуности Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚ΠΈ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° који сС прСносС Ρ‚ΠΎΠΊΠΎΠΌ свакС сСсијС Ρ€Π°Π·ΠΌΠ΅Π½Π΅. Наравно, Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚ΠΈ Π΄Π° Π½Π° ΠΊΡ€Π°Ρ˜Ρƒ сСсијС ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ синхронизован са ΠΈΠ·Π²ΠΎΡ€ΠΎΠΌ (Π±Π°Ρ€ Π·Π° онај Π΄Π΅ΠΎ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° који јС ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½ Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ).

Како ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚ΠΈ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈΡ… Ρ‚ΠΎΠΊΠΎΠΌ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ високог Π½ΠΈΠ²ΠΎΠ°? ΠˆΠ΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ Ρ€Π΅ΡˆΠ΅ΡšΠ΅ Π±ΠΈ ΠΌΠΎΠ³Π»ΠΎ Π±ΠΈΡ‚ΠΈ ΠΎΠ΄Π°Π±ΠΈΡ€ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅ΠΌΠ° Π΄Π°Ρ‚ΡƒΠΌΡƒ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ. Π”Π° бистС Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ користити ΠΏΠΎΡ™Π΅ Π΄Π°Ρ‚ΡƒΠΌ-Π²Ρ€Π΅ΠΌΠ΅ којС Π²Π΅Ρ› ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Ρƒ Ρ‚Π°Π±Π΅Π»ΠΈ (Π°ΠΊΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ). На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ β€žΠΏΠΎΡ€ΡƒΡŸΠ±ΠΈΠ½Π°β€œ ΠΌΠΎΠΆΠ΅ ΠΈΠΌΠ°Ρ‚ΠΈ ΠΏΠΎΡ™Π΅ β€žΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΈΠ·Π²Ρ€ΡˆΠ΅ΡšΠ° Π½Π°Π»ΠΎΠ³Π°β€œ - delivery_time. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ са ΠΎΠ²ΠΈΠΌ Ρ€Π΅ΡˆΠ΅ΡšΠ΅ΠΌ јС ΡˆΡ‚ΠΎ врСдности Ρƒ ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡ™Ρƒ Π½Π΅ ΠΌΠΎΡ€Π°Ρ˜Ρƒ Π΄Π° Π±ΡƒΠ΄Ρƒ Ρƒ рСдослСду који ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΡƒ Π½Π°Π»ΠΎΠ³Π°. Π”Π°ΠΊΠ»Π΅, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° сС сСтимо максималнС врСдности ΠΏΠΎΡ™Π° delivery_time, ΠΏΡ€Π΅Π½Π΅Ρ‚ Ρ‚ΠΎΠΊΠΎΠΌ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π΅ сСсијС Ρ€Π°Π·ΠΌΠ΅Π½Π΅, Π° Ρ‚ΠΎΠΊΠΎΠΌ слСдСћС сСсијС Ρ€Π°Π·ΠΌΠ΅Π½Π΅ ΠΈΠ·Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ свС записС са вишом Π²Ρ€Π΅Π΄Π½ΠΎΡˆΡ›Ρƒ ΠΏΠΎΡ™Π° delivery_time. Записи са Π½ΠΈΠΆΠΎΠΌ Π²Ρ€Π΅Π΄Π½ΠΎΡˆΡ›Ρƒ ΠΏΠΎΡ™Π° ΠΌΠΎΠΆΠ΄Π° су Π΄ΠΎΠ΄Π°Ρ‚ΠΈ ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ сСсија Ρ€Π°Π·ΠΌΠ΅Π½Π΅ delivery_time. Π’Π°ΠΊΠΎΡ’Π΅, ΠΏΠΎΡ€Π΅Π΄Π°ΠΊ јС ΠΌΠΎΠ³Π°ΠΎ Π΄Π° ΠΏΡ€Π΅Ρ‚Ρ€ΠΏΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅, којС ΠΈΠΏΠ°ΠΊ нису ΡƒΡ‚ΠΈΡ†Π°Π»Π΅ Π½Π° Ρ‚Π΅Ρ€Π΅Π½ delivery_time. Π£ ΠΎΠ±Π° ΡΠ»ΡƒΡ‡Π°Ρ˜Π°, ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ сС Π½Π΅Ρ›Π΅ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈ са ΠΈΠ·Π²ΠΎΡ€Π° Π½Π° ΠΎΠ΄Ρ€Π΅Π΄ΠΈΡˆΡ‚Π΅. Π”Π° бисмо Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅, ΠΌΠΎΡ€Π°Ρ›Π΅ΠΌΠΎ Π΄Π° прСнСсСмо ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ који сС "ΠΏΡ€Π΅ΠΊΠ»Π°ΠΏΠ°Ρ˜Ρƒ". ОнС. Ρƒ свакој сСсији Ρ€Π°Π·ΠΌΠ΅Π½Π΅ прСносићСмо свС ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ са Π²Ρ€Π΅Π΄Π½ΠΎΡˆΡ›Ρƒ ΠΏΠΎΡ™Π° delivery_time, ΠΏΡ€Π΅Π»Π°Π·Π΅Ρ›ΠΈ Π½Π΅ΠΊΡƒ Ρ‚Π°Ρ‡ΠΊΡƒ Ρƒ ΠΏΡ€ΠΎΡˆΠ»ΠΎΡΡ‚ΠΈ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Н сати ΠΎΠ΄ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎΠ³ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΠ°). ΠœΠ΅Ρ’ΡƒΡ‚ΠΈΠΌ, ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ јС Π΄Π° јС Π·Π° Π²Π΅Π»ΠΈΠΊΠ΅ систСмС овај приступ Π²Π΅ΠΎΠΌΠ° ΡΡƒΠ²ΠΈΡˆΠ°Π½ ΠΈ ΠΌΠΎΠΆΠ΅ ΡΠΌΠ°ΡšΠΈΡ‚ΠΈ ΡƒΡˆΡ‚Π΅Π΄Π΅ Ρƒ ΡΠ°ΠΎΠ±Ρ€Π°Ρ›Π°Ρ˜Ρƒ којима Ρ‚Π΅ΠΆΠΈΠΌΠΎ Π½Π° Π½ΠΈΡˆΡ‚Π°. ΠŸΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ³Π°, Ρ‚Π°Π±Π΅Π»Π° која сС прСноси ΠΌΠΎΠΆΠ΄Π° Π½Π΅ΠΌΠ° ΠΏΠΎΡ™Π΅ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΎ са Π΄Π°Ρ‚ΡƒΠΌΠΎΠΌ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΎΠΌ.

Π”Ρ€ΡƒΠ³ΠΎ Ρ€Π΅ΡˆΠ΅ΡšΠ΅, слоТСнијС Ρƒ смислу ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅, јС ΠΏΠΎΡ‚Π²Ρ€Π΄Π° ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ, Ρ‚ΠΎΠΊΠΎΠΌ свакС сСсијС Ρ€Π°Π·ΠΌΠ΅Π½Π΅, прСносС сС сви ΠΏΠΎΠ΄Π°Ρ†ΠΈ, Ρ‡ΠΈΡ˜ΠΈ ΠΏΡ€ΠΈΡ˜Π΅ΠΌ нијС ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈΠΎ ΠΏΡ€ΠΈΠΌΠ°Π»Π°Ρ†. Π”Π° бистС ΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ, ΠΌΠΎΡ€Π°Ρ›Π΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ΄Π°Ρ‚Π΅ Π‘ΡƒΠ»ΠΎΠ²Ρƒ ΠΊΠΎΠ»ΠΎΠ½Ρƒ Ρƒ ΠΈΠ·Π²ΠΎΡ€Π½Ρƒ Ρ‚Π°Π±Π΅Π»Ρƒ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, is_transferred). Ако ΠΏΡ€ΠΈΠΌΠ°Π»Π°Ρ† ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈ ΠΏΡ€ΠΈΡ˜Π΅ΠΌ записа, ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›Π΅ ΠΏΠΎΡ™Π΅ ΡƒΠ·ΠΈΠΌΠ° врСдност true, Π½Π°ΠΊΠΎΠ½ Ρ‡Π΅Π³Π° унос вишС нијС ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½ Ρƒ Ρ€Π°Π·ΠΌΠ΅Π½Π΅. Ова ΠΎΠΏΡ†ΠΈΡ˜Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅ ΠΈΠΌΠ° слСдСћС нСдостаткС. ΠŸΡ€Π²ΠΎ, Π·Π° сваки ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈ запис, ΠΌΠΎΡ€Π° сС гСнСрисати ΠΈ послати ΠΏΠΎΡ‚Π²Ρ€Π΄Π°. Π“Ρ€ΡƒΠ±ΠΎ Π³ΠΎΠ²ΠΎΡ€Π΅Ρ›ΠΈ, ΠΎΠ²ΠΎ Π±ΠΈ сС ΠΌΠΎΠ³Π»ΠΎ ΡƒΠΏΠΎΡ€Π΅Π΄ΠΈΡ‚ΠΈ са ΡƒΠ΄Π²ΠΎΡΡ‚Ρ€ΡƒΡ‡Π°Π²Π°ΡšΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π΅ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈΡ… ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ довСсти Π΄ΠΎ ΡƒΠ΄Π²ΠΎΡΡ‚Ρ€ΡƒΡ‡Π°Π²Π°ΡšΠ° Π±Ρ€ΠΎΡ˜Π° ΠΏΠΎΠ²Ρ€Π°Ρ‚Π½ΠΈΡ… ΠΏΡƒΡ‚ΠΎΠ²Π°ΡšΠ°. Π”Ρ€ΡƒΠ³ΠΎ, Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ могућност слања истог записа Π½Π° вишС ΠΏΡ€ΠΈΠΌΠ°Π»Π°Ρ†Π° (ΠΏΡ€Π²ΠΈ ΠΏΡ€ΠΈΠΌΠ°Π»Π°Ρ† Ρ›Π΅ ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈΡ‚ΠΈ ΠΏΡ€ΠΈΡ˜Π΅ΠΌ Π·Π° сСбС ΠΈ Π·Π° свС осталС).

ΠœΠ΅Ρ‚ΠΎΠ΄Π° која Π½Π΅ΠΌΠ° Π³ΠΎΡ€Π΅ Π½Π°Π²Π΅Π΄Π΅Π½Π΅ нСдостаткС јС додавањС ΠΊΠΎΠ»ΠΎΠ½Π΅ ΠΏΡ€Π΅Π½Π΅ΡΠ΅Π½ΠΎΡ˜ Ρ‚Π°Π±Π΅Π»ΠΈ Π΄Π° Π±ΠΈ сС ΠΏΡ€Π°Ρ‚ΠΈΠ»Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ Ρƒ њСним Ρ€Π΅Π΄ΠΎΠ²ΠΈΠΌΠ°. Π’Π°ΠΊΠ²Π° ΠΊΠΎΠ»ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ Ρ‚ΠΈΠΏΠ° Π΄Π°Ρ‚ΡƒΠΌ-Π²Ρ€Π΅ΠΌΠ΅ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΌΠΎΡ€Π° Π΄Π° јС подСси/Π°ΠΆΡƒΡ€ΠΈΡ€Π° Π½Π° Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ сваки ΠΏΡƒΡ‚ ΠΊΠ°Π΄Π° сС записи Π΄ΠΎΠ΄Π°Ρ˜Ρƒ/ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ (атомски са додавањСм/ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΎΠΌ). Као ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Π·ΠΎΠ²ΠΈΠΌΠΎ ΠΊΠΎΠ»ΠΎΠ½Ρƒ update_time. Π§ΡƒΠ²Π°ΡšΠ΅ΠΌ максималнС врСдности ΠΏΠΎΡ™Π° ΠΎΠ²Π΅ ΠΊΠΎΠ»ΠΎΠ½Π΅ Π·Π° ΠΏΡ€Π΅Π½Π΅Ρ‚Π΅ записС, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π·Π°ΠΏΠΎΡ‡Π΅Ρ‚ΠΈ слСдСћу ΡΠ΅ΡΠΈΡ˜Ρƒ Ρ€Π°Π·ΠΌΠ΅Π½Π΅ са ΠΎΠ²ΠΎΠΌ Π²Ρ€Π΅Π΄Π½ΠΎΡˆΡ›Ρƒ (ΠΈΠ·Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ записС са Π²Ρ€Π΅Π΄Π½ΠΎΡˆΡ›Ρƒ ΠΏΠΎΡ™Π° update_time, ΠΏΡ€Π΅ΠΌΠ°ΡˆΡƒΡ˜Π΅ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ сачувану врСдност). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ са послСдњим приступом јС Ρƒ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚ΠΎ сС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠ³Ρƒ дСсити Ρƒ Π³Ρ€ΡƒΠΏΠ°ΠΌΠ°. Као Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ врСдности ΠΏΠΎΡ™Π° Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΈ update_time ΠΌΠΎΠΆΠ΄Π° нијС Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½. Π”Π°ΠΊΠ»Π΅, ΠΎΠ²Π° ΠΊΠΎΠ»ΠΎΠ½Π° сС Π½Π΅ ΠΌΠΎΠΆΠ΅ користити Π·Π° порционисанС (страницу ΠΏΠΎ страницу) ΠΈΠ·Π»Π°Π· ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Π”Π° бистС ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π»ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ страницу ΠΏΠΎ страницу, ΠΌΠΎΡ€Π°Ρ›Π΅Ρ‚Π΅ Π΄Π° измислитС Π΄ΠΎΠ΄Π°Ρ‚Π½Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ који Ρ›Π΅ Π½Π°Ρ˜Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΈΡ˜Π΅ ΠΈΠΌΠ°Ρ‚ΠΈ Π²Π΅ΠΎΠΌΠ° ниску Сфикасност (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ ΠΈΠ· Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° свих записа са Π²Ρ€Π΅Π΄Π½ΠΎΡˆΡ›Ρƒ update_time Π²Π΅Ρ›ΠΈ ΠΎΠ΄ спСцифицираних ΠΈ ΠΈΠ·Π»Π°Π·Π΅ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈ Π±Ρ€ΠΎΡ˜ записа, ΠΏΠΎΡ‡Π΅Π²ΡˆΠΈ ΠΎΠ΄ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΠ³ ΠΏΠΎΠΌΠ°ΠΊΠ° ΠΎΠ΄ ΠΏΠΎΡ‡Π΅Ρ‚ΠΊΠ° ΡƒΠ·ΠΎΡ€ΠΊΠ°).

Ефикасност прСноса ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°Ρ‚ΠΈ Π±Π»Π°Π³ΠΈΠΌ ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°ΡšΠ΅ΠΌ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠ³ приступа. Π”Π° бисмо Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, користићСмо Ρ‚ΠΈΠΏ Ρ†Π΅Π»ΠΎΠ³ Π±Ρ€ΠΎΡ˜Π° (Π΄ΡƒΠ³ΠΈ Ρ†Π΅ΠΎ Π±Ρ€ΠΎΡ˜) ΠΊΠ°ΠΎ врСдности ΠΏΠΎΡ™Π° ΠΊΠΎΠ»ΠΎΠ½Π΅ Π·Π° ΠΏΡ€Π°Ρ›Π΅ΡšΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π°. Назовимо ΠΊΠΎΠ»ΠΎΠ½Ρƒ row_ver. ВрСдност ΠΏΠΎΡ™Π° ΠΎΠ²Π΅ ΠΊΠΎΠ»ΠΎΠ½Π΅ ΠΈ Π΄Π°Ρ™Π΅ ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ подСшСна/Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π½Π° сваки ΠΏΡƒΡ‚ ΠΊΠ°Π΄Π° сС запис ΠΊΡ€Π΅ΠΈΡ€Π°/ΠΌΠΎΠ΄ΠΈ. Али Ρƒ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ ΠΏΠΎΡ™Ρƒ Π½Π΅Ρ›Π΅ Π±ΠΈΡ‚ΠΈ Π΄ΠΎΠ΄Π΅Ρ™Π΅Π½ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΈ Π΄Π°Ρ‚ΡƒΠΌ-Π²Ρ€Π΅ΠΌΠ΅, Π²Π΅Ρ› врСдност Π½Π΅ΠΊΠΎΠ³ Π±Ρ€ΠΎΡ˜Π°Ρ‡Π°, ΡƒΠ²Π΅Ρ›Π°Π½Π° Π·Π° јСдан. Као Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ‚ΠΎΠ³Π°, ΠΊΠΎΠ»ΠΎΠ½Π° row_ver Ρ›Π΅ садрТати Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π΅ врСдности ΠΈ ΠΌΠΎΠΆΠ΅ сС користити Π½Π΅ само Π·Π° ΠΏΡ€ΠΈΠΊΠ°Π· β€žΠ΄Π΅Π»Ρ‚Π°β€œ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° (ΠΏΠΎΠ΄Π°Ρ†ΠΈ Π΄ΠΎΠ΄Π°Ρ‚ΠΈ/ΠΏΡ€ΠΎΠΌΠ΅ΡšΠ΅Π½ΠΈ ΠΎΠ΄ ΠΊΡ€Π°Ρ˜Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π΅ сСсијС Ρ€Π°Π·ΠΌΠ΅Π½Π΅), Π²Π΅Ρ› ΠΈ Π΄Π° ΠΈΡ… Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ ΠΈ Сфикасно Ρ€Π°Π·Π΄Π²ΠΎΡ˜Π΅ Π½Π° страницС.

ПослСдњи ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΡšΠ° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈΡ… Ρƒ ΠΎΠΊΠ²ΠΈΡ€Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ високог Π½ΠΈΠ²ΠΎΠ° ΠΌΠΈ сС Ρ‡ΠΈΠ½ΠΈ Π½Π°Ρ˜ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΈΡ˜ΠΈΠΌ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€Π·Π°Π»Π½ΠΈΠΌ. ПоглСдајмо Ρ‚ΠΎ Π΄Π΅Ρ‚Π°Ρ™Π½ΠΈΡ˜Π΅.

ΠŸΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΏΠΎΠΌΠΎΡ›Ρƒ Π±Ρ€ΠΎΡ˜Π°Ρ‡Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Ρ€Π΅Π΄Π°

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° сСрвСрског/мастСр Π΄Π΅Π»Π°

Π£ МБ Π‘ΠšΠ› Π‘Π΅Ρ€Π²Π΅Ρ€Ρƒ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ посСбан Ρ‚ΠΈΠΏ ΠΊΠΎΠ»ΠΎΠ½Π΅ Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ ΠΎΠ²ΠΎΠ³ приступа - rowversion. Π‘Π²Π°ΠΊΠ° Π±Π°Π·Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈΠΌΠ° Π±Ρ€ΠΎΡ˜Π°Ρ‡ који сС ΠΏΠΎΠ²Π΅Ρ›Π°Π²Π° Π·Π° јСдан сваки ΠΏΡƒΡ‚ ΠΊΠ°Π΄Π° сС запис Π΄ΠΎΠ΄Π°/ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Ρƒ Ρ‚Π°Π±Π΅Π»ΠΈ која ΠΈΠΌΠ° ΠΊΠΎΠ»ΠΎΠ½Ρƒ ΠΏΠΎΠΏΡƒΡ‚ rowversion. ВрСдност ΠΎΠ²ΠΎΠ³ Π±Ρ€ΠΎΡ˜Π°Ρ‡Π° сС аутоматски Π΄ΠΎΠ΄Π΅Ρ™ΡƒΡ˜Π΅ ΠΏΠΎΡ™Ρƒ ΠΎΠ²Π΅ ΠΊΠΎΠ»ΠΎΠ½Π΅ Ρƒ Π΄ΠΎΠ΄Π°Ρ‚ΠΎΠΌ/ΠΏΡ€ΠΎΠΌΠ΅ΡšΠ΅Π½ΠΎΠΌ запису. Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π”Π‘ΠœΠ‘ Π½Π΅ΠΌΠ° сличан ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ. ΠœΠ΅Ρ’ΡƒΡ‚ΠΈΠΌ, Ρƒ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ»Ρƒ нијС Ρ‚Π΅ΡˆΠΊΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ‚ΠΈ Π³Π° Ρ€ΡƒΡ‡Π½ΠΎ. ПоглСдајмо ΠΊΠ°ΠΊΠΎ сС Ρ‚ΠΎ Ρ€Π°Π΄ΠΈ.

ΠŸΡ€Π²ΠΎ, ΠΌΠ°Π»ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π΅: Ρ‚Π°Π±Π΅Π»Π΅ Ρƒ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ»Ρƒ сС Π·ΠΎΠ²Ρƒ Ρ€Π°Π·ΠΌΠ°Ρ†ΠΈ, Π° записи сС Π·ΠΎΠ²Ρƒ Ρ‚ΠΎΡ€ΠΊΠ΅. Π£ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ»-Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ сСквСнцС. Π‘Π΅ΠΊΠ²Π΅Π½Ρ†Π΅ нису Π½ΠΈΡˆΡ‚Π° Π΄Ρ€ΡƒΠ³ΠΎ Π΄ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ ΡƒΡ€Π΅Ρ’Π΅Π½ΠΈΡ… Ρ†Π΅Π»ΠΎΠ±Ρ€ΠΎΡ˜Π½ΠΈΡ… врСдности. ОнС. Ρ‚ΠΎ јС ΡƒΠΏΡ€Π°Π²ΠΎ ΠΎΠ½ΠΎ ΡˆΡ‚ΠΎ Π½Π°ΠΌ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π·Π° нашС сврхС. Π£ наставку Ρ›Π΅ΠΌΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ Ρ‚Π°ΠΊΠ°Π² Π½ΠΈΠ·.

ΠŸΡ€Π΅ Π½Π΅Π³ΠΎ ΡˆΡ‚ΠΎ ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡ˜Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Ρƒ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ»-Ρƒ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅Ρ‚Π΅ слСдСћу ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

box.cfg{}

Као Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ‚ΠΎΠ³Π°, Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Ρ›Π΅ ΠΏΠΎΡ‡Π΅Ρ‚ΠΈ Π΄Π° пишС снимкС Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜Π΅ Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π° Ρƒ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌ.

Π₯ајдС Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎ сСквСнцу row_version:

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

ΠžΠΏΡ†ΠΈΡ˜Π° if_not_exists Π΄ΠΎΠ·Π²ΠΎΡ™Π°Π²Π° Π΄Π° сС скрипта Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π° вишС ΠΏΡƒΡ‚Π°: Π°ΠΊΠΎ ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ, Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π½Π΅Ρ›Π΅ ΠΏΠΎΠΊΡƒΡˆΠ°Ρ‚ΠΈ Π΄Π° Π³Π° ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°. Ова ΠΎΠΏΡ†ΠΈΡ˜Π° Ρ›Π΅ сС користити Ρƒ свим Π½Π°Ρ€Π΅Π΄Π½ΠΈΠΌ Π”Π”Π› ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠ°.

Π₯ајдС Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎ простор ΠΊΠ°ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

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
})

Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Ρ‚ΠΈΠΏΠΎΠ²Π° индСкса. ΠΠ°Ρ˜Ρ‡Π΅ΡˆΡ›Π΅ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅Π½ΠΈ индСкси су Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π’Π Π•Π• ΠΈ Π₯АБΠ₯, који сС Π·Π°ΡΠ½ΠΈΠ²Π°Ρ˜Ρƒ Π½Π° структурама којС ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜Ρƒ ΠΈΠΌΠ΅Π½Ρƒ. Π’Π Π•Π• јС Π½Π°Ρ˜ΡΠ²Π΅ΡΡ‚Ρ€Π°Π½ΠΈΡ˜ΠΈ Ρ‚ΠΈΠΏ индСкса. ΠžΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π²Π°ΠΌ Π΄Π° ΠΏΡ€ΠΈΠΊΡƒΠΏΡ™Π°Ρ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π°Ρ‡ΠΈΠ½. Али Π·Π° ΡΠ΅Π»Π΅ΠΊΡ†ΠΈΡ˜Ρƒ Ρ˜Π΅Π΄Π½Π°ΠΊΠΎΡΡ‚ΠΈ, Π₯АБΠ₯ јС погоднији. Π‘Ρ…ΠΎΠ΄Π½ΠΎ Ρ‚ΠΎΠΌΠ΅, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡƒΡ‡Ρ™ΠΈΠ²ΠΎ јС користити Π₯АБΠ₯ Π·Π° ΠΏΡ€ΠΈΠΌΠ°Ρ€Π½ΠΈ ΠΊΡ™ΡƒΡ‡ (ΡˆΡ‚ΠΎ смо ΠΈ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ).

Π”Π° бистС користили ΠΊΠΎΠ»ΠΎΠ½Ρƒ 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}

ΠˆΠ΅Ρ€ ΠŸΡ€Π²ΠΎ ΠΏΠΎΡ™Π΅ јС Π±Ρ€ΠΎΡ˜Π°Ρ‡ који сС аутоматски ΠΏΠΎΠ²Π΅Ρ›Π°Π²Π°; умСсто Ρ‚ΠΎΠ³Π° прСносимо Π½ΡƒΠ»Ρƒ. Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Ρ›Π΅ аутоматски Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΠΈ слСдСћу врСдност. Π‘Π»ΠΈΡ‡Π½ΠΎ, ΠΊΠ°ΠΎ врСдност ΠΏΠΎΡ™Π° ΠΊΠΎΠ»ΠΎΠ½Π΅ 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 Π΄Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ измСњСнС ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅. Π’ΠΈΠΏ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° јС Π“Π’ (Π“Ρ€Π΅Π°Ρ‚Π΅Ρ€ Π’Ρ…Π°Π½, Π»Π°Ρ€Π³Π΅Ρ€ Ρ‚Ρ…Π°Π½). Π’ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π° Ρ›Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ узастопно ΠΏΡ€Π΅Π»Π°Π·ΠΈΡ‚ΠΈ врСдности индСкса ΠΏΠΎΡ‡Π΅Π²ΡˆΠΈ ΠΎΠ΄ прослСђСног ΠΊΡ™ΡƒΡ‡Π° (врСдност ΠΏΠΎΡ™Π° 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 ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π²Π°ΠΌ Π΄Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ који су сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΎΠ΄ њСговог послСдњСг ΠΏΠΎΠ·ΠΈΠ²Π°, ΡˆΡ‚ΠΎ јС основа ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ која сС Ρ€Π°Π·ΠΌΠ°Ρ‚Ρ€Π°.

ИздавањС Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΏΡƒΡ‚Π΅ΠΌ Π₯ВВП-Π° Ρƒ ΠΎΠ±Π»ΠΈΠΊΡƒ ЈБОН-Π° оставићСмо Π²Π°Π½ ΠΎΠΊΠ²ΠΈΡ€Π° ΠΎΠ²ΠΎΠ³ Ρ‡Π»Π°Π½ΠΊΠ°. О ΠΎΠ²ΠΎΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΠΈ ΠΎΠ²Π΄Π΅: 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 ΠΏΡ€Π΅ΠΊΠΎ Π₯ВВП-Π°. Π”Π° бисмо Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Π½Π°ΠΌ јС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° која ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° Π₯ВВП ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Π°. Π‘Π»Π΅Π΄Π΅Ρ›ΠΈ Ρ€Π΅Π΄ ΡƒΡ‡ΠΈΡ‚Π°Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ инстанцира Π₯ВВП ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Π°:

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π° Π₯ВВП Π·Π°Ρ…Ρ‚Π΅Π² Π½Π° ΡƒΡ€Π» адрСсу ΠΈ ΡˆΠ°Ρ™Π΅ Π³Π° 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 Π½ΡƒΠ»Π°. Π‘Π»Π΅Π΄Π΅Ρ›Π΅ Ρƒ циклусу Π²Ρ€ΡˆΠΈΠΌΠΎ ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ ΠΈΠ·ΠΌΠ΅ΡšΠ΅Π½ΠΈΡ… ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΎΠ΄ страницС Π΄ΠΎ страницС са ΠΈΠ·Π²ΠΎΡ€Π° Π½Π° Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΠΌ Π£Π Π›-Ρƒ. На свакој ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡ˜ΠΈ ΠΏΡ€ΠΈΠΌΡ™Π΅Π½Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Ρ‡ΡƒΠ²Π°ΠΌΠΎ Ρƒ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ простор ΠΈ Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΠΌΠΎ врСдност 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 ΠΌΠΎΠΆΠ΅ сС користити Π·Π° прСнос ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… простора: Π½Π΅ΠΌΠ° ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅ Π΄Π° сС ΠΊΡ€Π΅ΠΈΡ€Π° посСбна сСквСнца Π·Π° сваки ΠΏΡ€Π΅Π½Π΅Ρ‚ простор.

Π Π°Π·ΠΌΠΎΡ‚Ρ€ΠΈΠ»ΠΈ смо Сфикасан Π½Π°Ρ‡ΠΈΠ½ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° високог Π½ΠΈΠ²ΠΎΠ° Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ° којС користС Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π”Π‘ΠœΠ‘.

Налази

  1. Π’Π°Ρ€Π°Π½Ρ‚ΠΎΠΎΠ» Π”Π‘ΠœΠ‘ јС Π°Ρ‚Ρ€Π°ΠΊΡ‚ΠΈΠ²Π°Π½, ΠΎΠ±Π΅Ρ›Π°Π²Π°Ρ˜ΡƒΡ›ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° са Π²Π΅Π»ΠΈΠΊΠΈΠΌ ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ΅ΠΌ.
  2. Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° високог Π½ΠΈΠ²ΠΎΠ° ΠΈΠΌΠ° Π±Ρ€ΠΎΡ˜Π½Π΅ прСдности Ρƒ односу Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ниског Π½ΠΈΠ²ΠΎΠ°.
  3. ΠœΠ΅Ρ‚ΠΎΠ΄Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ високог Π½ΠΈΠ²ΠΎΠ° ΠΎ којој сС Π³ΠΎΠ²ΠΎΡ€ΠΈ Ρƒ Ρ‡Π»Π°Π½ΠΊΡƒ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π²Π°ΠΌ Π΄Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈΡ… ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° прСносом само ΠΎΠ½ΠΈΡ… записа који су сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΎΠ΄ послСдњС сСсијС Ρ€Π°Π·ΠΌΠ΅Π½Π΅.

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€