เด…เดชเตเดชเดพเดšเตเดšเต† เด‡เด—เตเดจเตˆเดฑเตเดฑเต เดธเต€เดฑเต‹ เดตเดฟเดจเตเดฏเดพเดธเด‚: เดถเดฐเดฟเด•เตเด•เตเด‚ เดชเต‚เดœเตเดฏเดฎเดพเดฃเต‹?

เด…เดชเตเดชเดพเดšเตเดšเต† เด‡เด—เตเดจเตˆเดฑเตเดฑเต เดธเต€เดฑเต‹ เดตเดฟเดจเตเดฏเดพเดธเด‚: เดถเดฐเดฟเด•เตเด•เตเด‚ เดชเต‚เดœเตเดฏเดฎเดพเดฃเต‹?

เดžเด™เตเด™เตพ เด’เดฐเต เดฑเต€เดŸเตเดŸเต†เดฏเดฟเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเตเดฑเต† เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดตเดฟเด•เดธเดจ เดตเด•เตเดชเตเดชเดพเดฃเต. เด’เดฐเต เดฆเดฟเดตเดธเด‚, MSSQL-เดจเตŠเดชเตเดชเด‚ เด…เดชเตเดชเดพเดšเตเดšเต† เด‡เด—เตเดจเตˆเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเดฒเดฟเดฏ เดคเต‹เดคเดฟเดฒเตเดณเตเดณ เด•เดฃเด•เตเด•เตเด•เต‚เดŸเตเดŸเดฒเตเด•เตพ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เดพเตป เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดšเตเดฎเดคเดฒเดชเตเดชเต†เดŸเตเดคเตเดคเดฟ, เด•เต‚เดŸเดพเดคเต† เดœเดพเดต เด•เต‹เดกเดฟเดจเตเดฑเต† เดฎเดจเต‹เดนเดฐเดฎเดพเดฏ เดšเดฟเดคเตเดฐเต€เด•เดฐเดฃเด™เตเด™เดณเตเด‚ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเด‚ เด‰เดณเตเดณ เด’เดฐเต เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเต เด•เดพเดฃเดฟเดšเตเดšเต. เดžเดพเตป เด‰เดŸเดจเต† เดธเตˆเดฑเตเดฑเต เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดŸเต เดธเต€เดฑเต‹ เดตเดฟเดจเตเดฏเดพเดธเด‚, เด‡เดคเดฟเดจเตเดฑเต† เดตเดฟเดตเดฐเดฃเด‚ เด…เดคเตเดญเตเดคเด™เตเด™เตพ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต: เด—เตเดฐเดฟเดกเดฟเดฒเต† เด“เดฐเต‹ เดจเต‹เดกเดฟเดฒเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† Java เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Scala เด•เต‹เดกเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ, เด…เดคเต เดฎเดพเดฑเตเดฎเตเดชเต‹เดดเต†เดฒเตเดฒเดพเด‚ เดตเต€เดฃเตเดŸเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•. เดœเต‹เดฒเดฟ เดชเตเดฐเต‹เด—เดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดธเต€เดฑเต‹ เดกเดฟเดชเตเดฒเต‹เดฏเตโ€Œเดฎเต†เดจเตเดฑเดฟเดจเต เดชเตเดฐเดคเตเดฏเต‡เด• เด‰เดชเดฏเต‹เด—เด™เตเด™เดณเตเดฃเตเดŸเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดฏเดฟ, เด…เดคเดฟเดจเตเดฑเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดžเดพเตป เดชเด™เตเด•เดฟเดŸเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เด•เดŸเตเดŸเดฟเดจเต เดคเดพเดดเต† เดšเดฟเดจเตเดคเด•เดณเตเด‚ เดจเดŸเดชเตเดชเดพเด•เตเด•เตฝ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเตเด‚ เด‰เดฃเตเดŸเต.

1. เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดธเตเดคเดพเดตเดจ

เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดธเดพเดฐเดพเด‚เดถเด‚ เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต. เด’เดฐเต SalesPoint เดธเต†เดฏเดฟเตฝเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเต เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเด‚ เด’เดฐเต Sku (เดธเตเดฑเตเดฑเต‹เด•เตเด•เต เด•เต€เดชเตเดชเดฟเด‚เด—เต เดฏเต‚เดฃเดฟเดฑเตเดฑเต) เด‰เตฝเดชเตเดชเดจเตเดจ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเด‚ เด‰เดฃเตเดŸเต. เดตเดฟเตฝเดชเตเดชเดจ เดชเต‹เดฏเดฟเดจเตเดฑเดฟเดจเต "เดšเต†เดฑเตเดคเต", "เดตเดฒเตเดคเต" เดŽเดจเตเดจเต€ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต "เดธเตเดฑเตเดฑเต‹เตผ เดคเดฐเด‚" เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เด‰เดฃเตเดŸเต. เด“เดฐเต‹ เดตเดฟเตฝเดชเตเดชเดจ เดชเต‹เดฏเดฟเดจเตเดฑเตเดฎเดพเดฏเดฟ (เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเต‹เดกเตเดšเต†เดฏเตโ€Œเดคเดคเต) เด’เดฐเต เดถเต‡เด–เดฐเด‚ (เดตเดฟเดชเดฃเดจ เดชเต‹เดฏเดฟเดจเตเดฑเดฟเดจเตเดฑเต† เด‰เตฝเดชเตเดชเดจเตเดจเด™เตเด™เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต) เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดคเต€เดฏเดคเดฟ เดฎเตเดคเตฝ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด‰เตฝเดชเตเดชเดจเตเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดจเตฝเด•เตเดจเตเดจเต.
เดถเต‡เด–เดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดดเดฟเดตเดพเด•เตเด•เดฟ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ เดšเต‡เตผเดคเตเดคเต.

เดตเดฟเตฝเดชเตเดชเดจ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดตเดฟเดญเดœเดฟเดšเตเดš เด•เดพเดทเต† เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดš เด‰เตฝเดชเตเดชเดจเตเดจเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด’เดฐเต เดฎเดพเดธเดคเตเดคเต‡เด•เตเด•เต เด…เดคเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด•เต‹เด‚เดฌเดพเดฑเตเดฑเต เดธเดฟเดธเตเดฑเตเดฑเดตเตเดฎเดพเดฏเตเดณเตเดณ เดชเตŠเดฐเตเดคเตเดคเดคเตเดคเดฟเดจเต, เดกเดพเดฑเตเดฑ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดซเต‹เดฎเดฟเดจเตเดฑเต† เดฎเตŠเดคเตเดคเด‚ (เดธเตเดฑเตเดฑเต‹เตผ เดคเดฐเด‚, เด‰เตฝเดชเตเดชเดจเตเดจ เด•เต‹เดกเต, เดฆเดฟเดตเดธเด‚, เดจเดฎเตเดชเตผ_of_sales_points) เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ DBMS-เดฒเต‡เด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ Ignite เด•เตเดฒเดฏเดจเตเดฑเต เดจเต‹เดกเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

2. เดธเดพเดนเดฟเดคเตเดฏ เดชเด เดจเด‚

เดŽเดจเดฟเด•เตเด•เต เด‡เดคเตเดตเดฐเต† เด’เดฐเต เด…เดจเตเดญเดตเดตเตเด‚ เด‡เดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดžเดพเตป เดธเตเดฑเตเดฑเต—เดตเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเตƒเดคเตเดคเด‚ เดšเต†เดฏเตเดฏเดพเตป เดคเตเดŸเด™เตเด™เตเด•เดฏเดพเดฃเต. เด…เดคเดพเดฏเดคเต, เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฃเด™เตเด™เดณเตเดŸเต† เด…เดตเดฒเต‹เด•เดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต.

