рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

2019 рдХреЗ рдкрддрди рдореЗрдВ, Mail.ru рдХреНрд▓рд╛рдЙрдб iOS рдЯреАрдо рдореЗрдВ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдШрдЯрдирд╛ рдШрдЯреАред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЛрдмрд╛рдЗрд▓ рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрдХрд░реНрд╖рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ рд▓рд╛рдЗрдЯрдирд┐рдВрдЧ рдореЗрдореЛрд░реА-рдореИрдкреНрдб рдбреЗрдЯрд╛рдмреЗрд╕ (рдПрд▓рдПрдордбреАрдмреА)ред рдХрдЯ рдХреЗ рдиреАрдЪреЗ рд╣рдо рдЖрдкрдХреЛ рдЪрд╛рд░ рднрд╛рдЧреЛрдВ рдореЗрдВ рдЗрд╕рдХреА рд╡рд┐рд╕реНрддреГрдд рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдРрд╕реЗ рдЧреИрд░-рддреБрдЪреНрдЫ рдФрд░ рдХрдард┐рди рд╡рд┐рдХрд▓реНрдк рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВред рдлрд┐рд░ рд╣рдо рдПрд▓рдПрдордбреАрдмреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рддреАрди рд╕реНрддрдВрднреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ: рдореЗрдореЛрд░реА-рдореИрдк рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ, рдмреА+-рдЯреНрд░реА, рд▓реЗрди-рджреЗрди рдФрд░ рдорд▓реНрдЯреАрд╡рд░реНрдЬрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдкреА-рдСрди-рд░рд╛рдЗрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдЕрдВрдд рдореЗрдВ, рдорд┐рдард╛рдИ рдХреЗ рд▓рд┐рдП - рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ред рдЗрд╕рдореЗрдВ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдПрдкреАрдЖрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░, рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рд╕рд╣рд┐рдд рдХрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреЛ рдХреИрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╕рд╛рдордЧреНрд░реА

  1. рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рд╣реЗрддреБ рдкреНрд░реЗрд░рдгрд╛
  2. рдПрд▓рдПрдордбреАрдмреА рдкреЛрдЬрд┐рд╢рдирд┐рдВрдЧ
  3. рдПрд▓рдПрдордбреАрдмреА рдХреЗ рддреАрди рд╕реНрддрдВрдн
    3.1. рд╡реНрд╣реЗрд▓ #1. рдореЗрдореЛрд░реА-рдореИрдк рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ
    3.2. рд╡реНрд╣реЗрд▓ #2. рдмреА+-рд╡реГрдХреНрд╖
    3.3. рд╡реНрд╣реЗрд▓ #3. рд▓рд┐рдЦрдиреЗ рдкрд░ рдирдХрд▓
  4. рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдПрдкреАрдЖрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдирд╛
    4.1. рдмреБрдирд┐рдпрд╛рджреА рд╕рд╛рд░
    4.2. рдЯреЗрдмрд▓ рдореЙрдбрд▓рд┐рдВрдЧ
    4.3. рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреА рдореЙрдбрд▓рд┐рдВрдЧ

1. рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЗрддреБ рдкреНрд░реЗрд░рдгрд╛

2015 рдореЗрдВ рдПрдХ рд╕рд╛рд▓, рд╣рдордиреЗ рдпрд╣ рдорд╛рдкрдиреЗ рдХрд╛ рдХрд╖реНрдЯ рдЙрдард╛рдпрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд┐рддрдиреА рдмрд╛рд░ рдкрд┐рдЫрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рдРрд╕рд╛ рдПрдХ рдХрд╛рд░рдг рд╕реЗ рдХрд┐рдпрд╛ред рд╣рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд╢рд┐рдХрд╛рдпрддреЗрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ рдХрд┐ рдХрднреА-рдХрднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ: рдмрдЯрди рджрдмрд╛рдП рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ, рд╕реВрдЪрд┐рдпрд╛рдВ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рд╣реЛрддреАрдВ, рдЖрджрд┐ред рдорд╛рдк рдХреА рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдПрд╡рд┐рдЯреЛрдЯреЗрдХ рдкрд░, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдореИрдВ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо рджреЗрддрд╛ рд╣реВрдВред

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдорд╛рдк рдкрд░рд┐рдгрд╛рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдардВрдбреА рдмреМрдЫрд╛рд░ рдмрди рдЧрдПред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдлрд╝реНрд░реАрдЬрд╝ рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред рдпрджрд┐ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕рдордЭрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдореБрдЦреНрдп рддрдХрдиреАрдХреА рд╕рдВрдХреЗрддрдХ рдХреНрд░реИрд╢-рдлреНрд░реА рдерд╛, рддреЛ рдлреЛрдХрд╕ рдХреЗ рдмрд╛рдж рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдлреНрд░реАрдЬ рдореБрдХреНрдд рдкрд░.

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

рд╕рд┐рд╕реНрдЯрдо рд╕рдВрдЧрдарди рдХрд╛ рдЕрднрд┐рдиреЗрддрд╛ рдореЙрдбрд▓ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдЗрд╕рдХрд╛ рджреВрд╕рд░рд╛ рд╕рд╛рд░ рдмрди рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рд╡реЗ рдРрд╕рд╛ рдХрднреА-рдХрднреА рдФрд░ рдЗрдзрд░-рдЙрдзрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд▓рдЧрднрдЧ рд▓рдЧрд╛рддрд╛рд░ рдФрд░ рд╣рд░ рдЬрдЧрд╣ рдХрд░рддреЗ рд╣реИрдВ

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдкреНрд░рд╕реНрддреБрдд рдЖрд░реЗрдЦ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдзрд╛рд░рд╢рд┐рд▓рд╛ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдореИрдХреНрд░реЛрдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рд╕рд╛рдЭрд╛ рдбреЗрдЯрд╛рдмреЗрд╕. рдпрджрд┐ рдЙрджреНрдпрдо рдЬрдЧрдд рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХреНрдЯрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ - рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдПрдХ рдРрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдиреНрдпреВрдирддрдо рдХрдард┐рдирд╛рдИ рднреА рди рд╣реЛред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╡рд╕реНрддреБрдПрдВ рдХрдо рд╕реЗ рдХрдо рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреИрд░-рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓реЙрдХрд┐рдВрдЧ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдП рдХрдИ рдзрд╛рдЧреЛрдВ рд╕реЗ рдПрдХ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд▓рд╛рднрдХрд╛рд░реА рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред

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

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

рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдЕрдзрд┐рдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдкреВрд░реА рд╕реВрдЪреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред

  1. рдзрд╛рдЧреЗ рдХреА рд╕реБрд░рдХреНрд╖рд╛.
  2. рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧред рди рдХреЗрд╡рд▓ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ, рдмрд▓реНрдХрд┐ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ iOS рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмреАрдЪ рднреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рддрдп рд╣реЛрддрд╛ рд╣реИред
  3. рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЧреИрд░-рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
  4. рд╕реАрдЖрд░рдпреВрдбреА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рднреАрддрд░ рдХреЛрдИ рдЧрддрд┐рд╢реАрд▓ рдЖрд╡рдВрдЯрди рдирд╣реАрдВред
  5. рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдирджреЗрди рд╕рдорд░реНрдерди рдПрд╕рд┐рдб: рдкрд░рдорд╛рдгреБрддрд╛, рд╕реНрдерд┐рд░рддрд╛, рдЕрд▓рдЧрд╛рд╡ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ред
  6. рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдорд╛рдорд▓реЛрдВ рдкрд░ рдЧрддрд┐.

рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде, SQLite рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдерд╛ рдФрд░ рд░рд╣реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рдПрдХ рдХрд┐рддрд╛рдм рдорд┐рд▓реА "рд▓реЗрд╡рд▓рдбреАрдмреА рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛". рдЙрдирдХреЗ рдиреЗрддреГрддреНрд╡ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреНрд▓рд╛рдЙрдб рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреА рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдирддреАрдЬрд╛ рд╣рдорд╛рд░реА рдмреЗрддрд╣рд╛рд╢рд╛ рдЙрдореНрдореАрджреЛрдВ рд╕реЗ рдмрдврд╝рдХрд░ рд░рд╣рд╛ред рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ - рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдкрд░ рдХрд░реНрд╕рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ - рдПрд▓рдПрдордбреАрдмреА SQLite рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10 рдЧреБрдирд╛ рддреЗрдЬ рдирд┐рдХрд▓рд╛ред рдЪреБрдирд╛рд╡ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛.

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

