рдЧреЛрд╡рд░реНрдирдХреЛрдб рд╕реЗ рд▓реЗрдХрд░ рд╣рд╛рдИрд▓реЛрдб рддрдХред рд╣рдо рдЯреИрд░рдирдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ 5 рдиреБрд╕реНрдЦреЗ

рдореБрдЭреЗ рдЙрдирдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдЬрд┐рдХ рдЧреЗрдо рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рдПрдХ рдкреНрд░рдореБрдЦ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдФрд░ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИред рдФрд░ рд╣рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╢реНрд░рджреНрдзрд╛рдВрдЬрд▓рд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд▓рд╛рдн рднреА рд▓рд╛рдпрд╛ред рд▓реЗрдХрд┐рди, рдПрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрдВрдкрдиреА рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд┐рд╕реА рднреА рднрд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рдереАред MySQL рдЧрд┐рд░ рдЧрдпрд╛ (рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ 35%)ред



рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореБрдЭреЗ рдпрд╣ рдЖрднрд╛рд╕ рдерд╛ рдХрд┐ рдЙрдирдХреЗ рд╕реНрдирд╛рддрдХ рдХреЗ рдЫрд╛рддреНрд░ рдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ ... рдФрд░ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдПрдХ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдкрд╣рд▓реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдкреНрд░рд╕рдиреНрди рдереА рд╡рд╣ рдпрд╣ рдереА рдХрд┐ рдХрд┐рд╕реА рднреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмреЗрд╢рдХ, рдпрд╣ рдПрдХ рд╢рд╛рд╢реНрд╡рдд рдЬреНрд╡рд▓рдВрдд рдкреНрд░рд╢реНрди рд╣реИ: рдпреАрд╢реБ рдпрд╛ рдореИрдЧреЛрдореЗрдб? рд╣реЛрдирд╛ рдпрд╛ рди рд╣реЛрдирд╛? рдпреВрдирд┐рдХреНрд╕ рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ? рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рди рдХрд░реЗрдВ? IMHO, рдореЗрд░реА рд░рд╛рдп: рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рд╕рдВрдХреАрд░реНрдг рд╕рд░реНрдХрд▓ рдХреЗ рд▓рд┐рдП рдЪреМрдЦрдЯреЗ рдХреЛ рддреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕рд╛рдорд╛рдЬрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ ... рд▓реЗрдХрд┐рди, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧреА рдФрд░ рдореИрдВрдиреЗ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ...



рд╢рд╛рдпрдж, рдХреЗрд╡рд▓ рдЖрд▓рд╕реА рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдЬреЛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЬрд╛рдирддрд╛ рд╣реИ, рдЙрд╕рдиреЗ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдФрд░ рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ред рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рд╣рд╛рдИрд▓реЛрдб рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╣рд╛рдИрд▓рд╛рдЗрдб рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рддреАрди рд╡реНрд╣реЗрд▓ред ред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВрдиреЗ NoSQL tarantool рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PHP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреИрд╕реЗ рдмрдврд╝рд╛рдИ, рддреЛ рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред



рдпрджреНрдпрдкрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрд╕ рд╢реНрд░реЗрдгреА рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдВрдЬреА / рдореВрд▓реНрдп рднрдВрдбрд╛рд░рдг, рдФрд░ рд╕рд░реНрд╡рд░ рддрд░реНрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



рдиреБрд╕реНрдЦрд╛ 1. рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рд╕рдм рдХреБрдЫ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдордХреНрдХреЗ рдХрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭрд╕реЗ рдкрд╣рд▓реЗ рд╕реИрдХрдбрд╝реЛрдВ рдмрд╛рд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛, рдФрд░ рд╕реИрдХрдбрд╝реЛрдВ рдФрд░ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗ ... рд╣рд╛рд▓рд╛рдВрдХрд┐, "рд╣рдо рд╕рдмрд╕реЗ рдЪрддреБрд░ рд╣реИрдВ" рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдЙрд╕реА рд░реЗрдХ рдкрд░ рдХрджрдо рд░рдЦ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдЕрдореЗрд░рд┐рдХрд╛ рдХреА рдЦреЛрдЬ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ 99% рдореЗрдВ рдЕрдбрд╝рдЪрди рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдХреМрди рд╕рд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдпрд╣ рд╕рд╣реА рд╣реИ - рдЖрдкрдХреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред ред рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ рдпрджрд┐ рдХреЛрдб рддрд░реНрдХ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдкрд╛рдВрдЪ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ:



$ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ = рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ( ) ;

$ userData = $ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ -> getById ( $ uid ) ;


рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкрд╛рдВрдЪ рд╕рдорд╛рди "рдЪрдпрди" рдХрд┐рдП: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЪрдпрди рдХрд░реЗрдВ * рдХрд╣рд╛рдВ рдЖрдИрдбреА = $ рдпреВрдЖрдИрдбреА;

рдФрд░ рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╣рдо рдПрдХ рдЖрдВрддрд░рд┐рдХ (рдирд┐рдЬреА) рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

рдХрдХреНрд╖рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ {



рдирд┐рдЬреА рд╕реНрдерд┐рд░ $ userData = NULL ;



рдирд┐рдЬреА рдлрд╝рдВрдХреНрд╢рди getById_loc ( $ uid ) {

// рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЛрдбред

}



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ getById ( $ uid ) {

рдЕрдЧрд░ ( рд╕реНрд╡ :: $ userData ) рд╕реНрд╡ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ :: $ userData ;

self :: $ userData = $ this -> getById_loc ( $ uid ) ;

рд╕реНрд╡ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ :: $ userData ;

}

}