เด†เตผเดŸเตเดŸเดฟเด•เตเด•เดฟเตพ 2016 เด…เดชเตเดชเดพเดšเตเดšเต† เด‡เด—เตเดจเตˆเดฑเตเดฑเต เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต: เด†เดฆเตเดฏ เด˜เดŸเตเดŸเด™เตเด™เตพ เด…เดชเตเดชเดพเดšเตเดšเต† เด‡เด—เตเดจเตˆเดฑเตเดฑเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดฒเดฟเด™เตเด•เตเด‚ เด…เดคเต‡ เดธเดฎเดฏเด‚ เดˆ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเดฑเต† เด…เดตเตเดฏเด•เตเดคเดคเดฏเตเด•เตเด•เตเดณเตเดณ เด’เดฐเต เดจเดฟเดจเตเดฆเดฏเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดจเตเดจเตเดฐเดฃเตเดŸเต เดคเดตเดฃ เดตเต€เดฃเตเดŸเตเด‚ เดตเดพเดฏเดฟเดšเตเดšเดฟเดŸเตเดŸเตเด‚ เดตเตเดฏเด•เตเดคเดค เดตเดฐเตเดจเตเดจเดฟเดฒเตเดฒ. เดžเดพเตป เด”เดฆเตเดฏเต‹เด—เดฟเด• เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เตเดจเตเดจเต เด†เดฎเตเด–เด‚, เดเดคเต
เดถเตเดญเดพเดชเตเดคเดฟเดตเดฟเดถเตเดตเดพเดธเดคเตเดคเต‹เดŸเต† "เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดจเดฟเดฎเดฟเดทเด‚ เด•เตŠเดฃเตเดŸเต เดŽเดดเตเดจเตเดจเต‡เดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚!" เดžเดพเตป เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด•เดฏเดพเดฃเต, เดฐเดฃเตเดŸเต เด…เดชเตเดชเดพเดšเตเดšเต† เด‡เด—เตเดจเตˆเดฑเตเดฑเต เดŽเดธเตปเดทเตเดฏเตฝเดธเต เดตเต€เดกเดฟเดฏเต‹เด•เตพ เด•เดพเดฃเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด…เดต เดŽเดจเตเดฑเต† เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเดจเต เดตเดณเดฐเต† เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ. เด†เดฆเตเดฏเดคเตเดคเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจ "example-ignite.xml" เดŽเดจเตเดจ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดซเดฏเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฎเดพเตปเดกเต เดฒเตˆเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเดพเตป Ignite เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฎเดพเดตเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเต€เดฑเต‹ เดกเดฟเดชเตเดฒเต‹เดฏเตโ€Œเดฎเต†เดจเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดŽเดจเตเดคเตŠเดฐเต เดญเด‚เด—เดฟ!

เดžเดพเตป เด•เต‚เดŸเตเดคเตฝ เดตเดพเดฏเดฟเดšเตเดšเต, เด…เดตเดฟเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดŸเดจเดŸเดฟ affinityKey เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เด’เดฐเต SQL เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเดฒเต‚เดŸเต† เดจเต‡เดฐเดคเตเดคเต† เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเต), เด•เต‚เดŸเดพเดคเต† เดจเดฟเด—เต‚เดขเดฎเดพเดฏ BinaryObject เดชเต‹เดฒเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต:

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

เดžเดพเตป เด…เดคเต เดตเดพเดฏเดฟเดšเตเดšเต เด…เดฒเตเดชเด‚: เดฌเตˆเดจเดฑเดฟ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต - เดชเตเดฐเดคเดฟเดซเดฒเดจเด‚ เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด’เดจเตเดจเต, เด’เดฐเต เดตเดธเตเดคเตเดตเดฟเดจเตเดฑเต† เดซเต€เตฝเดกเตเด•เตพ เดชเต‡เดฐเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเดฟเดจเต† เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเดพเดคเต† เดคเดจเตเดจเต† เด’เดฐเต เดซเต€เตฝเดกเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เดฎเต†เดฎเตเดฎเดฑเดฟ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต). เดธเต€เดฑเต‹ เดกเดฟเดชเตเดฒเต‹เดฏเตโ€Œเดฎเต†เดจเตเดฑเต เด‰เดณเตเดณเดคเดฟเดจเดพเตฝ เดตเตเดฏเด•เตเดคเดฟเด•เตเด•เต เดชเด•เดฐเด‚ เดฌเตˆเดจเดฑเดฟ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต? เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เด‡เด—เตเดจเตˆเดฑเตเดฑเต เด•เดพเดทเต† IgniteCache-เดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเดฟ ? เด‡เดคเตเดตเดฐเต† เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ.

เดŽเดจเตเดฑเต† เด•เต‡เดธเดฟเดจเต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดžเดพเตป เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฑเต€เดฎเต‡เด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•เดฏเดพเดฃเต. MSSQL-เดฒเต† เดตเดฟเตฝเดชเตเดชเดจ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเตเดŸเต† เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเตเดŸเต† เดชเตเดฐเดพเดฅเดฎเดฟเด• เด•เต€ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต [id] [int] 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 เดŸเต†เดธเตเดฑเตเดฑเต เดธเต†เตผเดตเดฑเตเด•เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต, default-config.xml-เตฝ IP เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•, เด“เดฐเต‹เดจเตเดจเดฟเดฒเตเด‚ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด•

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

