เจ…เจชเจพเจšเฉ‡ เจ‡เจ—เจจเจพเจˆเจŸ เจœเจผเฉ€เจฐเฉ‹ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ: เจ…เจธเจฒ เจตเจฟเฉฑเจš เจœเจผเฉ€เจฐเฉ‹?

เจ…เจชเจพเจšเฉ‡ เจ‡เจ—เจจเจพเจˆเจŸ เจœเจผเฉ€เจฐเฉ‹ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ: เจ…เจธเจฒ เจตเจฟเฉฑเจš เจœเจผเฉ€เจฐเฉ‹?

เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจชเฉเจฐเจšเฉ‚เจจ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฆเจพ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจตเจฟเจ•เจพเจธ เจตเจฟเจญเจพเจ— เจนเจพเจ‚เฅค เจ‡เฉฑเจ• เจฆเจฟเจจ, เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉ‡ MSSQL เจฆเฉ‡ เจจเจพเจฒ Apache Ignite เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจตเฉฑเจกเฉ‡ เจชเฉˆเจฎเจพเจจเฉ‡ เจฆเฉ€เจ†เจ‚ เจ—เจฃเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผ เจ•เจฐเจจ เจฆเจพ เจ•เฉฐเจฎ เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเจพ, เจ…เจคเฉ‡ เจœเจพเจตเจพ เจ•เฉ‹เจก เจฆเฉ‡ เจธเฉเฉฐเจฆเจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจตเฉˆเจฌเจธเจพเจˆเจŸ เจฆเจฟเจ–เจพเจˆเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจคเฉเจฐเฉฐเจค เจธเจพเจˆเจŸ เจชเจธเฉฐเจฆ เจ†เจˆ เจœเจผเฉ€เจฐเฉ‹ เจคเฉˆเจจเจพเจคเฉ€, เจœเจฟเจธ เจฆเจพ เจตเจฐเจฃเจจ เจšเจฎเจคเจ•เจพเจฐเจพเจ‚ เจฆเจพ เจตเจพเจ…เจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆ: เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ—เจฐเจฟเฉฑเจก เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจจเฉ‹เจก 'เจคเฉ‡ เจ†เจชเจฃเฉ‡ Java เจœเจพเจ‚ Scala เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฆเจธเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจนเจฐ เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจ‡เจน เจฌเจฆเจฒเจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฎเฉเฉœ-เจคเฉˆเจจเจพเจค เจ•เจฐเจจเจพ เจชเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ•เฉฐเจฎ เจ…เฉฑเจ—เฉ‡ เจตเจงเจฆเจพ เจ—เจฟเจ†, เจ‡เจน เจชเจคเจพ เจšเจฒเจฟเจ† เจ•เจฟ เจœเจผเฉ€เจฐเฉ‹ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจฆเฉ‡ เจ–เจพเจธ เจ‰เจชเจฏเฉ‹เจ— เจนเจจ, เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฎเฉˆเจ‚ เจธเจพเจ‚เจเฉ€เจ†เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚เฅค เจ•เฉฑเจŸ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจตเจฟเจšเจพเจฐ เจ…เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจตเฉ‡เจฐเจตเฉ‡ เจนเจจเฅค

1. เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจฌเจฟเจ†เจจ

เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจธเจพเจฐ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ…เจจเฉเจธเจพเจฐ เจนเฉˆ. เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• SalesPoint เจธเฉ‡เจฒเจœเจผ เจชเฉเจ†เจ‡เฉฐเจŸ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจ…เจคเฉ‡ เจ‡เฉฑเจ• Sku (เจธเจŸเจพเจ• เจ•เฉ€เจชเจฟเฉฐเจ— เจฏเฉ‚เจจเจฟเจŸ) เจ‰เจคเจชเจพเจฆ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจนเฉˆเฅค เจตเจฟเจ•เจฐเฉ€ เจฆเฉ‡ เจชเฉเจ†เจ‡เฉฐเจŸ เจตเจฟเฉฑเจš "เจ›เฉ‹เจŸเฉ‡" เจ…เจคเฉ‡ "เจตเฉฑเจกเฉ‡" เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• "เจธเจŸเฉ‹เจฐ เจ•เจฟเจธเจฎ" เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจตเฉฐเจก (เจตเจฟเจ•เจฐเฉ€ เจฆเฉ‡ เจฌเจฟเฉฐเจฆเฉ‚ เจฆเฉ‡ เจ‰เจคเจชเจพเจฆเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€) เจตเจฟเจ•เจฐเฉ€ เจฆเฉ‡ เจนเจฐเฉ‡เจ• เจฌเจฟเฉฐเจฆเฉ‚ เจจเจพเจฒ เจœเฉเฉœเฉ€ เจนเฉ‹เจˆ เจนเฉˆ (เจกเฉ€เจฌเฉ€เจเจฎเจเจธ เจคเฉ‹เจ‚ เจฒเฉ‹เจก เจ•เฉ€เจคเฉ€ เจ—เจˆ) เจ…เจคเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ เจ•เจฟ เจจเจฟเจฐเจงเจพเจฐเจค เจฎเจฟเจคเฉ€ เจคเฉ‹เจ‚ เจจเจฟเจฐเจงเจพเจฐเจค เจ‰เจคเจชเจพเจฆ
เจตเจฐเจ—เฉ€เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจฐเฉฑเจ–เจฟเจ† เจ—เจฟเจ† เจœเจพเจ‚ เจตเจฐเจ—เฉ€เจ•เจฐเจจ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ†เฅค

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

2. เจธเจพเจนเจฟเจค เจฆเจพ เจ…เจงเจฟเจเจจ

เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ…เจœเฉ‡ เจ•เฉ‹เจˆ เจ…เจจเฉเจญเจต เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจธเจŸเฉ‹เจต เจคเฉ‹เจ‚ เจจเฉฑเจšเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚เฅค เจญเจพเจต, เจชเฉเจฐเจ•เจพเจธเจผเจจเจพเจ‚ เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ† เจคเฉ‹เจ‚.

เจ†เจฐเจŸเฉ€เจ•เจฒ 2016 เจ…เจชเจพเจšเฉ‡ เจ‡เจ—เจจเจพเจˆเจŸ เจจเฉ‚เฉฐ เจชเฉ‡เจธเจผ เจ•เจฐเจจเจพ: เจชเจนเจฟเจฒเฉ‡ เจ•เจฆเจฎ เจ‡เจธ เจตเจฟเฉฑเจš เจ…เจชเจพเจšเฉ‡ เจ‡เจ—เจจเจพเจˆเจŸ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจฒเจฟเฉฐเจ• เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ‡เจธ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจฆเฉ€ เจ…เจธเจชเจธเจผเจŸเจคเจพ เจฒเจˆ เจ‡เฉฑเจ• เจฌเจฆเจจเจพเจฎเฉ€ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฆเฉ‹ เจตเจพเจฐ เจฆเฉเจฌเจพเจฐเจพ เจชเฉœเฉเจนเจฆเจพ เจนเจพเจ‚, เจธเจชเจธเจผเจŸเจคเจพ เจจเจนเฉ€เจ‚ เจ†เจ‰เจ‚เจฆเฉ€. เจฎเฉˆเจ‚ เจ…เจงเจฟเจ•เจพเจฐเจค เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเจพ, เจœเฉ‹ เจ•เจฟ
เจ†เจธเจผเจพเจตเจพเจฆเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจพเจ…เจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ "เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจชเจฒ เจตเจฟเฉฑเจš เจคเจฟเจ†เจฐ เจนเฉ‹ เจœเจพเจตเฉ‹เจ—เฉ‡!" เจฎเฉˆเจ‚ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพ เจฐเจฟเจนเจพ เจนเจพเจ‚, เจฆเฉ‹ Apache Ignite Essentials เจตเฉ€เจกเฉ€เจ“ เจฆเฉ‡เจ– เจฐเจฟเจนเจพ เจนเจพเจ‚, เจชเจฐ เจ‰เจน เจฎเฉ‡เจฐเฉ‡ เจ–เจพเจธ เจ•เฉฐเจฎ เจฒเจˆ เจฌเจนเฉเจค เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจจเจนเฉ€เจ‚ เจธเจจเฅค เจฎเฉˆเจ‚ เจชเจนเจฟเจฒเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹เจ, เจธเจŸเฉˆเจ‚เจกเจฐเจก เจซเจพเจˆเจฒ โ€œexample-ignite.xmlโ€ เจจเจพเจฒ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจคเฉ‹เจ‚ เจ‡เจ—เจจเจพเจˆเจŸ เจจเฉ‚เฉฐ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจ—เจฃเจจเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฎเจพเจตเฉ‡เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ. เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจœเจผเฉ€เจฐเฉ‹ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ•เจฟเฉฐเจจเฉ€ เจธเฉเฉฐเจฆเจฐเจคเจพ เจนเฉˆ!

