MongoDB рдореЗрдВ рд▓реЗрдирджреЗрди

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

рдпрджрд┐ рдЖрдк рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИред

MongoDB doesn't support complex multi-document transactions. If that is something you absolutely need it probably isn't a great fit for you. 
 If transactions are required, perhaps NoSQL is not for you. Time to go back to ACID relational databases. 
 MongoDB does a lot of things well, but transactions is not one of those things. 
рд▓реЗрдХрд┐рди рд╣рдо MVCC рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдирджреЗрди (ACID * ) рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдиреАрдЪреЗ рдПрдХ рдХрд╣рд╛рдиреА рд╣реИ рдХрд┐ рдпреЗ рд▓реЗрди-рджреЗрди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ, GitHub (рдзреНрдпрд╛рди рд╕реЗ, рдЬрд╛рд╡рд╛) рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдкреЛрд╕реНрдЯ MongoDB рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрди-рджреЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд▓рдирд╛-рдФрд░-рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдФрд░ рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдЙрд╕реА рд╣рдж рддрдХ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рднрдВрдбрд╛рд░рдг рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдореЙрдбрд▓


рдХрдИ рдЕрдиреНрдп NoSQL рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, MongoDB рддреБрд▓рдирд╛ рдФрд░ рд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕ рд╕рдорд░реНрдерди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ ACID рд▓реЗрдирджреЗрди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХреИрд╕ рд╕рдорд░реНрдерди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HBase, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЛрд▓реНрдбреЗрдореЙрд░реНрдЯ рдпрд╛ рдЬрд╝реВрдХреЗрдЯрд░) рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп NoSQL рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреИрд╕ рдХреНрдпрд╛ рд╣реИ?
  ,      ,          .    -   ,     ,      . 

рджрд░рдЕрд╕рд▓, рд▓реЗрди-рджреЗрди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреИрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рдмреИрдВрдХ рдХреЗ рдХрд╛рдо рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рдиреАрдЪреЗ рдПрдХ рдЦрд╛рддрд╛ рдореЙрдбрд▓ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдмрд╛рдХреА рдХреЛ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИред
рдирд┐рд░рд╛рд╢реНрд░рдпрдмрдЪрд╛рд╡ рдкрдХреНрд╖
рдЖрджрд░реНрд╢
 { _id : ObjectId(".."), name : "gov", balance : 600 } 
 { _id : ObjectId(".."), version : 0, value : { name : "gov", balance : 600 } } 
рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди
 db.accounts.update( { _id:ObjectId("...") }, { name:"gov", balance:550 } ); 
 db.accounts.update({ _id: ObjectId("..."), version: 0 },{ version : 1, value : { name:"gov", balance:550 } }); 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рдирд╛ рдЙрди рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдореЙрдбрд▓ рдЬреИрд╕реЗ:

 { _id : ObjectId(".."), version : 0, value : { name : "gov", balance : 600 }, updated : null, tx : null } 

рдЬреЛрдбрд╝реЗ рдЧрдП рдлрд╝реАрд▓реНрдб - рдЕрджреНрдпрддрди рдФрд░ txред рдпрд╣ рдУрд╡рд░рд╣реЗрдб рд╣реИ рдЬреЛ рд▓реЗрдирджреЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрджреНрдпрддрди рдХреА рд╕рдВрд░рдЪрдирд╛ рдореВрд▓реНрдп рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ - рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬреЛ рд▓реЗрдирджреЗрди рдХреЗ рдЧреБрдЬрд░рдиреЗ рдкрд░ рдореВрд▓реНрдп рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛; tx, рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ - рдПрдХ рд╡рд╕реНрддреБ рдХреЗ _id рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдЬреЛ рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред рд▓реЗрди-рджреЗрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рднреА рдХреИрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рддреНрдп рдХрдерди, рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдФрд░ рдЧреБрдг рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рд░рдЪрдирд╛ рдмрд╛рдж рдореЗрдВ рдХреА рдЬрд╛рдПрдЧреАред


рд░рд╛рдЬреНрдпреЛрдВ