2. рдПрд▓рдПрдордбреАрдмреА рдкреЛрдЬрд┐рд╢рдирд┐рдВрдЧ

рдПрд▓рдПрдордбреАрдмреА рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдХреЗрд╡рд▓ 10K рдкрдВрдХреНрддрд┐рдпрд╛рдБ) рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реА рдореМрд▓рд┐рдХ рдкрд░рдд - рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдЙрдкрд░реЛрдХреНрдд рдЖрд░реЗрдЦ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрд▓рдПрдордбреАрдмреА рдХреА рддреБрд▓рдирд╛ SQLite рд╕реЗ рдХрд░рдирд╛, рдЬреЛ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЖрдо рддреМрд░ рдкрд░ рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде SQLite рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рд╕рдорд╛рди рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрдЬрдиреЛрдВ рдХреЛ рд╕рдорд╛рди рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрджреНрдзреГрдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ - рдмрд░реНрдХрд▓реЗрдбреАрдмреА, рд▓реЗрд╡рд▓рдбреАрдмреА, рд╕реЛрдлрд┐рдпрд╛, рд░реЙрдХреНрд╕рдбреАрдмреА, рдЖрджрд┐ред рдРрд╕реЗ рд╡рд┐рдХрд╛рд╕ рднреА рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрд▓рдПрдордбреАрдмреА SQLite рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрдЬрди рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпреЛрдЧ 2012 рдореЗрдВ рд╣реБрдЖ рдерд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдПрд▓рдПрдордбреАрдмреА рджреНрд╡рд╛рд░рд╛ рд╣рд╛рд╡рд░реНрдб рдЪреБ. рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рдЗрддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдмрд┐рдд рд╣реБрдЖ рдХрд┐ рдЙрдирдХреА рдкрд╣рд▓ рдХреЛ рдУрдПрд╕рдПрд╕ рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рдиреЗ рд╣рд╛рдереЛрдВ-рд╣рд╛рде рд▓рд┐рдпрд╛ рдФрд░ рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЗрд╕рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдкрд╛рдИ рд▓реБрдореЛрдПрд╕рдХреНрдпреВрдПрд▓. рдЬрдирд╡рд░реА 2020 рдореЗрдВ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓реЗрдЦрдХ рдбреЗрди рд╢рд┐рдпрд░рд░ рдереЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдпрд╣ LinuxConfAu рдкрд░ рд╣реИред

рдПрд▓рдПрдордбреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╕реНрд╡рд░реВрдк рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдХрд╛рд░рдг рд╣реИ OpenLDAP, рдЬреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд░реНрдХрд▓реЗрдбреАрдмреА рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдЕрд╕рдВрддреБрд╖реНрдЯ рдереЗред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд╢реБрд░реБрдЖрдд рдмреАрдЯреНрд░реА, рд╣реЙрд╡рд░реНрдб рдЪреВ рд╣рдорд╛рд░реЗ рд╕рдордп рдХреЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд░рд┐рдкреЛрд░реНрдЯ рдЗрд╕ рдХрд╣рд╛рдиреА рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдПрд▓рдПрдордбреАрдмреА рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рднреА рд╕рдорд░реНрдкрд┐рдд рдХреАред "рдж рд▓рд╛рдЗрдЯрдирд┐рдВрдЧ рдореЗрдореЛрд░реА-рдореИрдкреНрдб рдбреЗрдЯрд╛рдмреЗрд╕". рднрдВрдбрд╛рд░рдг рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рд╡рд┐рдЬрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпреЛрдирд┐рдж рдпреВрд░реАрд╡ (рдЙрд░реНрдл) рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпреЗрд▓реЛ) рд╣рд╛рдИрд▓реЛрдб 2015 рдореЗрдВ рдЕрдкрдиреА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдкреЙрдЬрд┐рдЯрд┐рд╡ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ рд╕реЗ "LMDB рдЗрдВрдЬрди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЪреИрдВрдкрд┐рдпрди рд╣реИ". рдЗрд╕рдореЗрдВ, рд╡рд╣ ReOpenLDAP рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрд▓рдПрдордбреАрдмреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓реЗрд╡рд▓рдбреАрдмреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреБрд▓рдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╡рд┐рд╖рдп рд░рд╣рд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреЙрдЬрд┐рдЯрд┐рд╡ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ рдХреЗ рдкрд╛рд╕ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдХрд╛рдВрдЯрд╛ рднреА рдерд╛ рдПрдордбреАрдмреАрдПрдХреНрд╕ рдмрд╣реБрдд рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ, рдЕрдиреБрдХреВрд▓рди рдФрд░ рдХреЗ рд╕рд╛рде рдХрдВрдкреНрдпреВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрдЧ рдХреЛ рджреВрд░ рдХрд░рдирд╛.

рдПрд▓рдПрдордбреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдпрдерд╛-рднрдВрдбрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЛрдЬрд╝рд┐рд▓рд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪреБрдирд╛ рдпрд╣ рдХрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░, рд╕рдВрд╕реНрдХрд░рдг 9, Xcode рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдкрд╕рдВрджреАрджрд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ SQLite рд╣реИред

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

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

3. рдПрд▓рдПрдордбреАрдмреА рдХреЗ рддреАрди рд╕реНрддрдВрдн

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

  1. рдбрд┐рд╕реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрдореЛрд░реА-рдореИрдк рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВред
  2. B+-рдЯреНрд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдПрдХ рд╕рдВрдЧрдарди рдХреЗ рд░реВрдк рдореЗрдВред
  3. ACID рд▓реЗрдирджреЗрди рдЧреБрдг рдФрд░ рдмрд╣реБрд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдкреА-рдСрди-рд░рд╛рдЗрдЯред

3.1. рд╡реНрд╣реЗрд▓ #1. рдореЗрдореЛрд░реА-рдореИрдк рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ

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

  1. рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рд╕реНрдерд┐рд░рддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдмрди рдЬрд╛рддреА рд╣реИред рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдЗрд╕ рдпрд╛рдВрддреНрд░рд┐рдХреА рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдФрд░ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред
  2. рдХреИрд╢ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдЧрддрд┐рд╢реАрд▓ рдЖрд╡рдВрдЯрди рд╕реЗ рдЬреБрдбрд╝реЗ рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдПрд▓рдПрдордбреАрдмреА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддреА рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рд╣реА рдкрддреЗ рдкрд░ рдкреЙрдЗрдВрдЯрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВред рдпрд╣ рд╡рд┐рдЬреНрдЮрд╛рди рдХрдерд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ рдХреЙрд▓реЛрдХ рдХреА рд╕рднреА рдХреЙрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрддреА рд╣реИрдВред
  3. рдХреИрд╢ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрд░реНрде рдЙрдирдХреА рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рдЬреБрдбрд╝реЗ рддрд╛рд▓реЗ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рднреА рд╣реИред рдкрд╛рдардХ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкрд╛рдардХреЛрдВ рдХреА рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдбреЗрдЯрд╛ рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдПрдХ рднреА рдореНрдпреВрдЯреЗрдХреНрд╕ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдореЗрдВ рд╕реАрдкреАрдпреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрджрд░реНрд╢ рд░реИрдЦрд┐рдХ рдорд╛рдкрдиреАрдпрддрд╛ рд╣реЛрддреА рд╣реИред рдПрд▓рдПрдордбреАрдмреА рдореЗрдВ, рдХреЗрд╡рд▓ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд▓реЗрдЦрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  4. рдиреНрдпреВрдирддрдо рдХреИрд╢рд┐рдВрдЧ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рддрд░реНрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рдЕрддреНрдпрдВрдд рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдпреВрд╕реЗрдирд┐рдХреНрд╕ рдУрдПрд╕рдбреАрдЖрдИ 2014 рд╕рдореНрдореЗрд▓рди рдореЗрдВ рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрдзреНрдпрдпрди рдереЗ: "рд╕рднреА рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рдорд╛рди рдирд╣реАрдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ: рдХреНрд░реИрд╢-рд╕рдВрдЧрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкрд░" ╨╕ "рдореМрдЬ-рдорд╕реНрддреА рдФрд░ рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЕрддреНрдпрд╛рдЪрд╛рд░ рдХрд░рдирд╛". рдЙрдирд╕реЗ рдЖрдк LMDB рдХреА рдЕрднреВрддрдкреВрд░реНрд╡ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдФрд░ ACID рд▓реЗрдирджреЗрди рдЧреБрдгреЛрдВ рдХреЗ рд▓рдЧрднрдЧ рджреЛрд╖рд░рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЬреЛ SQLite рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рджреЛрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  5. рдПрд▓рдПрдордбреАрдмреА рдХрд╛ рдЕрддрд┐рд╕реВрдХреНрд╖реНрдорд╡рд╛рдж рдорд╢реАрди рдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдЖрдЧрд╛рдореА рдЧрддрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдПрд▓1 рдХреИрд╢ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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