เดฐเดฃเตเดŸเต เด‡เด—เตเดจเตˆเดฑเตเดฑเต เดจเต‹เดกเตเด•เดณเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดชเดฐเดธเตเดชเดฐเด‚ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚. เด•เตเดฒเดฏเดจเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† xml เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เดžเดพเตป เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต, เดŸเต‹เดชเตเดชเต‹เดณเดœเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต† เดจเต‹เดกเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต, เด‰เดŸเดจเต† เดตเต€เดฃเตเดŸเตเด‚ เดฐเดฃเตเดŸเต เดจเต‹เดกเตเด•เตพ เด‰เดฃเตเดŸเต. เดฒเต‹เด—เต เดฒเตˆเดจเดฟเตฝ "ClassNotFoundException: model.SalesPoint" เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต

SalesPoint sp=salesPointCache.get(spId);

CentOs เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดธเต†เดฏเดฟเตฝเดธเตโ€Œเดชเต‹เดฏเดฟเดจเตเดฑเต เด•เตเดฒเดพเดธเต เด‡เดฒเตเดฒเดพเดคเตเดคเดคเดพเดฃเต เดชเดฟเดถเด•เดฟเดจเต เด•เดพเดฐเดฃเดฎเต†เดจเตเดจเต StackOverflow เดชเดฑเดฏเตเดจเตเดจเต. เดžเด™เตเด™เตพ เดŽเดคเตเดคเดฟ. "เด“เดฐเต‹ เดจเต‹เดกเดฟเดฒเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเดพเดต เด•เต‹เดกเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ" เดŽเดจเตเดจเดคเตเด‚ เดฎเดฑเตเดฑเตเด‚ เดŽเด™เตเด™เดจเต†? เด…เดคเต‹ "เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเดพเดต เด•เต‹เดกเต" เดธเต†เดฏเดฟเตฝเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณเดคเดฒเตเดฒเต‡?

เดŽเดจเดฟเด•เตเด•เต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเดทเตเดŸเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚ - เดžเดพเตป เดตเต€เดฃเตเดŸเตเด‚ เดคเดฟเดฐเดฏเดพเดจเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เดตเต€เดฃเตเดŸเตเด‚ เดคเดฟเดฐเดฏเดพเดจเตเด‚ เดคเตเดŸเด™เตเด™เตเดจเตเดจเต. เด•เตเดฑเดšเตเดšเต เด•เดดเดฟเดžเตเดžเดชเตเดชเต‹เตพ, เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เดตเดพเดฏเดฟเดšเตเดšเต, เด‡เดจเดฟ เดชเตเดคเดฟเดฏเดคเดพเดฏเดฟ เด’เดจเตเดจเตเดฎเดฟเดฒเตเดฒ เดŽเดจเตเดจ เดคเต‹เดจเตเดจเตฝ. เดคเดฟเดฐเดžเตเดžเดชเตเดชเต‹เตพ เดฐเดธเด•เดฐเดฎเดพเดฏ เดšเดฟเดฒ เด•เดฎเดจเตเดฑเตเด•เตพ เด•เดฃเตเดŸเต.

เดตเดพเดฒเดจเตเดฑเตˆเตป เด•เตเดฒเดฟเดšเต†เด™เตเด•เต‹, เด—เตเดฐเดฟเดกเตโ€Œเด—เต†เดฏเดฟเตป เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต† เดฒเต€เดกเต เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดฑเตเดฑเต, เด‰เดคเตเดคเดฐเด‚ StackOverflow-เตฝ, เดเดชเตเดฐเดฟเตฝ 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 เดธเดฟเดธเตเดฑเตเดฑเด‚เดธเต.

เดนเดฌเตเดฐเต†เดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฒเต‡เด–เดจเด‚ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดกเต†เดจเดฟเดธเต เดฎเด—เตเดฆเดฏเตเดŸเต† เดฎเต‚เดจเตเดจเต เดฒเต‡เด–เดจเด™เตเด™เตพ เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เตเดจเตเดจเต: เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเดธเต เดญเดพเด—เด‚ 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.SingleJar