рдПрдХ рд╕рдлрд▓ рд╕реНрдерд┐рддрд┐ рдПрдХ рд╕рдлрд▓ рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рдж рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ: рдореВрд▓реНрдп рдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдКрдкрд░ рдФрд░ tx рд╢реВрдиреНрдп рд╣реЛрддреЗ рд╣реИрдВред

рдПрдХ рдЧрдВрджрд╛ рдЧреИрд░-рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╛рдЬреНрдп рд▓реЗрдирджреЗрди рдХреЗ рд╕рдордп рд╡рд╕реНрддреБ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЕрджреНрдпрддрди рдореЗрдВ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрддрд╛ рд╣реИ, рдФрд░ tx рд▓реЗрди-рджреЗрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдХрд╛ _id рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рд╡рд╕реНрддреБ рдореМрдЬреВрдж рд╣реЛрддреА рд╣реИред

рдПрдХ рдЧрдВрджреЗ рдкреНрд░рддрд┐рдмрджреНрдз рд░рд╛рдЬреНрдп рдПрдХ рд╕рдлрд▓ рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рдж рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛ рдЦреБрдж рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЧрд┐рд░ рдЧрдпрд╛, рдЕрдкрдбреЗрдЯ рдореЗрдВ рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг, tx - _id рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рд╡рд╕реНрддреБ рдкрд╣рд▓реЗ рд╣реА рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИред

рд▓реЗрди-рджреЗрди

  1. рд╣рдо рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдЬреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ
  2. рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдПрдВ (tx)
  3. рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рдирдП рдореВрд▓реНрдп рдореЗрдВ рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ tx - tx._id рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
  4. Tx рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдЯрд╛рдПрдВ
  5. рд╣рдо рдЕрджреНрдпрддрди, рдФрд░ tx рдФрд░ рдЕрджреНрдпрддрди nullify рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

рдкрдврд╝рдирд╛

  1. рд╡рд╕реНрддреБ рдкрдврд╝реЗрдВ
  2. рдпрджрд┐ рдпрд╣ рд╕рд╛рдл рд╣реИ - рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред
  3. рдпрджрд┐ рдЧрдВрджрд╛ рд╣реИ, рддреЛ рд╣рдо рдореВрд▓реНрдп рдХреЛ рдЕрджреНрдпрддрди, рдФрд░ tx рдФрд░ рдЕрджреНрдпрддрд┐рдд рд╢реВрдиреНрдп рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
  4. рдпрджрд┐ рдЧрдВрджрд╛ рдПрдХ рдирд╣реАрдВ рд╣реИ - tx рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓реЗрдВ, рдЕрджреНрдпрддрди рдФрд░ tx рдХреЛ nullify рдХрд░реЗрдВ
  5. рдЪрд░рдг # 1 рдкрд░ рдЬрд╛рдПрдВ


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

рдирд┐рд╖реНрдХрд░реНрд╖


рд╣рдордиреЗ MongoDB рдореЗрдВ рд▓реЗрдирджреЗрди рдЬреЛрдбрд╝рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рд░рд╛рдордмрд╛рдг рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрдирдХреА рд╕реАрдорд╛рдПрдБ рд╣реИрдВ, рдХреБрдЫ рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ
ред

рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди


рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдирджреЗрди рдХреЛ рддреЗрдЬ рдФрд░ рдЕрдХреНрд╖рдо рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ?


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

рдореИрдВ рдПрдХрд▓-рдиреЛрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдореЛрдВрдЧрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпрд╛ рд▓реЗрдирджреЗрди рдореЗрд░реА рдорджрдж рдХрд░реЗрдВрдЧреЗ?


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

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рджреЛ-рдЪрд░рдг рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?


рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдВрдЧрд▓реА рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде:

рдЕрдиреНрдпрдерд╛, рд╕рдВрдЧрддрддрд╛ рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдЦреЛ рдЬрд╛рддреА рд╣реИ (рдЬрдореЗ рд╣реБрдП рд▓реЗрдирджреЗрди рд╕рдВрднрд╡ рд╣реИрдВ - рдПрдХрдорд╛рддреНрд░ рдЙрдЪрд┐рдд рдХрджрдо рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЗрди рд▓реЗрдирджреЗрди рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ)ред

Source: https://habr.com/ru/post/In153321/


All Articles