рдореЗрдореЛрд░реА-рдореИрдк рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА

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

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

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡рд░реНрдЪреБрдЕрд▓ рдФрд░ рдлрд┐рдЬрд┐рдХрд▓ рдореЗрдореЛрд░реА рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдкреЗрдЬреЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреГрд╖реНрда рдорд╛рдВрдЧ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕реЗ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЙрдирдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдореБрдлреНрдд рд╕реНрд▓реЙрдЯ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдорд╛рдВрдЧ рдореЗрдВ рд╣реИ рд╡рд╣ рдЙрд╕рдХреА рдЬрдЧрд╣ рд▓реЗ рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЬрд┐рд╕ рдкрд░ рд╣рдо рд╢реАрдШреНрд░ рд╣реА рд▓реМрдЯреЗрдВрдЧреЗ, рд╕реНрд╡реИрдкрд┐рдВрдЧ рдХрд╣рд▓рд╛рддреА рд╣реИред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЪрд┐рддреНрд░ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЙрд╕ рдкрд░, рдкрддрд╛ 0 рд╡рд╛рд▓рд╛ рдкреЗрдЬ рдП рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдкрддрд╛ 4 рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдореЗрдореЛрд░реА рдкреЗрдЬ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рддрдереНрдп рд╕реЗрд▓ рдирдВрдмрд░ 0 рдореЗрдВ рдкрддреНрд░рд╛рдЪрд╛рд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рдерд╛редтАЛ

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдореЗрдореЛрд░реА рдореЗрдВ рдореИрдк рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рднреА рдХрд╣рд╛рдиреА рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕реА рд╣реА рд╣реИред рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рд╡реЗ рдХрдерд┐рдд рд░реВрдк рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡реЗ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рд╣реА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдкреЗрдЬ рджрд░ рдкреЗрдЬ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕реЗ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рд╕рдВрд╢реЛрдзрди рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣, рдЖрдк рдХреЗрд╡рд▓ рдореЗрдореЛрд░реА рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ I/O рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗредтАЛ
╬г╧Д╧Б╬▒╧Д╧М╧В Assault - ╬а╬▒╬п╬╛╧Д╬╡ Funny Games
рдиреАрдЪреЗ рджреА рдЧрдИ рдЫрд╡рд┐ рджрд░реНрд╢рд╛рддреА рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдПрд▓рдПрдордбреАрдмреА рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреЛ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореИрдк рдХрд░рдХреЗ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЙрдирдХреЗ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЗ рдХреБрдЫ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЯреНрд░рд╛рдВрдЬрд╝рд┐рдЯрд┐рд╡ рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдПрд▓рдПрдордбреАрдмреА рджрд┐рдЦрддрд╛ рд╣реИред
╬г╧Д╧Б╬▒╧Д╧М╧В Assault - ╬а╬▒╬п╬╛╧Д╬╡ Funny Games

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рдпрд╣ рд╣реИ рдХрд┐ рдПрд▓рдПрдордбреАрдмреА, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд░рд╛рдЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдб рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред

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

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

iOS рдореЗрдВ рдореЗрдореЛрд░реА-рдореИрдк рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдПрдБ

2018 рдореЗрдВ WWDC рдореЗрдВ рдПрдХ рдЕрджреНрднреБрдд рд░рд┐рдкреЛрд░реНрдЯ рдЖрдИ рдереА "рдЖрдИрдУрдПрд╕ рдореЗрдореЛрд░реА рдбреАрдк рдбрд╛рдЗрд╡". рдпрд╣ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ iOS рдореЗрдВ, рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╕рднреА рдкреЗрдЬ 3 рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВ: рдЧрдВрджрд╛, рд╕рдВрдкреАрдбрд╝рд┐рдд рдФрд░ рд╕рд╛рдлрд╝ред

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдХреНрд▓реАрди рдореЗрдореЛрд░реА рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬрд┐рд╕реЗ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рд╕реЗ рджрд░реНрдж рд░рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдирдореЗрдВ рдореМрдЬреВрдж рдбреЗрдЯрд╛ рдХреЛ рдЙрд╕рдХреЗ рдореВрд▓ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА-рдореИрдкреНрдб рдлрд╝рд╛рдЗрд▓реЗрдВ рдЗрд╕ рд╢реНрд░реЗрдгреА рдореЗрдВ рдЖрддреА рд╣реИрдВред iOS рдХрд┐рд╕реА рднреА рд╕рдордп рдореЗрдореЛрд░реА рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореИрдк рдХрд┐рдП рдЧрдП рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдбрд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реЛрддреА рд╣реИред
╬г╧Д╧Б╬▒╧Д╧М╧В Assault - ╬а╬▒╬п╬╛╧Д╬╡ Funny Games
рд╕рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдкреГрд╖реНрда рдЧрдВрджреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╣реАрдВ рднреА рд╕реНрдерд┐рдд рд╣реЛрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрдирд╕реЗ рдЬреБрдбрд╝реА рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд┐рдЦрдХрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдореЗрдореЛрд░реА-рдореИрдк рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдПрд▓рдПрдордбреАрдмреА рдЦреЛрд▓рдирд╛ MDB_WRITEMAP, рдЗрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

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