เดกเต†เดจเดฟเดธเต เดŽเดจเตเดฑเต† เดตเตเดฏเด•เตเดคเดฟเด—เดค เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เดฟเตฝ เด’เดจเตเดจเดพเด‚ เดธเตเดฅเดพเดจเดคเตเดคเต†เดคเตเดคเดฟ, เดฒเดญเตเดฏเดฎเดพเดฏเดคเดฟเตฝ เดตเดšเตเดšเต เดเดฑเตเดฑเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ IMHO. เด…เดตเดจเตเดฑเต† เดฎเตˆเด•เตเดฐเต‹ เดธเตผเดตเต€เดธเดธเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เด‰เดฆเดพเดนเดฐเดฃเด‚ Github-เตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เด…เดงเดฟเด• เดธเตเด•เตเดตเดพเดฑเตเดฑเดฟเด‚เด—เต เด‡เดฒเตเดฒเดพเดคเต† เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดžเดพเตป เด‡เดคเต เด…เดคเต‡ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต โ€œเดกเดพเดฑเตเดฑ เดจเต‹เดกเตโ€ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ โ€œเด•เตเดฒเดฏเดจเตเดฑเต เดจเต‹เดกเตโ€ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเตŠเดฑเตเดฑ เดœเดพเตผ เดซเดฏเตฝ เดจเต‡เดŸเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด…เดธเด‚เดฌเตเดฒเดฟ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดธเต€เดฑเต‹ เดตเดฟเดจเตเดฏเดพเดธเด‚ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดŸเต.

เดฎเต†เด—เดพเดฌเตˆเดฑเตเดฑเต เดŸเต†เดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดœเดฟเด—เดพเดฌเตˆเดฑเตเดฑเต เด•เต‹เด‚เดฌเดพเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฎเดพเดฑเตเดฑเด‚ เด’เดฐเต เด•เดพเดฐเดฃเดคเตเดคเดพเตฝ เดฌเตˆเดจเดฑเดฟ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต†เดจเตเดจเต เด•เดพเดฃเดฟเดšเตเดšเต. เดจเต‹เดกเตเด•เดณเดฟเดฒเต† เดฎเต†เดฎเตเดฎเดฑเดฟ เด‰เดชเดญเต‹เด—เด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต เดฌเตˆเดจเดฑเดฟ เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เดตเดณเดฐเต† เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏเดคเต.

4. เดจเดฟเด—เดฎเดจเด™เตเด™เตพ

เด…เดชเตเดชเดพเดšเตเดšเต† เด‡เด—เตเดจเตˆเดฑเตเดฑเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเดฑเต† เด…เดตเตเดฏเด•เตเดคเดคเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเต‡เดฐเดฟเดŸเตเดŸ เด†เดฆเตเดฏ เดจเดฟเดจเตเดฆ เดจเตเดฏเดพเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต; 2016 เดฎเตเดคเตฝ เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตŠเดจเตเดจเตเด‚ เดธเด‚เดญเดตเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เด’เดฐเต เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเต เด•เต‚เดŸเดพเดคเต†/เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเดฏ เด’เดฐเต เดชเตเดฐเต‹เดŸเตเดŸเต‹เดŸเตˆเดชเตเดชเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเต เดŽเดณเตเดชเตเดชเดฎเดฒเตเดฒ.

เดšเต†เดฏเตเดค เดœเต‹เดฒเดฟเดฏเตเดŸเต† เดซเดฒเด™เตเด™เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ, เดธเต€เดฑเต‹ เดกเดฟเดชเตเดฒเต‹เดฏเตโ€Œเดฎเต†เดจเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดคเดฒเดคเตเดคเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เต‚ เดŽเดจเตเดจเดพเดฏเดฟเดฐเตเดจเตเดจเต. เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดจเตเดจเต: เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เด•เตเดฒเดพเดธเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดฑเดฟเดฎเต‹เดŸเตเดŸเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเตเด•เตพ เดชเด เดฟเดชเตเดชเดฟเด•เตเด•เดพเตป BinaryObject เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต; เดธเต€เดฑเต‹ เดตเดฟเดจเตเดฏเดพเดธเด‚ - เด†เดจเตเดคเดฐเดฟเด• เดธเด‚เดตเดฟเดงเดพเดจเด‚
เด…เดชเตเดชเดพเดšเตเดšเต† เด‡เด—เตเดจเตˆเดฑเตเดฑเต เดธเตเดตเดฏเด‚ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด’เดฌเตเดœเด•เตเดฑเตเดฑเตเด•เตพ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดชเตเดคเดฟเดฏ เด…เดชเตเดชเดพเดšเตเดšเต† เด‡เด—เตเดจเตˆเดฑเตเดฑเต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เดŽเดจเตเดฑเต† เด…เดจเตเดญเดตเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเดฎเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•