เจฎเฉˆเจ‚ เจ…เฉฑเจ—เฉ‡ เจชเฉœเฉเจนเจฟเจ†, เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจ‰เจฆเจพเจนเจฐเจจ เจคเฉเจฐเฉฐเจค affinityKey (เจ‡เฉฑเจ• SQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเฉเจ†เจฐเจพ เจชเจนเจฟเจฒเจพเจ‚ เจฌเจฃเจพเจˆ เจ—เจˆ) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจฐเจนเฉฑเจธเจฎเจˆ BinaryObject เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ:

IgniteCache<BinaryObject, BinaryObject> people 
        = ignite.cache("Person").withKeepBinary(); 

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

เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจ•เฉ‡เจธ เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจนเฉ‹เจฃ เจฒเจˆ เจ•เฉฐเจชเจฟเจŠเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฐเฉ€เจฎเฉ‡เจ• เจ•เจฐ เจฐเจฟเจนเจพ/เจฐเจนเฉ€ เจนเจพเจ‚เฅค MSSQL เจตเจฟเฉฑเจš เจชเฉเจ†เจ‡เฉฐเจŸ เจ†เจซเจผ เจธเฉ‡เจฒ เจฆเฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ€ เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจจเฉ‚เฉฐ [id] [int] NOT NULL เจตเจœเฉ‹เจ‚ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจฎเฉˆเจ‚ เจธเจฎเจพเจจเจคเจพ เจฆเฉเจ†เจฐเจพ เจ‡เฉฑเจ• เจ•เฉˆเจธเจผ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเจพเจ‚

IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")

xml เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจ•เฉˆเจธเจผ เจตเฉฐเจกเจฟเจ† เจ—เจฟเจ† เจนเฉˆ

<bean class="org.apache.ignite.configuration.CacheConfiguration">
    <property name="name" value="spCache"/>
    <property name="cacheMode" value="PARTITIONED"/>
</bean>

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

เจฎเฉˆเจ‚ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจชเฉœเฉเจน เจฐเจฟเจนเจพ/เจฐเจนเฉ€ เจนเจพเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ‡เจ—เจจเจพเจˆเจŸ เจ•เฉฐเจชเจฟเจŠเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฎเจพเจจเจคเจพ เจฆเฉเจ†เจฐเจพ เจ•เจฐเจฆเจพ เจนเจพเจ‚. เจนเจฐเฉ‡เจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‹เจก 'เจคเฉ‡ เจฎเฉˆเจ‚ IgniteRunnable(), เจ•เฉเจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเจพเจ‚:

  @Override
  public void run() {
    SalesPoint sp=salesPointCache.get(spId);
    sp.calculateSalesPointCount();
    ..
  }

เจฎเฉˆเจ‚ เจเจ—เจฐเฉ€เจ—เฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจ…เจชเจฒเฉ‹เจกเจฟเฉฐเจ— เจคเจฐเจ• เจœเฉ‹เฉœเจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจŸเฉˆเจธเจŸ เจกเฉ‡เจŸเจพ เจธเฉˆเฉฑเจŸ 'เจคเฉ‡ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเจพเจ‚เฅค เจตเจฟเจ•เจพเจธ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจธเจญ เจ•เฉเจ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจฆเฉ‹ CentOs เจŸเฉˆเจธเจŸ เจธเจฐเจตเจฐ เจฒเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเจพเจ‚, เจกเจฟเจซเจพเจฒเจŸ-config.xml เจตเจฟเฉฑเจš IP เจเจกเจฐเฉˆเฉฑเจธ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเจพ เจนเจพเจ‚, เจนเจฐเฉ‡เจ• 'เจคเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค

./bin/ignite.sh config/default-config.xml