рдЕрдЪреНрдЫреА рдЦрдмрд░, рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдкрд╣рд▓реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдпрд╣ рд╣реИ рдХрд┐ рдПрд▓рдПрдордбреАрдмреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордПрдордПрдкреА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдбреЗрдЯрд╛ рдХреЛ iOS рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪреНрдЫ рдореЗрдореЛрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореЗрдореЛрд░реА рдлрд╝реБрдЯрдкреНрд░рд┐рдВрдЯ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ VM рдЯреНрд░реИрдХрд░ рдирд╛рдордХ Xcode рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА iOS рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕рдореЗрдВ 2 LMDB рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд╣рд▓реЗ рдХреЛ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдХреЛ 1GiB рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рдереА, рджреВрд╕рд░реЗ рдХреЛ - 512MiB рдкрд░ред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рджреЛрдиреЛрдВ рд╕реНрдЯреЛрд░реЗрдЬ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдирд┐рд╡рд╛рд╕реА рдореЗрдореЛрд░реА рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЧрдВрджреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдФрд░ рдЕрдм рдмреБрд░реА рдЦрдмрд░ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ. 64-рдмрд┐рдЯ рдбреЗрд╕реНрдХрдЯреЙрдк рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрд╡реИрдк рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдкрдиреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрд╡реИрдк рдХреЗ рд▓рд┐рдП рдореБрдХреНрдд рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЗ рдмрд░рд╛рдмрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рд▓реЗ рд╕рдХрддреА рд╣реИред рдЖрдИрдУрдПрд╕ рдореЗрдВ рд╕реНрд╡реИрдк рдХреЛ рдХрдореНрдкреНрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рд╕реЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЕрдзрд┐рдХрддрдорддрд╛ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЕрдм рд╕рднреА рдЬреАрд╡рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдореБрдЦреНрдп (рдкрдврд╝реЗрдВ рд░реИрдо) рдореЗрдореЛрд░реА рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЬреЛ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЕрдиреБрд╕рд╛рд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рд░рд┐рдкреЛрд░реНрдЯ, рдФрд░ рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ. рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, iOS рдПрдордПрдордПрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡рдВрдЯрди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣рд╛рдВ рдЖрдк рдЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреА рдЕрдиреБрднрд╡рдЬрдиреНрдп рд╕реАрдорд╛рдУрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрдзреБрдирд┐рдХ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдореЙрдбрд▓ рдкрд░, рдЖрдИрдУрдПрд╕ 2 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдИрдкреИрдб рдХреЗ рд╢реАрд░реНрд╖ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ - 4 рд╕реЗред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдХрдо рд╕рдорд░реНрдерд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдореЙрдбрд▓ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рджреБрдЦрдж рд╣реИред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рд╡реАрдПрдо рдЯреНрд░реИрдХрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореЗрдореЛрд░реА рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦрдХрд░, рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдПрд▓рдПрдордбреАрдмреА рдореЗрдореЛрд░реА-рдореИрдк рдХрд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХрдорд╛рддреНрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред рдЕрдЪреНрдЫрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рд┐рд╕реНрдЯрдо рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛рдУрдВ, рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ, рдЫрд╡рд┐ рдврд╛рдВрдЪреЗ рдФрд░ рдЕрдиреНрдп рдЫреЛрдЯреЗ рд╢рд┐рдХрд╛рд░рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЦрд╛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдПрд▓рдПрдордбреАрдмреА рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдордЭреМрддрд╛ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдЖрдП: 384-рдмрд┐рдЯ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП 32 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдФрд░ 768-рдмрд┐рдЯ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП 64ред рдЗрд╕ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдИ рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдХрд╛рд░реНрдп рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ MDB_MAP_FULL. рд╣рдо рдЕрдкрдиреА рдирд┐рдЧрд░рд╛рдиреА рдореЗрдВ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджреЗрдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЗрддрдиреА рдЫреЛрдЯреА рд╣реЛрддреА рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

3.2. рд╡реНрд╣реЗрд▓ #2. рдмреА+-рд╡реГрдХреНрд╖

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

  1. рдПрдХ рдирдпрд╛ рддрддреНрд╡ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛.
  2. рджреА рдЧрдИ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдЦреЛрдЬреЗрдВред
  3. рдХрд┐рд╕реА рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рдирд╛.
  4. рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЙрдирдХреЗ рдЕрдВрддрд░рд╛рд▓реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░реЗрдВред

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

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

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

рдЬрд┐рд╕рдХреЗ рдЪрд▓рддреЗ:

  1. рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдСрд░реНрдбрд░ рдХреА рдЧрдИ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдкреЗрдбрд╝ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрддреЗ рд╣реИрдВред
  2. рдкреЗрдбрд╝ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрддрд╛ рдХрд╛ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬреЛ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдореВрд▓реНрдп рдХреЗ рдХрд░реАрдм рд╣реЛрддреА рд╣реИрдВ рд╡реЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдпрд╛ рдкрдбрд╝реЛрд╕реА рдиреЛрдбреНрд╕ рдкрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИрдВред
  3. рдЦреЛрдЬ рдЕрднрд┐рдпрд╛рди рдХреЗ рджреМрд░рд╛рди рдкреЗрдбрд╝ рд╕реЗ рдиреАрдЪреЗ рдЙрддрд░рддреЗ рд╕рдордп рдкрд╛рд░рдЧрдорди рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
  4. рд╢реНрд░реЗрдгреА рдХреНрд╡реЗрд░реА рдХреЗ рджреМрд░рд╛рди рдкрдврд╝реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓рдХреНрд╖реНрдп рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдСрд░реНрдбрд░ рдХреА рдЧрдИ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВред

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдПрд▓рдПрдордбреАрдмреА рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреА-рдЯреНрд░реА рдХреА рдПрдХ рднрд┐рдиреНрдирддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмреА+ рдЯреНрд░реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЪрд┐рддреНрд░ рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреЛрдбреНрд╕ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:

  1. рд╕рдмрд╕реЗ рдКрдкрд░ рдЬрдбрд╝ рд╣реИ. рдпрд╣ рдПрдХ рдЧреЛрджрд╛рдо рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдПрд▓рдПрдордбреАрдмреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рднреАрддрд░, рдЖрдк рдХрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореИрдк рдХрд┐рдП рдЧрдП рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреА рдЬрдбрд╝ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
  2. рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдкрддреНрддрд┐рдпрд╛рдБ рд╣реИрдВред рдЙрдирдореЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдпрд╣ B+-рд╡реГрдХреНрд╖реЛрдВ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рд╣реИред рдпрджрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рдмреА-рдЯреНрд░реА рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреЗ рдиреЛрдбреНрд╕ рдореЗрдВ рдореВрд▓реНрдп рднрд╛рдЧреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмреА+ рднрд┐рдиреНрдирддрд╛ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рд╣реЛрддреА рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрд▓рдПрдордбреАрдмреА рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдкреЗрдбрд╝ рдХреЗ рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЛ рдХреЗрд╡рд▓ рдмреА-рдЯреНрд░реА рдХрд╣реЗрдВрдЧреЗред
  3. рдЬрдбрд╝ рдФрд░ рдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдиреЗрд╡рд┐рдЧреЗрд╢рдирд▓ (рд╢рд╛рдЦрд╛) рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде 0 рдпрд╛ рдЕрдзрд┐рдХ рддрдХрдиреАрдХреА рд╕реНрддрд░ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдХрд╛рд░реНрдп рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рдХреНрд░рдордмрджреНрдз рд╕реЗрдЯ рдХреЛ рдкрддреНрддреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдкреЗрдЬ рдиреЛрдбреНрд╕ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрд▓рдПрдордбреАрдмреА рдмреА-рдЯреНрд░реА рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВрдЧреЗред

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

3.3. рд╡реНрд╣реЗрд▓ #3. рд▓рд┐рдЦрдиреЗ рдкрд░ рдирдХрд▓

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

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

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

4. рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдПрдкреАрдЖрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛

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

рдХреЛрдб рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдиреЛрдЯ

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрд▓рдПрдордбреАрдмреА рдПрдкреАрдЖрдИ рдореЗрдВ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдХреА рд╕рднреА рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╣рдордиреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдХрд╛рдБрдЯрд╛ рд╕реА++ рд░реИрдкрд░ lmdbxx, рдЬрд┐рд╕рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдБ C++ рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИрдВред

iOS рдпрд╛ macOS рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ LMDB рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ CocoaPod рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдБ POSLMDB.

4.1. рдмреБрдирд┐рдпрд╛рджреА рд╕рд╛рд░

рдкрд░реНрдпрд╛рд╡рд░рдг

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

mdb_env_create(env);тАЛ
mdb_env_set_map_size(*env, 1024 * 1024 * 512)тАЛ
mdb_env_open(*env, path.UTF8String, MDB_NOTLS, 0664);

Mail.ru рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рд╣рдордиреЗ рдХреЗрд╡рд▓ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдмрджрд▓реЗ рд╣реИрдВред

рдкрд╣рд▓рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рд╣реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рднреА, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рд░рди рджрд░ рд░рди рдореЗрдВ рдХрд╛рдлреА рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред iOS рдХреА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрддрдо рд╕реНрдЯреЛрд░реЗрдЬ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рди рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ, рдлрд╝рдВрдХреНрд╢рди рддрдХ рдЗрд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЖрдзрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ mdb_env_open рд╕реЗ рднрд┐рдиреНрди рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд▓реМрдЯрд╛рдПрдЧрд╛ ENOMEM. рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕рдХрд╛ рд╡рд┐рдкрд░реАрдд рддрд░реАрдХрд╛ рднреА рд╣реИ - рдкрд╣рд▓реЗ рдЗрдВрдЬрди рдХреЛ рдиреНрдпреВрдирддрдо рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░, рдЬрдм рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВ, MDB_MAP_FULL, рдЗрд╕реЗ рдмрдврд╝рд╛рдУред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рдВрдЯреЗрджрд╛рд░ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдХреЛ рдкреБрдирдГ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рд░реАрдореИрдк)ред mdb_env_set_map_size рдЗрдВрдЬрди рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ (рдХрд░реНрд╕рд░, рд▓реЗрдирджреЗрди, рдХреБрдВрдЬрд┐рдпрд╛рдБ рдФрд░ рдорд╛рди) рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░ рджреЗрддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЗрд╕ рдореЛрдбрд╝ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рд╕реЗ рдЗрд╕рдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрдЯрд┐рд▓рддрд╛ рдкреИрджрд╛ рд╣реЛ рдЬрд╛рдПрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдЖрдкрдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕ рдХрд╛рдВрдЯреЗ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдЖрдЧреЗ рдирд┐рдХрд▓ рдЪреБрдХрд╛ рд╣реИ рдПрдордбреАрдмреАрдПрдХреНрд╕, рдЬрд╣рд╛рдВ рдШреЛрд╖рд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдСрди-рдж-рдлреНрд▓рд╛рдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдХрд╛рд░ рд╕рдорд╛рдпреЛрдЬрди" рд╣реИред

рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░, рдЬрд┐рд╕рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрдо рд╕реЗ рдХрдо iOS 10 рдореЗрдВ рдереНрд░реЗрдб рд▓реЛрдХрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЦреЛрд▓рд╛ рдЧрдпрд╛ рд╣реИ MDB_NOTLS. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпреЗ рдЬрд░реВрд░реА рднреА рдерд╛ рдХрд╛рдБрдЯрд╛ рд╕реА++ рд░реИрдкрд░ lmdbxxрдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдПред

рдбреЗрдЯрд╛рдмреЗрд╕

рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХ рдЕрд▓рдЧ рдмреА-рдЯреНрд░реА рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдордиреЗ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред рдЗрд╕рдХрд╛ рдЙрджреНрдШрд╛рдЯрди рдПрдХ рд▓реЗрдирджреЗрди рдХреЗ рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

MDB_txn *txn;тАЛ
MDB_dbi dbi;тАЛ
mdb_txn_begin(env, NULL, MDB_RDONLY, &txn);тАЛ
mdb_dbi_open(txn, NULL, MDB_CREATE, &dbi);тАЛ
mdb_txn_abort(txn);

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

рдХреБрдВрдЬреА рдФрд░ рдореВрд▓реНрдп

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

typedef struct MDB_val {тАЛ
    size_t mv_size;тАЛ
    void *mv_data;тАЛ
} MDB_val;тАЛтАЛ

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

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

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

  1. рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдПрд╕рд┐рдб: рдкрд░рдорд╛рдгреБрддрд╛, рд╕реНрдерд┐рд░рддрд╛, рдЕрд▓рдЧрд╛рд╡ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ред рдореИрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ macOS рдФрд░ iOS рдкрд░ рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ MDBX рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдк рдЙрдирдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ README.
  2. рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ "рдПрдХрд▓ рд▓реЗрдЦрдХ/рдПрдХрд╛рдзрд┐рдХ рдкрд╛рдардХ" рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдЦрдХ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╛рдардХреЛрдВ рдХреЛ рдирд╣реАрдВ рд░реЛрдХрддреЗред рдкрд╛рдардХ рд▓реЗрдЦрдХреЛрдВ рдпрд╛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддреЗред
  3. рдиреЗрд╕реНрдЯреЗрдб рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди.
  4. рдмрд╣реБрд╕рдВрд╕реНрдХрд░рдг рд╕рдорд░реНрдерди.

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

рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

MDB_env *env;
MDB_dbi dbi;
MDB_txn *txn;

mdb_env_create(&env);
mdb_env_open(env, "./testdb", MDB_NOTLS, 0664);

mdb_txn_begin(env, NULL, 0, &txn);
mdb_dbi_open(txn, NULL, 0, &dbi);
mdb_txn_abort(txn);

char k = 'k';
MDB_val key;
key.mv_size = sizeof(k);
key.mv_data = (void *)&k;

int v = 997;
MDB_val value;
value.mv_size = sizeof(v);
value.mv_data = (void *)&v;

mdb_txn_begin(env, NULL, 0, &txn);
mdb_put(txn, dbi, &key, &value, MDB_NOOVERWRITE);
mdb_txn_commit(txn);

MDB_txn *txn1, *txn2, *txn3;
MDB_val val;

// ╨Ю╤В╨║╤А╤Л╨▓╨░╨╡╨╝ 2 ╤В╤А╨░╨╜╨╖╨░╨║╤Ж╨╕╨╕, ╨║╨░╨╢╨┤╨░╤П ╨╕╨╖ ╨║╨╛╤В╨╛╤А╤Л╤Е ╤Б╨╝╨╛╤В╤А╨╕╤В
// ╨╜╨░ ╨▓╨╡╤А╤Б╨╕╤О ╨▒╨░╨╖╤Л ╨┤╨░╨╜╨╜╤Л╤Е ╤Б ╨╛╨┤╨╜╨╛╨╣ ╨╖╨░╨┐╨╕╤Б╤М╤О.
mdb_txn_begin(env, NULL, 0, &txn1); // read-write
mdb_txn_begin(env, NULL, MDB_RDONLY, &txn2); // read-only

// ╨Т ╤А╨░╨╝╨║╨░╤Е ╨┐╨╡╤А╨▓╨╛╨╣ ╤В╤А╨░╨╜╨╖╨░╨║╤Ж╨╕╨╕ ╤Г╨┤╨░╨╗╤П╨╡╨╝ ╨╕╨╖ ╨▒╨░╨╖╤Л ╨┤╨░╨╜╨╜╤Л╤Е ╤Б╤Г╤Й╨╡╤Б╤В╨▓╤Г╤О╤Й╤Г╤О ╨▓ ╨╜╨╡╨╣ ╨╖╨░╨┐╨╕╤Б╤М.
mdb_del(txn1, dbi, &key, NULL);
// ╨д╨╕╨║╤Б╨╕╤А╤Г╨╡╨╝ ╤Г╨┤╨░╨╗╨╡╨╜╨╕╨╡.
mdb_txn_commit(txn1);

// ╨Ю╤В╨║╤А╤Л╨▓╨░╨╡╨╝ ╤В╤А╨╡╤В╤М╤О ╤В╤А╨░╨╜╨╖╨░╨║╤Ж╨╕╤О, ╨║╨╛╤В╨╛╤А╨░╤П ╤Б╨╝╨╛╤В╤А╨╕╤В ╨╜╨░
// ╨░╨║╤В╤Г╨░╨╗╤М╨╜╤Г╤О ╨▓╨╡╤А╤Б╨╕╤О ╨▒╨░╨╖╤Л ╨┤╨░╨╜╨╜╤Л╤Е, ╨│╨┤╨╡ ╨╖╨░╨┐╨╕╤Б╨╕ ╤Г╨╢╨╡ ╨╜╨╡╤В.
mdb_txn_begin(env, NULL, MDB_RDONLY, &txn3);
// ╨г╨▒╨╡╨╢╨┤╨░╨╡╨╝╤Б╤П, ╤З╤В╨╛ ╨╖╨░╨┐╨╕╤Б╤М ╨┐╨╛ ╨╕╤Б╨║╨╛╨╝╨╛╨╝╤Г ╨║╨╗╤О╤З╤Г ╤Г╨╢╨╡ ╨╜╨╡ ╤Б╤Г╤Й╨╡╤Б╤В╨▓╤Г╨╡╤В.
assert(mdb_get(txn3, dbi, &key, &val) == MDB_NOTFOUND);
// ╨Ч╨░╨▓╨╡╤А╤И╨░╨╡╨╝ ╤В╤А╨░╨╜╨╖╨░╨║╤Ж╨╕╤О.
mdb_txn_abort(txn3);