рджреВрд╕рд░реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рддреБрд░рдВрдд рдкрдХрдбрд╝ рд▓реЗрддреА рд╣реИред рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рдкрд╛рд╕ рдореЗрдВ рдЦрдбрд╝реА рд╣реЛрддреА рд╣реИрдВ:

$ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ -> рдЕрджреНрдпрддрдирдмреЗрд▓реЗрдВрд╕ ( $ рдпреЛрдЧ ) ;

$ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ -> рдЕрджреНрдпрддрди ( $ рд░реЗрдЯрд┐рдВрдЧ ) ;



рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ:

UPDATE рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ SET рдмреИрд▓реЗрдВрд╕ = рдмреИрд▓реЗрдВрд╕ + $ sum рдХрд╣рд╛рдБ рдЖрдИрдбреА = $ uid;

рдЕрджреНрдпрддрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ SET рд░реЗрдЯрд┐рдВрдЧ = $ рд░реЗрдЯрд┐рдВрдЧ рдХрд╣рд╛рдВ рдЖрдИрдбреА = $ рдпреВрдЖрдИрдбреА;

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреЛ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ

рд╕рдВрддреБрд▓рди = рд╕рдВрддреБрд▓рди + $ рдпреЛрдЧ ,

рд░реЗрдЯрд┐рдВрдЧ = $ рд░реЗрдЯрд┐рдВрдЧ

рдЬрд╣рд╛рдВ рдЖрдИрдбреА = $ uid;



рдпрд╣ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдпрд╛ рддреЛ рд╣рдо рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ $ user-> updateBalanceAndRating ($ sum, $ рд░реЗрдЯрд┐рдВрдЧ), рдпрд╛ рд╣рдо рдХреБрдЫ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП:

$ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ -> updateFieldAdd ( 'рд╢реЗрд╖' , $ рдпреЛрдЧ ) ; // рдлрд╝реАрд▓реНрдб рдпрд╛рдж рд░рдЦреЗрдВ, рдСрдкрд░реЗрд╢рди рдЬреЛрдбрд╝реЗрдВ - рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдкрд░реЗрдВрдб

$ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ -> updateFieldAssign ( 'рд░реЗрдЯрд┐рдВрдЧ' , $ рд░реЗрдЯрд┐рдВрдЧ ) ; // рдХреНрд╖реЗрддреНрд░ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ, рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрд╢рди - рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ, рдСрдкрд░реЗрдВрдб

$ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ -> рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ( ) ; // рдлреЙрд░реНрдо рдФрд░ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ




рдХреЗрд╡рд▓ рдЗрди рджреЛ рд╕рд░рд▓ рддрд░реАрдХреЛрдВ рдХреА рд╢реБрд░реВрдЖрдд рдиреЗ 10-12 рд╕реЗ 3-5 рддрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдЕрднреА рдФрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╣реИрдмрд░рд╕ рд▓реВрдЬрд░ рд╕реЗ рджреВрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣рдореЗрд╢рд╛ "рднрдЧрд╡рд╛рди рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддреЗ рд╣реИрдВред"



рдкрдХрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ 2. рдХреИрд╢рд┐рдВрдЧ


рдХреИрд╢рд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрд┐рдЦрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдбрд┐рдорд╛ рдХреЛрдЯрд░реЛрд╡ рдиреЗ рдЕрдкрдиреЗ рд▓реЗрдЦ рдореЗрдВ рдПрдХ рд╣рд╛рдИрд▓реЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛: "рдЖрдкрдХреЛ рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХрд╛ рд╣рд░ рд╕рд╛рдорд╛рди рдХреИрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред" рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдореЗрдВ рдбрд░рдкреЛрдХ рдкреНрд░рдпрд╛рд╕ рдереЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪреЗрд░рдиреЛрдорд┐рд░реНрдбрд┐рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рдирд┐рдХрд▓рд╛: рд╡реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛, рди рдХрд┐ рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред



рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдХрдо рдХрд░реЗрдВ? рд╣рд╛рдВ, рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╣реИ - рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреБрдЫ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ (рдЗрдХрд╛рдЗрдпреЛрдВ, рд╕рд╣рд╛рдпрдХ рдирджрд┐рдпреЛрдВ рдФрд░ рд╣рдерд┐рдпрд╛рд░реЛрдВ рдкрд░ рдореИрдиреБрдЕрд▓) рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВред рдХрдиреНрдлрд╝рд┐рдЧреНрд╕ рдпрд╛ рддреЛ рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЧреЗрдордкреНрд▓реЗ рдЯреАрдо рдХреА рд▓рдбрд╝рдХрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рднреА рдПрдХреНрд╕рдПрдордПрд▓ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, рдпрд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдлреЙрд░реНрдо рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: PHP рд╕рд░рдгреА рдореЗрдВ - рдпрджрд┐ рдЧреЗрдордкреНрд▓реЗ рдФрд░ рдХреЛрдб рдХрд╛ рдбреЗрд╡рд▓рдкрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдлреНрд▓рд╛рдИ рдкрд░ XML рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдПрдХ рдХрдард┐рди рдХрд╛рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ XSLT рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╕реАрдзреЗ PHP рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (рдПрдХ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ рдореБрдЦреНрдп рдХреЛрдб рдХреЗ рд╕рд╛рде рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, XML рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ XSLT рд░реВрдкрд╛рдВрддрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рдВ, рдпрд╣ рдХреИрд╢рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдорд╛рдореВрд▓реА рд╕реБрдзрд╛рд░ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдиреБрд╕реНрдЦрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╕рдореЗрдЯрдиреЗ рд╕реЗ, рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреИрд░, рдХреНрдпрд╛ - рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ? .. рдХрдо рд╕реЗ рдХрдо рд╡реНрдпрдВрдЬрдиреЛрдВ 1 рдФрд░ 2 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдзрд╛рд░ рдЧрд┐рд░рдирд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред рдЦреИрд░, рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо ...



рдиреБрд╕реНрдЦрд╛ 3. рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ ... рдФрд░ рд╡реИрд╕реЗ, рдХреБрдЫ рд╣реИ ... рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпрд╛ рдбреЗрдЯрд╛ рдмрджрд▓рддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИ, рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдХреЛрдб рдкрд░ рдиреЗрддреНрд░рд╣реАрди рдЬрд╛рдиреЗ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдХреНрд╕рд░ рдЕрдиреБрд░реЛрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЧреЗрдо рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓, рдЙрдкрд╣рд╛рд░ рдФрд░ рдкреБрд░рд╕реНрдХрд╛рд░ рдереАред рдпрд╣ рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ NoSQL рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдиреНрдп рд╕рднреА рдбреЗрдЯрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднреБрдЧрддрд╛рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд, MySQL рдореЗрдВ рдмрдиреЗ рд░рд╣реЗред NoSQL рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ, рдЯреИрд░рдирдЯреВрд▓ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред



рдФрд░ рдлрд┐рд░ рднреА - рдХреНрдпреЛрдВ рддрд░рдгрддрд╛рд▓?


рд╣рд╛рдИрд▓реЛрдб + ++ рд╕рдореНрдореЗрд▓рди 2011 рдореЗрдВ рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдХреЛрд╕реНрддреНрдпрд╛ рдУрд╕реНрд╕рд┐рдкреЛрд╡рд╛ рд╕реЗ рдкреВрдЫрд╛ рдЧрдпрд╛ рдерд╛:

- рдЖрдкрдХрд╛ рдирд╛рдо рдЗрддрдирд╛ рдЬрд╣рд░реАрд▓рд╛ рдХреНрдпреЛрдВ рд╣реИ?

- рдареАрдХ рд╣реИ, рдЖрдк рдПрдХ рд░рд╛рдо рдФрд░ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг (рдЯреВрд▓) рдХреЗ рд░реВрдк рдореЗрдВред



рддреЛ, NoSQL рднрдВрдбрд╛рд░рдг рдХреА рдкрд╕рдВрдж рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░рдХ рдереЗ:

- рдХреЛрд╕реНрдЯреНрдпрд╛ рдУрд╕рд┐рдкреЛрд╡ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЯреАрдо рд▓реАрдб рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдЪрд┐рдд, рдЬрд┐рд╕рдиреЗ рд╕рдорд░реНрдерди рдФрд░ рдкрд░рд╛рдорд░реНрд╢ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛

- рдкрд┐рдЫрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕ рднрдВрдбрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдирд╣реАрдВ рд▓рд┐рдпрд╛ :(, рд▓реЗрдХрд┐рди рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ред

- рдирдП рдЯреИрд░рдирдЯреВрд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЦреЛрдЬ, рдЗрд╕рдХреЗ рдкрд┐рдЫрд▓реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рд╕реЗ рд▓рдЧрднрдЧ рджреЛ рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ

- рдЗрд╕ NoSQL рднрдВрдбрд╛рд░рдг рдХреЗ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЙрдЪреНрдЪ рдбреЗрдЯрд╛ рдЙрдкрд▓рдмреНрдзрддрд╛ред

- рдбреЗрдЯрд╛ рдХреА рджреГрдврд╝рддрд╛, рдЕрдЧрд░ рдбрд┐рд╕реНрдХ рдкрд░ рдЧрд┐рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрд╢рд╛ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

- рдареАрдХ рд╣реИ, рдФрд░ рдмрд╣реБрдд рдорд╛рдореВрд▓реА рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЦреБрдж рдЯрд╛рд░рдирдЯреВрд▓ рдХреЗ рд▓рд┐рдП PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд▓реЗрдЦрдХ рд╣реВрдВ, рддрд╛рдХрд┐ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдореИрдВ рдХреБрдЫ рдкреИрдЪ рдХрд░ рд╕рдХреВрдВ рдпрд╛ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХреВрдВред



рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ NoSQL рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреА рдЕрдиреВрдареА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ: рдорд╛рдзреНрдпрдорд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рдбреЗрдЯрд╛ рд╕реНрдерд╛рди рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ред



рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдЬрд╛рд░реА)


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ рдкрд░рд╕реНрдкрд░ рдФрд░ рдЧреИрд░-рдкрд░рд╕реНрдкрд░ рдбреЗрдЯрд╛ рд╣реИред рд╡реИрд░рд┐рдПрдмрд▓ рдбреЗрдЯрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдмреИрд▓реЗрдВрд╕, рд░реЗрдЯрд┐рдВрдЧ, рдкреАрдкреАрд╡реА рдкреЙрдЗрдВрдЯреНрд╕, рдпреВрдирд┐рдЯреНрд╕, рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реНрдЯреЗрдкреНрд╕ рдЖрджрд┐ред

рдиреЙрди-рдореНрдпреВрдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рдореЗрдВ рд╕реЛрд╢рд▓_рдЖрдИрдбреА, рд▓реЙрдЧрдЗрди, рдЕрд╡рддрд╛рд░ рдпреВрдЖрд░рдПрд▓, рдкрд░реНрд╕рдирд▓ рдХреЛрдб рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ ... рдореНрдпреВрдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рдореЗрдВ рдЕрдХреНрд╕рд░ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдбреЗрдЯрд╛ рдЕрдХреНрд╕рд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдЕрдХреНрд╕рд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдореЗрдВ рдХреИрд╢ рдХрд░реЗрдВрдЧреЗред рдЕрдм NoSQL рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ ...



TARANtoolред рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореАрдХреНрд╖рд╛


рдЯрд╛рд░рдирдЯреВрд▓, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдХреБрдВрдЬреА / рдорд╛рди NoSQL рднрдВрдбрд╛рд░рдг рд╣реИред рд╕рднреА рдбреЗрдЯрд╛ рд░реИрдо рдореЗрдВ рд╣реИрдВ, рдФрд░ рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЧрддрд┐ рдореЗрдВ рдЙрдирдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рд░реЗрдбрд┐рд╕ рдпрд╛ рдереЛрдбрд╝рд╛ рдзреАрдорд╛ (рдкреНрд░рддрд┐ 1000 рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ 6-7 рдорд┐рд▓реАрд╕реЗрдХрдВрдб) рдХреЗ рд▓рд┐рдП рдЕрд╡рд░ рдирд╣реАрдВ рд╣реИред



рдлрд┐рд░ рднреА, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдПрдХ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рд╣реИ, рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рдХреИрд╢рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдореЗрдореНрдЪреЗрдЪреЗред рд╕рднреА рдбреЗрдЯрд╛ рд░реИрдо рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдЧрд╛рддрд╛рд░ рдлрд╛рдЗрд▓реЛрдВ (рд╕реНрдиреИрдк рд╕рд┐рд╕реНрдЯрдо 0000..01.snap) рдкрд░ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рд┐рдВрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╕реЗ рд╕рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдкрд╛рд░рдВрдкрд░рд┐рдХ рдореЗрдордХреЗрдб рдФрд░ рд░реЗрдбрд┐рд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

- рдбреЗрдЯрд╛ рдкрд░ рд╕реЗрдХрдВрдбрд░реА рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛

- рд╕реВрдЪрдХрд╛рдВрдХ рд╕рдордЧреНрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ

- рдЗрдВрдбреЗрдХреНрд╕ рдПрдЪрдПрдПрд╕рдПрдЪ, рдЯреНрд░реЗ рдпрд╛ рдмрд┐рдЯреНрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред GEO рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рд╢реБрд░реВрдЖрдд рдХреА рдпреЛрдЬрдирд╛ рд╣реИред

- рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛рдХрд░рдгред

- рднрд╛рдЧреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг (LIMIT / OFFSET рдХрд╛ рдПрдирд╛рд▓реЙрдЧ)ред



рдЯрд╛рд░рдирдЯреВрд▓ рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрдпреБрдХреНрдд рд╣реИред рдЕрдВрддрд░рд┐рдХреНрд╖ MySQL рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдбрд┐рдЬрд┐рдЯрд▓ рд╕реНрдкреЗрд╕ рдирдВрдмрд░рд┐рдВрдЧ (0, 1, 2, 3 ...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдпрд╣ рдирд╛рдорд╕реНрдерд╛рди (MySQL рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдореЛрдВ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИред



рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреБрдХреНрд░рдорд┐рдХ (int32 рдпрд╛ int64), рдФрд░ рдПрдХ рдЪрд░рд┐рддреНрд░ рдХреНрд╖реЗрддреНрд░ рдкрд░ рджреЛрдиреЛрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдбрд┐рдЬрд┐рдЯрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдирдВрдмрд░рд┐рдВрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред



рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╡рд┐рдирд┐рдордп рдЯреНрдпреВрдкрд▓реНрд╕ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдЯреНрдпреВрд▓ рдПрдХ MySQL рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдЧрдгрд┐рдд рдореЗрдВ, рдЯреБрдкрд▓ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд▓рдВрдмрд╛рдИ n рдХрд╛ рдПрдХ рдХреНрд░рдордмрджреНрдз рдкрд░рд┐рдорд┐рдд рд╕реЗрдЯ рд╣реИред рдЯрдкрд▓ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдПрдХ рдбреЗрдЯрд╛ рддрддреНрд╡ рдпрд╛ рдлрд╝реАрд▓реНрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Tuple рдХрд╛ рджреВрд╕рд░рд╛ рдирд╛рдо рд╣реИ: tupleред



рд╕рднреА рдЗрдВрдбреЗрдХреНрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рдЬреЛ рдорд╛рдирд╡-рдзрд╛рд░рдгрд╛ рд╣реИ: YAMLред рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдПрдХ рднрд╛рдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

space [ 0 ] .enabled = 1

space [ 0 ] .index [ 0 ] ред рдЯрд╛рдЗрдк = "рдПрдЪрдПрдПрд╕рдПрдЪ"

space [ 0 ] .index [ 0 ] .unique = 1

space [ 0 ] .index [ 0 ] .key_field [ 0 ] .fieldno = 0

space [ 0 ] .index [ 0 ] .key_field [ 0 ] ред рдкреНрд░рдХрд╛рд░ = "NUM"

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рдорд╛рдзреНрдпрдорд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдердорд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рд╡рд┐рд╡рд░рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рдКрдкрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ)ред рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд░реЗрдЯрд┐рдВрдЧ рдпрд╛ рдкреАрдкреАрд╡реА рд▓рдбрд╝рд╛рдЗрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЪреБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдПрдХ рджреНрд╡рд┐рддреАрдпрдХ рд╕реВрдЪрдХрд╛рдВрдХ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реЛрдиреЗ рджреЗрдВ (рдлрд╝реАрд▓реНрдбрдиреЛ = 1, рд╢реВрдиреНрдп рд╕реЗ рдЧрд┐рдирддреА) int32_t - рд░реЗрдЯрд┐рдВрдЧ:



space [ 0 ] .index [ 1 ] ред рдЯрд╛рдЗрдк = "TREE" // рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИ TREE, рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдЕрдзрд┐рдХ рдФрд░ рдХрдо рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

space [ 0 ] .index [ 1 ] .unique = 0 // рдореМрд▓рд┐рдХрддрд╛ рдирд┐рдХрд╛рд▓реЗрдВ

space [ 0 ] .index [ 1 ] .key_field [ 0 ] .fieldno = 1 // рдЕрдиреБрдХреНрд░рдорд┐рдд рдлрд╝реАрд▓реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ

space [ 0 ] .index [ 1 ] .key_field [ 0 ] ред рдЯрд╛рдЗрдк = "NUM" // рдЯрд╛рдЗрдк рдХрд░реЗрдВ int32_t



рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдЬрд┐рдХ рдЧреЗрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА social_id рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧреАред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП, рдпрд╣ 64-рдХреБрдВрдЬреА рд╣реИред рд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдПрдЪрдПрдПрд╕рдПрдЪ рд╣реЛрдЧрд╛, рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдПрд╕рдЯреАрдЖрд░ рд╣реЛрдЧрд╛ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореИрдВ NUM64 рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ PHP рд▓рдВрдмреЗ рд▓рдВрдмреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЪрд╛рд▓рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЖрдХрд╛рд░ рдХреЛ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдпрджрд┐ рдЖрдк 64-рдмрд┐рдЯ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк 32-рдмрд┐рдЯ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрддреЗред рдЗрд╕реЗ 64-рдмрд┐рдЯ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм рдбреНрд░рд╛рдЗрд╡рд░ рдРрд╕рд╛ рддрднреА рдХрд░рддрд╛ рд╣реИ рдЬрдм рдорд╛рди 32-рдмрд┐рдЯ рд╢реНрд░реЗрдгреА рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛред рдЗрд╕рд▓рд┐рдП, STRING рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред



рдореЗрдореЛрд░реА рдХреА рдЧрдгрдирд╛


рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдПрдХ рдореЗрдореЛрд░реА рдХреЗрд╡рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд░реИрдо рдХреА рдЕрдиреБрдорд╛рдирд┐рдд рдорд╛рддреНрд░рд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЧрдгрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:



рдкреНрд░рддреНрдпреЗрдХ рдЯрдкрд▓ рд╕реЗ рдкрд╣рд▓реЗ, рдЯрд╛рдЗрдк рд╡рд┐рдВрдЯ рдХреЗ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд▓ рдХрд╛ рдкреЗрдирд▓ 'w') рдФрд░ рд╣реЗрдбрд░ рд╕реЗ 12 рдмрд╛рдЗрдЯреНрд╕ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдХреЗ рдпрд╛ рдЯрд╛рд░рдирдЯреВрд▓ рдбреЗрдЯрд╛ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдХрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдбреЗрдЯрд╛ рдкрд░ рд▓рдЧрднрдЧ 15 рдкреНрд░рддрд┐рд╢рдд рдХрд╛ рдХрдмреНрдЬрд╛ рд╣реИред рдпрджрд┐ рд╣рдо, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 10 рдлрд╝реАрд▓реНрдб рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ 256 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рддреЛ 1.5M рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧрдгрдирд╛ рд╣реЛрдЧреА:

(10 * 1 + 256 + 12) * 1.15 * 1 500 000 = 921150000 ~ = 440 рдПрдордмреА рдкреНрд░рддрд┐ рджрд┐рди



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╣реИрдВ, рдЬреЛ рд╡реНрдпрд╛рдкреНрдд рд╣реИрдВ:

- рдкреЗрдбрд╝ рдореЗрдВ рдПрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП 68 рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ

- рдПрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП, 56 рдмрд╛рдЗрдЯреНрд╕ рдУрд╡рд░рд╣реЗрдб рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╣реИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ



1.5M рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ 80Mb рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, 1.5 M рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рд╣рдо рдПрдХ рдФрд░ рдХреБрдВрдЬреА (TREE рдкреНрд░рдХрд╛рд░) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд 90M RAM рд╣реИред



рдХреЛрдИ рдРрд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЬ рдХреЗ рдорд╛рдирдХреЛрдВ рд╕реЗ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рд╣реИред



рдиреБрд╕реНрдЦрд╛ 4. рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ MySQL рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдХреЛ рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо MySQL рдореЗрдВ рдЙрдирдХреА рд╡рд░реНрддрдорд╛рди рдкреНрд░рддрд┐рдпрд╛рдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, UPDATE рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рдирддреАрдЬрддрди, рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдмрд╣реБрдд рдХреБрдЫ рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди, рдЙрдиреНрд╣реЛрдВрдиреЗ рдлрд┐рд░ рднреА рдореБрдЦреНрдп рдкреНрд░рднрд╛рд╡ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛: MySQL рдиреЗ рдЧрд┐рд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рддреЛ, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдИ рдмрд╛рд░ рдХреИрд╕реЗ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдпрджрд┐ рдЖрдк MySQL рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ? рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХреБрдЫ рдЕрдиреНрдп, рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ INSERT / UPDATE рд╕рдВрдЪрд╛рд▓рди рдХрд░реЗрдЧрд╛ред



рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдХрддрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдХрдИ рдФрджреНрдпреЛрдЧрд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рджреВрд░рд╕реНрде рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ: рдЧреИрд░рдореИрди, рд╕реЗрд▓реЗрд░реА, рдФрд░ рдЖрдк рд░реИрдмрд┐рдЯрдПрдордХреНрдпреВ, рдЬреЗрдбрдПрдордХреНрдпреВ, рд░реЗрдбрд┐рд╕ рдФрд░ рдЕрдиреНрдп рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рднреА рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреБрдЫ рдирдИ рдЗрдХрд╛рдИ рдХреНрдпреЛрдВ рдкреЗрд╢ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдЯреИрд░рдирдЯреВрд▓ рдХреЛ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдореЗрдВ рдХрддрд╛рд░ github.com/mailru/tntlua/blob/master/queue.lua рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдерд╛ред рдПрдХ рдирдпрд╛ рд╕реНрдерд╛рди рдмрдирд╛рдПрдБ:



space [ 1 ] .enabled = 1

space [ рез ] .index [рдХреЛ реж ] ред рдкреНрд░рдХрд╛рд░ = "рдЯреНрд░реЗ"

space [ 1 ] .index [ 0 ] .unique = 1

space [ 1 ] .index [ 0 ] .key_field [ 0 ] .fieldno = 0

space [ 1 ] .index [ 0 ] .key_field [ 0 ] ред рдкреНрд░рдХрд╛рд░ = "NUM"





рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╖реЗрддреНрд░ рд▓рд┐рдЦреЗрдВрдЧреЗ:

- рдЖрдИрдбреА, рдСрдЯреЛ-рдЗрдиреНрдХреНрд░реАрдореЗрдВрдЯ рдлреАрд▓реНрдбред рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред TREE рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реБрдкрд░рд┐рдореНрдкреЛрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

- рдкреНрд░рдХрд╛рд░ - рдСрдкрд░реЗрд╢рди рдХрд╛ рдкреНрд░рдХрд╛рд░, рдХреБрдЫ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕реНрдерд┐рд░ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ SQL рдСрдкрд░реЗрдЯрд░ рдкреИрдЯрд░реНрди рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред

- рдбреЗрдЯрд╛ - рдбрд╛рд▓рдиреЗ / рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ред



рдЕрдЧреНрд░рднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рд╣реЛрдВрдЧреЗ:

рдкрд░рд┐рднрд╛рд╖рд┐рдд ( 'UPDATE_SPIN_COUNT' , 1 ) ;

рдкрд░рд┐рднрд╛рд╖рд┐рдд ( 'UPDATE_USER_BALANCE' , 2 ) ;

...

$ Res = $ tnt- > рдХреЙрд▓ ( 'box.auto_increment' , array ( string ) TBL_QUEUES , UPDATE_SPIN_COUNT , $ spinCount, $ uid ) ;

рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ box.auto_increment рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИ; рдпрд╣ рдЯрдкрд▓ рдбреЗрдЯрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ; рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдорд╛рди рдЕрдзрд┐рдХрддрдо рд╣реИ 1. рдкреИрд░рд╛рдореАрдЯрд░:

- рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд╣рд╛рдВ рдбреЗрдЯрд╛ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛

- рдбреЗрдЯрд╛ рд╣реА

- рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлреНрд▓реИрдЧ рдкреИрд░рд╛рдореАрдЯрд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ "рд╡рд╛рдкрд╕реА рдирдИ рдХреБрдВрдЬреА"

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЪрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░, рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреА рд╕рдВрдЦреНрдпрд╛ (рд╕реНрдерд┐рд░ TBL_QUEUES ) рдХреЛ STRING рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реБрдЖ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╣рддреА рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ FIFO рдХрддрд╛рд░ (рдСрдЯреЛ-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдирдВрдмрд░, рдХрд╛рд░реНрдп рдХрд╛ рдкреНрд░рдХрд╛рд░, рдФрд░ рд╕реНрд╡рдпрдВ рдбреЗрдЯрд╛) рд▓рд┐рдЦрддреА рд╣реИред



рдЕрдЧрд▓рд╛, рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рджреВрд░рд╕реНрде рдорд╢реАрди рдкрд░ рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрддрд╛рд░ рд╕реЗ рдбреЗрдЯрд╛ рдЦреАрдВрдЪрддрд╛ рд╣реИ рдФрд░ SQL рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ:



рдкрд░рд┐рднрд╛рд╖рд┐рдд ( 'UPDATE_SPIN_COUNT' , 1 ) ;

рдкрд░рд┐рднрд╛рд╖рд┐рдд ( 'UPDATE_USER_BALANCE' , 2 ) ;

...

$ res = $ this- > callProc ( 'my_pop' , array ( ( string ) TBL_QUEUES ) ) ;



/ *

рдпрджрд┐ рдЦрд╛рд▓реА рд╣реИ рддреЛ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА:

рд╕рд░рдгреА ( 2 ) {

[ "рдЧрдгрдирд╛" ] => int ( 0 )

[ "tuples_list" ] => рд╕рд░рдгреА ( 0 ) { }

}



* /

рдЕрдЧрд░ ( $ res [ 'count' ] ) рд╡рд╛рдкрд╕реА ;



$ рдЯреБрдкрд▓ = $ res [ 'tuples_list' ] [ 0 ] ;

рд╕реНрд╡рд┐рдЪ ( $ рдЯреБрдкрд▓ [ 1 ] ) {

рдорд╛рдорд▓рд╛ UPDATE_SPIN_COUNT:

$ sql = "рдЕрджреНрдпрддрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд▓рдХ = {$ рдЯреБрдкрд▓ [2]} рдЬрд╣рд╛рдВ uid = {$ рдЯрдкрд▓ [3]}] ;

рддреЛрдбрд╝рдирд╛ ;



рдорд╛рдорд▓рд╛ UPDATE_USER_BALANCE :

$ sql = "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреИрд╕реЗ = рдкреИрд╕реЗ + {$ рдЯреБрдкрд▓ [2]} рдХрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ = {$ рдЯреНрдпреВрдкрд▓ [3]}" ;

рддреЛрдбрд╝рдирд╛ ;



рдбрд┐рдлрд╝реЙрд▓реНрдЯ:

рдирдпрд╛ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХреЗрдВ ( 'рдЕрдирдЬрд╛рдиреЗ рдХрд╛рд░реНрдп рдкреНрд░рдХрд╛рд░' ) ;

рддреЛрдбрд╝рдирд╛ ;

}



$ рдпрд╣- > рдирд┐рд╖реНрдкрд╛рджрди рдПрд╕рдХреНрдпреВрдПрд▓ ( $ sql ) ;




рдирддреАрдЬрддрди, рд╣рдорд╛рд░реА рдлреНрд░рдВрдЯ-рдПрдВрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдПрдХ рддреЗрдЬрд╝ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдбреЗрдореЙрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЯрдХреА рд╣реБрдИ рд╣реИ рдпрд╛ рддрд╛рдЬ рдкрд░ рдЪрд▓рддреА рд╣реИ рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рдкрд░ MySQL рдореЗрдВ рдбреЗрдЯрд╛ рдмрдЪрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЖрдк рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ 30% рд╕реЗ рдЕрдзрд┐рдХ рдЬреАрдд рд╕рдХрддреЗ рд╣реИрдВред рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд┐рд╖рдп рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред



рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рд▓реБрдЖ рдкреНрд░рдХреНрд░рд┐рдпрд╛ my_pop рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ init.lua рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд╛рд░реНрдп_dir рдпрд╛ script_dir рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред



рдлрд╝рдВрдХреНрд╢рди my_pop ( spaceno )

рд╕реНрдкреИрд╕реЗрдиреЛ = рдЯреЛрдирдореНрдмрд░ ( рд╕реНрдкреЗрд╕реЛ )

рд╕реНрдерд╛рдиреАрдп min_tuple = box.space [ spaceno ] .index [ 0 ] .idx: min ( )

рд╕реНрдерд╛рдиреАрдп рдордВрддреНрд░реА = реж

рдЕрдЧрд░ min_tuple ~ = nil рддрдм

рдорд┐рдирдЯ = рдмреЙрдХреНрд╕ред рдЕрдирдкреИрдХ ( 'i' , min_tuple [ 0 ] )

рдЕрдиреНрдпрдерд╛

рд╡рд╛рдкрд╕реА

рдЕрдВрдд



рд╕реНрдерд╛рдиреАрдп рд░рд┐рдЯ = box.select ( рд╕реНрдкреЗрд╕рд┐рдпреЛ, 0 , рдорд┐рдирдЯ )

box.delete ( рд╕реНрдкреЗрд╕рд┐рдпреЛ, рдорд┐рдирдЯ )



рд╡рд╛рдкрд╕реА



рдЕрдВрдд




Work_dir рдХрд╛ рдорд╛рди tarantool.conf рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред



рдиреБрд╕реНрдЦрд╛ 5. рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЦреЗрд▓ рд░рд╣реЗ рд╣реИрдВ рдХреЗрд╡рд▓ рдЙрди рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рдХреИрд╢рд┐рдВрдЧ


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛, рд╣рдорд╛рд░реЗ рд╕рднреА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдЯреИрд░рдирдЯреВрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди MySQL рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдереЛрдбрд╝реЗ рд╡рд┐рд▓рдВрдм рдХреЗ рд╕рд╛рде, рдХреИрдк рдкреНрд░рдореЗрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред



рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ 1.5 рдорд┐рд▓рд┐рдпрди рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рддреАрди рдпрд╛ 5 рдорд┐рд▓рд┐рдпрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВ? рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд▓реЙрдЧрд┐рди рдХрд┐рдпрд╛, рдЦреЗрд▓ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ - рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдмрдиреЗ рд░рд╣реЗ, рд╡реЗ рдореЗрдореЛрд░реА рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ... рдЗрд╕рд▓рд┐рдП, рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдФрд░ рд╕рд┐рд░реНрдл рддреЗрдЬ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ рдЦреЗрд▓рддреЗ рд╣реИрдВред



рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рдЦреЗрд▓рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦреЗрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рди рдХрд░реЗрдВ, рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдЕрдзрд┐рдХ, рдЖрдк рдЗрд╕реЗ рдСрдирд▓рд╛рдЗрди рдХреИрд╢ рд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдкрд░рд┐рдЪрд╛рд▓рди рдХреИрд╢ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдСрдирд▓рд╛рдЗрди рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдХреЛрдб рдорд╛рдирдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рд╡рд░реНрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ DbModel рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ {



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ getByUid ( $ uid ) {



$ рдкрд░рд┐рдгрд╛рдо = рдпрд╣ -> getFromCache ( $ uid ) ;



рдЕрдЧрд░ ( is_null ( $ рдкрд░рд┐рдгрд╛рдо ) ) {

$ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдУ ;

}



$ рдкрд░рд┐рдгрд╛рдо = $ рдпрд╣ -> рдирд┐рд╖реНрдкрд╛рджрдХ ( "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЪреБрдиреЗрдВ * рдЬрд╣рд╛рдВ uid = $ uid " ) ;

$ рдпрд╣ -> setToCache ( $ рдкрд░рд┐рдгрд╛рдо ) ;



$ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдУ ;

}

....

}




рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:

- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рднреА "рд╕рдорд╛рдкреНрдд" рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕реВрдЪреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдореЗрдВ рд╣рдЯрд╛ рджреЗрдВ

рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдореЗрдВ рдПрдХ рд╕рдлрд╛рдИ рдмреНрд░реЛрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (рдЙрд╕рдиреЗ рдРрд╕рд╛ рдЦреБрдж рдирд╣реАрдВ рдХрд┐рдпрд╛) github.com/mailru/tarantool/wiki/Brokers-ru

- рд╕рднреА "рд╕рдорд╛рдкреНрдд" рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рддрд╛рдЬ рдкрд░ рдЕрдкрдиреА рдХреЙрд▓ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реБрдЖ рдореЗрдВ рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦреЗрдВред



рд╣рдо рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рд╕реЗ рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╕рднреА рдбреЗрдЯрд╛ (рдЯреНрдпреВрдкрд▓реНрд╕) рдбрд┐рд╕реНрдХ рд╕реЗ рд░реИрдо рддрдХ рди рдЙрдард╛рдП рдЬрд╛рдПрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓рдЧрднрдЧ, рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдирдЧреЛ рдбреАрдмреА рдореЗрдВ рд╣реИред рдлрд┐рд░ рдиреБрд╕реНрдЦрд╛ 5 рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред



рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреА рд╕рд╛рдорд╛рдЬрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ (PHP, рдкрд░реНрд▓, рдкрд╛рдпрдерди, рд░реВрдмреА, рдЬрд╛рд╡рд╛)ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд┐рд╕реНрдо рдХреЗ рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА / рдореВрд▓реНрдп рднрдВрдбрд╛рд░рдг рдХреЛ рдкрд░рд┐рдЪрд╛рд▓рди рдХреИрд╢ рдХреЗ NoSQL рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

- рдпрд╛рдж рдХрд┐рдпрд╛, рдХреЛрдИ рджреГрдврд╝рддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрддрд╛рд░реЛрдВ рдХреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЛ рд╕реВрдБрдШрдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ APPEND рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

- рдЭрд┐рд▓реНрд▓реА, рдПрдХ рдмрд╣реБрдд рд╕рдлрд▓ рд╡рд┐рдХрд╛рд╕ рдирд╣реАрдВ рд╣реИ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ

рдореЗрдореНрдЪреЗрдЪреЗрдм рдФрд░ рдореЗрдордХреЗрдХреНрдпреВрдХреНрдпреВ

- рдореВрд▓реА рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ , рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╣реИ

- рдЯреЛрдХреНрдпреЛрдЯрд╛рдЗрд░реЗрдВрдЯ, рдХреНрдпреЛрдЯреЛрдЯрд╛рдпрд░реЗрдВрдЯ - рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд▓реБрдЖ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рдХрддрд╛рд░реЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ

- рд▓реЗрд╡рд▓рдбрдм рдбреЗрдорди, рдорд╛рдВрдмрд╛ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдПрдХ рдпреЛрдЧреНрдп рд╡рд┐рдХрд╛рд╕ред рдПрдХ рдЫреЛрдЯреА рд╕реА рдлрд┐рдирд┐рд╢ рдФрд░ рдХрддрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреА рдЬреЗрдм рдореЗрдВ рд╣реИред

- рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдВ



рдареАрдХ рд╣реИ, рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдирд╛рд╢рдкрд╛рддреА рдпрд╛ рдереЛрдбрд╝рд╛ рдкреАрдЖрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпреЛрдВ, рдмрд╛рддрдЪреАрдд рдФрд░ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рджреЗрд╡рдХреЙрдл 2013 рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ " рд╕рд╛рдорд╛рдЬрд┐рдХ рдЧреЗрдо рдореЗрдВ PHP рдХреЗ рд░рд╛рдХреНрд╖рд╕ "рдФрд░ рдореИрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднреА рдХрд╡рд░ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИред рдпрджрд┐ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░реВрдВрдЧрд╛ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╡реЛрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛), рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ DevConf 2013 рдореЗрдВ рджреЗрдЦреЗрдВред



рдкреБрдирд╢реНрдЪред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд╛рдд рдХреЗ рддреАрд╕рд░реЗ рдШрдВрдЯреЗ, рдЖрдЪрдкреЛрдЯрдХреА рд╕рдВрднрд╡ рд╣реИ ... рдирд┐рдЬреА рдореЗрдВ рдкреНрд▓рд┐рдЗрдЬрд╝ - рдореИрдВ рддреБрд░рдВрдд рд╕рд╣реА рдХрд░ рджреВрдВрдЧрд╛ред рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рджред



All Articles