เจฆเฉ‹เจตเฉ‡เจ‚ เจ‡เจ—เจจเจพเจˆเจŸ เจจเฉ‹เจก เจšเฉฑเจฒ เจฐเจนเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเฉ‚เฉฐ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจฎเฉˆเจ‚ เจ•เจฒเจพเจ‡เฉฐเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ xml เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจชเจคเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเจพ เจนเจพเจ‚, เจ‡เจน เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจŸเฉŒเจชเฉŒเจฒเฉ‹เจœเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจคเฉ€เจœเจพ เจจเฉ‹เจก เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจคเฉเจฐเฉฐเจค เจฆเฉ‹ เจจเฉ‹เจก เจฆเฉเจฌเจพเจฐเจพ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจฒเฉŒเจ— เจฒเจพเจˆเจจ เจตเจฟเฉฑเจš โ€œClassNotFoundException: model.SalesPointโ€ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ

SalesPoint sp=salesPointCache.get(spId);

เจธเจŸเฉˆเจ•เจ“เจตเจฐเจซเจฒเฉ‹ เจ•เจนเจฟเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ—เจฒเจคเฉ€ เจฆเจพ เจ•เจพเจฐเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ CentOs เจธเจฐเจตเจฐเจพเจ‚ 'เจคเฉ‡ เจ•เฉ‹เจˆ เจ•เจธเจŸเจฎ เจธเฉ‡เจฒเจธเจชเฉเจ†เจ‡เฉฐเจŸ เจ•เจฒเจพเจธ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจ…เจธเฉ€เจ‚ เจชเจนเฉเฉฐเจš เจ—เจ เจนเจพเจ‚เฅค "เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเจฐเฉ‡เจ• เจจเฉ‹เจก 'เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจœเจพเจตเจพ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ" เจ†เจฆเจฟ เจฌเจพเจฐเฉ‡ เจ•เจฟเจตเฉ‡เจ‚? เจœเจพเจ‚ เจ•เฉ€ โ€œเจคเฉเจนเจพเจกเจพ เจœเจพเจตเจพ เจ•เฉ‹เจกโ€ เจธเฉ‡เจฒเจธเจชเฉเจ†เจ‡เฉฐเจŸ เจฌเจพเจฐเฉ‡ เจจเจนเฉ€เจ‚ เจนเฉˆ?

เจฎเฉˆเจจเฉ‚เฉฐ เจธเจผเจพเจ‡เจฆ เจ•เฉเจ เจ–เฉเฉฐเจ เจ—เจฟเจ† เจนเฉˆ - เจฎเฉˆเจ‚ เจฆเฉเจฌเจพเจฐเจพ เจ–เฉ‹เจœ เจ•เจฐเจจเจพ, เจชเฉœเฉเจนเจจเจพ เจ…เจคเฉ‡ เจฆเฉเจฌเจพเจฐเจพ เจ–เฉ‹เจœเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค เจ•เฉเจ เจฆเฉ‡เจฐ เจฌเจพเจ…เจฆ, เจฎเฉˆเจจเฉ‚เฉฐ เจ…เจนเจฟเจธเจพเจธ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจ‚ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจธเจญ เจ•เฉเจ เจชเฉœเฉเจน เจฒเจฟเจ† เจนเฉˆ, เจนเฉเจฃ เจ•เฉเจ เจจเจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจ–เฉ‹เจœ เจ•เจฐ เจฐเจฟเจนเจพ เจธเฉ€, เจฎเฉˆเจจเฉ‚เฉฐ เจ•เฉเจ เจฆเจฟเจฒเจšเจธเจช เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจฎเจฟเจฒเฉ€เจ†เจ‚เฅค

เจตเฉˆเจฒเฉ‡เจจเจŸเจฟเจจ เจ•เฉเจฒเฉ€เจšเฉ‡เจ‚เจ•เฉ‹, เจ—เจฐเจฟเฉฑเจกเจ—เฉ‡เจจ เจธเจฟเจธเจŸเจฎเจœเจผ เจตเจฟเจ–เฉ‡ เจฒเฉ€เจก เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจŸ, เจœเจตเจพเจฌ เจธเจŸเฉˆเจ• เจ“เจตเจฐเจซเจฒเฉ‹ 'เจคเฉ‡, เจ…เจชเฉเจฐเฉˆเจฒ 2016:

Model classes are not peer deployed, but you can use withKeepBinary() flag
on the cache and query BinaryObjects. This way you will avoid deserialization
on the server side and will not get ClassNotFoundException.

เจ‡เจ• เจนเฉ‹เจฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจ• โ€‹โ€‹เจฐเจพเจ: เจกเฉ‡เจจเจฟเจธ เจฎเฉˆเจ—เจกเจพ, เจ‰เจคเจชเจพเจฆ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฆเฉ‡ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐ, GridGain Systems.