// ╨г╨▒╨╡╨╢╨┤╨░╨╡╨╝╤Б╤П, ╤З╤В╨╛ ╨▓ ╤А╨░╨╝╨║╨░╤Е ╨▓╤В╨╛╤А╨╛╨╣ ╤В╤А╨░╨╜╨╖╨░╨║╤Ж╨╕╨╕, ╨╛╤В╨║╤А╤Л╤В╨╛╨╣ ╨╜╨░ ╨╝╨╛╨╝╨╡╨╜╤В
// ╤Б╤Г╤Й╨╡╤Б╤В╨▓╨╛╨▓╨░╨╜╨╕╤П ╨╖╨░╨┐╨╕╤Б╨╕ ╨▓ ╨▒╨░╨╖╨╡ ╨┤╨░╨╜╨╜╤Л╤Е, ╨╡╤С ╨▓╤Б╤С ╨╡╤Й╤С ╨╝╨╛╨╢╨╜╨╛ ╨╜╨░╨╣╤В╨╕ ╨┐╨╛ ╨║╨╗╤О╤З╤Г.
assert(mdb_get(txn2, dbi, &key, &val) == MDB_SUCCESS);
// ╨Я╤А╨╛╨▓╨╡╤А╤П╨╡╨╝, ╤З╤В╨╛ ╨┐╨╛ ╨║╨╗╤О╤З╤Г ╨┐╨╛╨╗╤Г╤З╨╡╨╜ ╨╜╨╡ ╨░╨▒╤Л ╨║╨░╨║╨╛╨╣ ╨╝╤Г╤Б╨╛╤А, ╨░ ╨▓╨░╨╗╨╕╨┤╨╜╤Л╨╡ ╨┤╨░╨╜╨╜╤Л╨╡.
assert(*(int *)val.mv_data == 997);
// ╨Ч╨░╨▓╨╡╤А╤И╨░╨╡╨╝ ╤В╤А╨░╨╜╨╖╨░╨║╤Ж╨╕╤О, ╤А╨░╨▒╨╛╤В╨░╤О╤Й╨╡╨╣ ╤Е╨╛╤В╤М ╨╕ ╤Б ╤Г╤Б╤В╨░╤А╨╡╨▓╤И╨╡╨╣, ╨╜╨╛ ╨║╨╛╨╜╤Б╨╕╤Б╤В╨╡╨╜╤В╨╜╨╛╨╣ ╨▒╨░╨╖╨╛╨╣ ╨┤╨░╨╜╨╜╤Л╤Е.
mdb_txn_abort(txn2);

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк SQLite рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рдЯреНрд░рд┐рдХ рдЖрдЬрд╝рдорд╛рдПрдБ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред

рдорд▓реНрдЯреАрд╡рд░реНрдЬрди рдПрдХ iOS рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреАрд╡рди рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд▓рд╛рдн рд▓рд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдХреНрд░реАрди рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреА рдЕрджреНрдпрддрди рджрд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП Mail.ru рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд▓реЗрдВ рдЬреИрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдореАрдбрд┐рдпрд╛ рдЧреИрд▓рд░реА рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдСрдЯреЛрд▓реЛрдб рдХрд░рдирд╛ред рдЕрдЪреНрдЫреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХрдИ рддрд╕реНрд╡реАрд░реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдпрджрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдмрд╛рдж рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ UICollectionView рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдореАрдбрд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде, рдЖрдк рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди 60 рдПрдлрдкреАрдПрд╕ рдФрд░ рд╕реБрдЪрд╛рд░реВ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╛рд░-рдмрд╛рд░ рд╕реНрдХреНрд░реАрди рдЕрдкрдбреЗрдЯ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рджрд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ UICollectionViewDataSource.

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

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

рдХрд░реНрд╕рд░

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

4.2. рдЯреЗрдмрд▓ рдореЙрдбрд▓рд┐рдВрдЧ

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

рдЯреЗрдмрд▓ рд╕реНрдХреАрдорд╛

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

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдХреБрдВрдЬрд┐рдпрд╛рдБ рдФрд░ рдорд╛рдиреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛

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

typedef struct NodeKey {тАЛ
    EntityId parentId;тАЛ
    uint8_t type;тАЛ
    uint8_t nameBuffer[256];тАЛ
} NodeKey;

рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП NodeKey рд╡рд╕реНрддреБ рдореЗрдВ рднрдВрдбрд╛рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ MDB_val рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдкрддреЗ рдкрд░ рд░рдЦреЗрдВ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ sizeof.

MDB_val serialize(NodeKey * const key) {
    return MDB_val {
        .mv_size = sizeof(NodeKey),
        .mv_data = (void *)key
    };
}

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

рдмрд╛рдЗрдирд░реА рддреБрд▓рдирд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдХреБрдВрдЬрд┐рдпрд╛рдБ рдСрд░реНрдбрд░ рдХрд░рдирд╛

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

рдпрд╛рдж рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдмрд╛рдд рдЖрджрд┐рдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕реНрдореГрддрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА Apple рдЙрдкрдХрд░рдгреЛрдВ рдкрд░, рдкреВрд░реНрдгрд╛рдВрдХ рдЪрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ рдЫреЛрдЯрд╛ рдПрдВрдбрд┐рдпрди. рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдЗрдЯ рдмрд╛рдИрдВ рдУрд░ рд╣реЛрдЧреА, рдФрд░ рдмрд╛рдЗрдЯ-рджрд░-рдмрд╛рдЗрдЯ рддреБрд▓рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 0 рд╕реЗ 511 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗред

// value (hex dump)
000 (0000)
256 (0001)
001 (0100)
257 (0101)
...
254 (fe00)
510 (fe01)
255 (ff00)
511 (ff01)

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреЛ рдмрд╛рдЗрдЯ-рдмрд╛рдЗрдЯ рддреБрд▓рдирд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреБрдВрдЬреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдХрд╛рд░реНрдп рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ hton* (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ htons рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдбрдмрд▓-рдмрд╛рдЗрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП)ред

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

рджреВрд╕рд░реА рдмрд╛рдд рдзреНрдпрд╛рди рд░рдЦрдиреЗ рд╡рд╛рд▓реА рд╣реИ рд╕рдВрд░реЗрдЦрдг рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рдВрд░рдЪрдирд╛ рдХреНрд╖реЗрддреНрд░ рд╕рдВрдХрд▓рдХред рдЙрдирдХреА рд╡рдЬрд╣ рд╕реЗ, рдлрд╝реАрд▓реНрдб рдХреЗ рдмреАрдЪ рдореЗрдореЛрд░реА рдореЗрдВ рдХрдЪрд░рд╛ рдорд╛рди рд╡рд╛рд▓реЗ рдмрд╛рдЗрдЯреНрд╕ рдмрди рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдмрд╛рдЗрдЯ-рдмрд╛рдЗрдЯ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдХрдЪрд░реЗ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдлрд╝реАрд▓реНрдб рдХреЛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд░рдо рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╕рдВрд░реЗрдЦрдг рдирд┐рдпрдореЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рд╕рдВрд░рдЪрдирд╛ рдШреЛрд╖рдгрд╛ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ packed.

рдмрд╛рд╣рд░реА рддреБрд▓рдирд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдХреБрдВрдЬрд┐рдпрд╛рдБ рдСрд░реНрдбрд░ рдХрд░рдирд╛

рдмрд╛рдЗрдирд░реА рддреБрд▓рдирд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рддреБрд▓рдирд╛ рддрд░реНрдХ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрдИ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рднреАрддрд░ рддрдХрдиреАрдХреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рдореИрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреА рдШрдЯрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╣реИред

typedef struct NodeKey {тАЛ
    EntityId parentId;тАЛ
    uint8_t type;тАЛ
    uint8_t nameBuffer[256];тАЛ
} NodeKey;

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

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

typedef struct NodeKey {тАЛ
    EntityId parentId;тАЛ
    uint8_t type;тАЛ
    uint8_t nameLength;тАЛ
    uint8_t nameBuffer[256];тАЛ
} NodeKey;

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

MDB_val serialize(NodeKey * const key) {
    return MDB_val {
        .mv_size = offsetof(NodeKey, nameBuffer) + key->nameLength,
        .mv_data = (void *)key
    };
}

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