Habrรฉ 'เจคเฉ‡ เจฒเฉ‡เจ– เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจฌเจพเจฐเฉ‡ เจกเฉ‡เจจเจฟเจธ เจฎเฉˆเจ—เจกเจพ เจฆเฉเจ†เจฐเจพ เจคเจฟเฉฐเจจ เจฒเฉ‡เจ–เจพเจ‚ เจฆเจพ เจนเจตเจพเจฒเจพ: เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจญเจพเจ— I, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจญเจพเจ— II, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจญเจพเจ— III 2016-2017เฅค เจฆเฉ‚เจœเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจกเฉ‡เจจเจฟเจธ MaintenanceServiceNodeStartup.jar เจฆเฉเจ†เจฐเจพ เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‹เจก เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเจพ เจธเฉเจเจพเจ… เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ xml เจธเฉฐเจฐเจšเจจเจพ เจ…เจคเฉ‡ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจฆเฉ‡ เจจเจพเจฒ เจฒเจพเจ‚เจš เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจซเจฟเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเจฐเฉ‡เจ• เจคเฉˆเจจเจพเจค เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‹เจก 'เจคเฉ‡ เจ•เจธเจŸเจฎ เจ•เจฒเจพเจธเจพเจ‚ เจจเฉ‚เฉฐ เจฆเจธเจคเฉ€ เจฒเจ—เจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

That's it. Start (..)  node using MaintenanceServiceNodeStartup file or pass
maintenance-service-node-config.xml to Apache Ignite's ignite.sh/bat scripts.
If you prefer the latter then make sure to build a jar file that will contain
all the classes from java/app/common and java/services/maintenance directories.
The jar has to be added to the classpath of every node where the service
might be deployed.

เจฆเจฐเจ…เจธเจฒ, เจ‡เจน เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจ‡เจน เจชเจคเจพ เจšเจฒเจฆเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚, เจ‡เจน เจฐเจนเฉฑเจธเจฎเจˆ เจฌเจพเจˆเจจเจฐเฉ€ เจซเจพเจฐเจฎเฉˆเจŸ!

3. เจธเจฟเฉฐเจ—เจฒเจœเจพเจฐ

เจกเฉˆเจจเจฟเจธ เจจเฉ‡ เจฎเฉ‡เจฐเฉ€ เจจเจฟเฉฑเจœเฉ€ เจฐเฉ‡เจŸเจฟเฉฐเจ— เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพ เจธเจฅเจพเจจ เจฒเจฟเจ†, IMHO เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจ‰เจชเจฒเจฌเจง เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒเฅค เจ‰เจธเจฆเฉ‡ เจตเจฟเฉฑเจš เจฎเจพเจˆเจ•เจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจ‰เจฆเจพเจนเจฐเจจ เจ—เจฟเจฅเจฌ เจตเจฟเฉฑเจš เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‹เจก เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจคเจฟเจ†เจฐ-เจ•เฉ€เจคเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจนเฉˆ, เจœเฉ‹ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจตเจพเจงเฉ‚ เจธเจ•เฉเจเจŸเจฟเฉฐเจ— เจฆเฉ‡ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

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

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

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

เจ…เจชเจพเจšเฉ‡ เจ‡เจ—เจจเจพเจˆเจŸ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจฆเฉ€ เจ…เจธเจชเจธเจผเจŸเจคเจพ เจฌเจพเจฐเฉ‡ เจ†เจˆ เจชเจนเจฟเจฒเฉ€ เจฌเจฆเจจเจพเจฎเฉ€ เจจเจฟเจฐเจชเฉฑเจ– เจธเจพเจฌเจค เจนเฉ‹เจˆ; 2016 เจคเฉ‹เจ‚ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจฌเจฆเจฒเจฟเจ† เจนเฉˆเฅค เจ‡เฉฑเจ• เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจตเฉˆเจฌเจธเจพเจˆเจŸ เจ…เจคเฉ‡/เจœเจพเจ‚ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

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

เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจฎเฉ‡เจฐเจพ เจ…เจจเฉเจญเจต เจจเจตเฉ‡เจ‚ เจ…เจชเจพเจšเฉ‡ เจ‡เจ—เจจเจพเจˆเจŸ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฒเจˆ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

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

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