рдПрд▓рдПрдордбреАрдмреА рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХреБрдВрдЬреА рддреБрд▓рдирд╛ рдлрд╝рдВрдХреНрд╢рди рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ mdb_set_compare рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдЦреНрддреА рд╕реЗ. рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкреВрд░реЗ рдЬреАрд╡рдирдХрд╛рд▓ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреБрд▓рдирд┐рддреНрд░ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджреЛ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдпрд╣ рддреБрд▓рдирд╛ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ: (-1) рд╕реЗ рдХрдо, (1) рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ (0) рдХреЗ рдмрд░рд╛рдмрд░ред рдХреЗ рд▓рд┐рдП рд╕реНрдпреВрдбреЛрдХреЛрдб NodeKey рд╡реИрд╕рд╛ рд╣реА рджрд┐рдЦрддрд╛ рд╣реИ.

int compare(MDB_val * const a, MDB_val * const b) {тАЛ
    NodeKey * const aKey = (NodeKey * const)a->mv_data;тАЛ
    NodeKey * const bKey = (NodeKey * const)b->mv_data;тАЛ
    return // ...
}тАЛ

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

рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛

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

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдореВрд▓реНрдп рднрд╛рдЧ (рдореВрд▓реНрдп) рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдирд╣реАрдВ рд╣реИред рдмрд╛рдЗрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗрд╡рд▓ рддрднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред рдЪреВрдВрдХрд┐ рдРрд╕рд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╣реА рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЧрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдЗрддрдиреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╣рдо рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рддрдХ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рд╣реБрдИ рд╣реИрдВ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ NSKeyedArchiver.

NSData *data = serialize(object);тАЛ
MDB_val value = {тАЛ
    .mv_size = data.length,тАЛ
    .mv_data = (void *)data.bytesтАЛ
};

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

typedef struct NodeValue {тАЛ
    EntityId localId;тАЛ
    EntityType type;тАЛ
    union {тАЛ
        FileInfo file;тАЛ
        DirectoryInfo directory;тАЛ
    } info;тАЛ
    uint8_t nameLength;тАЛ
    uint8_t nameBuffer[256];тАЛ
} NodeValue;тАЛ

рд░рд┐рдХрд╛рд░реНрдб рдЬреЛрдбрд╝рдирд╛ рдПрд╡рдВ рдЕрджреНрдпрддрди рдХрд░рдирд╛

рдХреНрд░рдордмрджреНрдз рдХреБрдВрдЬреА рдФрд░ рдореВрд▓реНрдп рдХреЛ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ mdb_put.

// key ╨╕ value ╨╕╨╝╨╡╤О╤В ╤В╨╕╨┐ MDB_valтАЛ
mdb_put(..., &key, &value, MDB_NOOVERWRITE);

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

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдкрдврд╝рдирд╛

рдПрд▓рдПрдордбреАрдмреА рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ mdb_get. рдпрджрд┐ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реА рдХреЛ рдкрд╣рд▓реЗ рдбрдВрдк рдХреА рдЧрдИ рд╕рдВрд░рдЪрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред

NodeValue * const readNode(..., NodeKey * const key) {тАЛ
    MDB_val rawKey = serialize(key);тАЛ
    MDB_val rawValue;тАЛ
    mdb_get(..., &rawKey, &rawValue);тАЛ
    return (NodeValue * const)rawValue.mv_data;тАЛ
}

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

  1. рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП, рдореВрд▓реНрдп рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕реВрдЪрдХ рдХреЛ рдХреЗрд╡рд▓ рд▓реЗрдирджреЗрди рдмрдВрдж рд╣реЛрдиреЗ рддрдХ рд╡реИрдз рд░рд╣рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмреА-рдЯреНрд░реА рдкреГрд╖реНрда рдЬрд┐рд╕ рдкрд░ рдПрдХ рд╡рд╕реНрддреБ рд╕реНрдерд┐рдд рд╣реИ, рдХреЙрдкреА-рдСрди-рд░рд╛рдЗрдЯ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рддрдм рддрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдЙрдиреНрд╣реЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд▓реЗрдирджреЗрди рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣реАрдВ, рдЬреИрд╕реЗ рд╣реА рдЙрдирд╕реЗ рдЬреБрдбрд╝рд╛ рдЖрдЦрд┐рд░реА рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдкреЗрдЬреЛрдВ рдХреЛ рдирдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рджреЛрдмрд╛рд░рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕ рд▓реЗрди-рджреЗрди рдХреЛ рдЬреАрд╡рд┐рдд рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕рдиреЗ рдЙрдиреНрд╣реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЕрднреА рднреА рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  2. тАЛрд░реАрдбрд░рд╛рдЗрдЯ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдп рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╕реВрдЪрдХ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рд╕рдВрд╢реЛрдзрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдбреЗрдЯрд╛ рд▓рд┐рдЦрдирд╛ рдпрд╛ рд╣рдЯрд╛рдирд╛) рддрдХ рдорд╛рдиреНрдп рд╣реЛрдЧрд╛ред
  3. рдпрджреНрдпрдкрд┐ рд╕рдВрд░рдЪрдирд╛ NodeValue рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЫрдВрдЯрдиреА рдХреА рдЧрдИ рд╣реИ (рдЙрдкрдзрд╛рд░рд╛ "рдмрд╛рд╣рд░реА рддреБрд▓рдирд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдСрд░реНрдбрд░ рдХрд░рдирд╛" рджреЗрдЦреЗрдВ), рдЖрдк рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреЗ рдлрд╝реАрд▓реНрдб рддрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рди рдХрд░реЗрдВ!
  4. рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╕реВрдЪрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╣реА рдХрд┐рдпреЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП mdb_put. рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЗрд╕реЗ рдХрд┐рддрдирд╛ рднреА рдХрдард┐рди рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВ, рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рд╕реНрдерд┐рдд рд╣реИ, рд░реАрдбрдУрдирд▓реА рдореЛрдб рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  5. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЧреНрд░рд╣рдг рдЖрдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрддрд╛ рд╕реНрдерд╛рди рдкрд░ рд░реАрдореИрдк рдХрд░реЗрдВ mdb_env_set_map_size рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рднреА рд▓реЗрдирджреЗрди рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдорд╛рдиреНрдп рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рд╡рд╕реНрддреБрдУрдВ рдХреА рдУрд░ рд╕рдВрдХреЗрдд рдХрд░рддрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрддрдиреА рдХрдкрдЯрдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рд░ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рдмреИрдарддрд╛ рд╣реИред рдмреА-рдЯреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдЖрд░реЗрдЦ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдкреГрд╖реНрда рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИрдВред рдЗрд╕рд╕реЗ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрд░рдордмрджреНрдз рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрдлрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдкрддрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдордирдорд╛рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕реВрдЪрдХ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ MDB_val рдФрд░ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рддрдХ рдХрдо рд╣реЛ рдЬрд╛рдиреЗ рдкрд░, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдХреБрдЫ рдЪрд┐рдкреНрд╕ рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (рдЖрдИрдУрдПрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдЖрд░рдПрдорд╡реА7 рд╣реИ) рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХрд╛ рдкрддрд╛ рдорд╢реАрди рд╢рдмреНрдж рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдЧреБрдгрдХ рд╣реЛ рдпрд╛, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдмрд┐рдЯ рдЖрдХрд╛рд░ ( Armv7 рдХреЗ рд▓рд┐рдП рдпрд╣ 32 рдмрд┐рдЯ рд╣реИ)ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рдСрдкрд░реЗрд╢рди рдЬреИрд╕рд╛ *(int *foo)0x800002 рдЙрди рдкрд░ рднрд╛рдЧрдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдФрд░ рдлреИрд╕рд▓реЗ рдХреЗ рд╕рд╛рде рдлрд╛рдВрд╕реА рдХреА рд╕рдЬрд╛ рд╣реЛрддреА рд╣реИ EXC_ARM_DA_ALIGN. рдРрд╕реЗ рджреБрдЦрдж рднрд╛рдЧреНрдп рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред

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

int compare(MDB_val * const a, MDB_val * const b) {
    NodeKey aKey, bKey;
    memcpy(&aKey, a->mv_data, a->mv_size);
    memcpy(&bKey, b->mv_data, b->mv_size);
    return // ...
}

рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╡рд┐рд╢реЗрд╖рддрд╛-рд╕рдВрд░реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ aligned(1). рдПрдЖрд░рдПрдо рдкрд░ рдЖрдк рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдкреИрдХреНрдб рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рдШреЗрд░реЗ рдЧрдП рд╕реНрдерд╛рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╡рд┐рдзрд┐ рдореБрдЭреЗ рдмреЗрд╣рддрд░ рд▓рдЧрддреА рд╣реИ ╨┐╤А╨╕╨▓╨╛╨┤╨╕╤В рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рд╕рдВрдЪрд╛рд▓рди рдХреА рд▓рд╛рдЧрдд рдореЗрдВ рд╡реГрджреНрдзрд┐ред

typedef struct __attribute__((packed)) NodeKey {
    uint8_t parentId;
    uint8_t type;
    uint8_t nameLength;
    uint8_t nameBuffer[256];
} NodeKey;

рд╢реНрд░реЗрдгреА рдкреНрд░рд╢реНрди

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

рдХрд┐рд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрди рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдЪрд╛рдЗрд▓реНрдб рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдкрд┐рдЫрд▓реЗ рдЙрдкрдЦрдВрдбреЛрдВ рдореЗрдВ рд╣рдордиреЗ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдХреНрд░рдордмрджреНрдз рдХреАрдВ NodeKey рдЬреИрд╕реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░реНрд╕рд░ рдХреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреА рдКрдкрд░реА рд╕реАрдорд╛ рдкрд░ рд░рдЦрдирд╛ рдФрд░ рдлрд┐рд░ рдирд┐рдЪрд▓реА рд╕реАрдорд╛ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд░рдирд╛ рд╣реИред

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдКрдкрд░реА рд╕реАрдорд╛ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЦреЛрдЬ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд░реНрд╕рд░ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддрдм рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХреБрдВрдЬреА рдЙрд╕рдХреЗ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдИ рди рджреЗред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ 2 рд╕реНрдкрд╖реНрдЯ рдиреБрдХрд╕рд╛рди рд╣реИрдВ:

  1. рд░реИрдЦрд┐рдХ рдЦреЛрдЬ рдЬрдЯрд┐рд▓рддрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЬреНрдЮрд╛рдд рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмреА-рдкреЗрдбрд╝ рдореЗрдВ рдЗрд╕реЗ рд▓рдШреБрдЧрдгрдХреАрдп рд╕рдордп рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредтАЛ
  2. рд╡реНрдпрд░реНрде рдореЗрдВ, рдорд╛рдВрдЧреЗ рдЬрд╛ рд░рд╣реЗ рдкреЗрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рднреА рдкреЗрдЬ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореБрдЦреНрдп рдореЗрдореЛрд░реА рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдмреЗрд╣рдж рдорд╣рдВрдЧрд╛ рд╣реИред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрд▓рдПрдордбреАрдмреА рдПрдкреАрдЖрдИ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рдХрд░реНрд╕рд░ рдХреЛ рд╕реНрдерд┐рддрд┐ рджреЗрдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрддрд░рд╛рд▓ рдХреА рдКрдкрд░реА рд╕реАрдорд╛ рдкрд░ рд╕реНрдерд┐рдд рдХреБрдВрдЬреА рд╕реЗ рдХрдо рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдЪрд┐рддреНрд░ рдореЗрдВ рд╕реВрдЪреА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдо рдПрдХ рдХреБрдВрдЬреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб parentId 2 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛, рдФрд░ рдмрд╛рдХреА рд╕рднреА рд╢реВрдиреНрдп рд╕реЗ рднрд░реЗ рд╣реБрдП рд╣реИрдВред рдРрд╕реА рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рдХреБрдВрдЬреА рдлрд╝рдВрдХреНрд╢рди рдЗрдирдкреБрдЯ рдХреЛ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИ mdb_cursor_get рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рдВрдХреЗрдд MDB_SET_RANGEред

NodeKey upperBoundSearchKey = {тАЛ
    .parentId = 2,тАЛ
    .type = 0,тАЛ
    .nameLength = 0тАЛ
};тАЛ
MDB_val value, key = serialize(upperBoundSearchKey);тАЛ
MDB_cursor *cursor;тАЛ
mdb_cursor_open(..., &cursor);тАЛ
mdb_cursor_get(cursor, &key, &value, MDB_SET_RANGE);

рдпрджрд┐ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреА рдКрдкрд░реА рд╕реАрдорд╛ рдорд┐рд▓ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рдЙрд╕ рдкрд░ рддрдм рддрдХ рджреЛрд╣рд░рд╛рддреЗ рд░рд╣рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╛ рддреЛ рд╣рдо рдирд╣реАрдВ рдорд┐рд▓ рдЬрд╛рддреЗ рдпрд╛ рдХреБрдВрдЬреА рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓ рдЬрд╛рддреА parentId, рдпрд╛ рдЪрд╛рдмрд┐рдпрд╛рдБ рдмрд┐рд▓реНрдХреБрд▓ рдЦрддреНрдо рдирд╣реАрдВ рд╣реЛрдВрдЧреАредтАЛ

do {тАЛ
    rc = mdb_cursor_get(cursor, &key, &value, MDB_NEXT);тАЛ
    // processing...тАЛ
} while (MDB_NOTFOUND != rc && // check end of tableтАЛ
         IsTargetKey(key));    // check end of keys groupтАЛтАЛ

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

4.3. рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреА рдореЙрдбрд▓рд┐рдВрдЧ

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

╬г╧Д╧Б╬▒╧Д╧М╧В Assault - ╬а╬▒╬п╬╛╧Д╬╡ Funny Games

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

рд╕реВрдЪрдХрд╛рдВрдХ рддрд╛рд▓рд┐рдХрд╛рдПрдБ

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рдПрдХ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрди рд╕рднреА рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрдХрдиреАрдХреА рдлрд╝реАрд▓реНрдб TableId рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдмрдирд╛рдХрд░, рд╣рдо рдкрд╣рд▓реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рднреАрддрд░ рдЕрдкрдиреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╕рдореВрд╣реАрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗредтАЛ

рд╕реВрдЪрдХрд╛рдВрдХ рдХреБрдВрдЬреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИред рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рдореВрд▓реНрдп рднрд╛рдЧ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╕реАрдзрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рд╕реЗ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ:

  1. рд▓реА рдЧрдИ рдЬрдЧрд╣ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛рдлреА рд╕рдореГрджреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  2. рдкреНрд░рджрд░реНрд╢рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЪреВрдВрдХрд┐ рдХрд┐рд╕реА рдиреЛрдб рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рджреЛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
  3. рдХреЛрдб рд╕рдорд░реНрдерди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдбреЗрдЯрд╛ рдЕрд╕рдВрдЧрддрддрд╛ рдХрд╛ рдПрдХ рдорд╛рдпрд╛рд╡реА рдмрдЧ рдорд┐рд▓реЗрдЧрд╛ред

рдЖрдЧреЗ рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрди рдХрдорд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛

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

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдиреНрдп рдкреИрдЯрд░реНрди рд╣реИ "рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреБрдВрдЬреА". рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдХреБрдВрдЬреА рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рдЬрд┐рдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдВрдЬреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред Mail.ru рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдИрдУрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдореИрдВ рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ, рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛

рдХреНрд▓рд╛рдЙрдб рдореЛрдмрд╛рдЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдПрдХ рдкреЗрдЬ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЙрди рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдкреНрд░рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА (рдХрд┐рд╕реЗ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╣реИ, рдХрд┐рди рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде, рдЖрджрд┐) рдореМрдЬреВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдореВрд▓реНрдп рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдмреЛрдЭ рдбрд╛рд▓рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдСрдлрд╝рд▓рд╛рдЗрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рднреА рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рдПред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ, рдЗрд╕рдХреА рдХреБрдВрдЬреА "рдкреА" рд╕реЗ рдкрд╣рд▓реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ, рдФрд░ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ "рдкреНрд░реЙрдкрдиреЗрдо" рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп "рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЬрд╛рдирдХрд╛рд░реА" рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

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

рд╣рдо рдПрд▓рдПрдордбреАрдмреА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝реНрд░реАрдЬрд╝ рд╣реЛрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ 30% рдХреА рдХрдореА рдЖрдИред

рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдПрд▓рдПрдордбреАрдмреА рдХреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЧрд░реАрдмреА

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

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