рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рд╕реНрддреГрдд рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╡рд┐рддрд░рд┐рдд рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ B + рдЯреНрд░реА рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдЪ-рдкреЗрдбрд╝реЛрдВ рдкрд░ рдмреА-рдкреЗрдбрд╝реЛрдВ ( рдПрдХ , рджреЛ ) рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд▓реЗрдЦ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЙрдирдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд╕реЗ рдЬреАрд╡рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реБрдЪрд┐ рд╣реИред
рд▓реЗрдЦ рдХреЛ рдЖрдЧреЗ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рдореИрдХреНрд╕рд┐рдо рдмреЗрдмреЗрдВрдХреЛ рдХрд╛ рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрднреА рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдмреА-рдЯреНрд░реА рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЬрд╛рд╡рд╛ рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдпрд╛ рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдореИрдВ рдпрд╛ рддреЛ рд╡рд┐рд╡рд░рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛ рдпрд╛ рдЗрд╕реЗ рдмрд┐рдЧрд╛рдбрд╝рдиреЗ рдХреЗ рддрд╣рдд рдЫрд┐рдкрд╛рдКрдВрдЧрд╛ред
рдЬрдм рдЖрдк рдкреНрд░рдЬреНрд╡рд▓рд┐рдд рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рд╣реИ - рдпрджрд┐ рдЖрдк рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдХреЛ рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдХрд╛ рдкреНрд░рдореБрдЦ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдХреЛрдб рд╕реЗ рдХреБрдЫ рдЧрд▓рдд рд╕рдордЭ рд╕рдХрддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ" рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛, рдЬрд┐рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╡рд╛рдХреНрдп рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпреЛрдВ рдЕрдкрд╛рдЪреЗ рдореЗрдВ рдмреА + рдкреЗрдбрд╝ рдкреНрд░рдЬреНрд╡рд▓рд┐рдд
рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдПрдХ рдЗрди-рдореЗрдореЛрд░реА рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд╕реНрдХрд░рдг 2.1 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕рдореЗрдВ рдПрдХ рдирд┐рд░рдВрддрд░ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рд╣реИ - рдбрд┐рд╕реНрдХ рдХреЛ рдбреЗрдЯрд╛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди ( рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ) ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рд╕реНрдореГрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рджреВрд╕рд░реЗ рдХреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЪреБрдирд╛ред
рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреА + рдкреЗрдбрд╝ рдмреА-рдкреЗрдбрд╝ рдХрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓рди рд╣реИ, рдЬрд╣рд╛рдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдореЗрдВ, рдЕрдзрд┐рдХ рдХреБрдВрдЬреА рдПрдХ рдиреЛрдб рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдХреА рдбрд┐рдЧреНрд░реА рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреНрд▓рд╛рд╕рд┐рдХ рдмреА-рдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред
рдмреА * рдФрд░ рдмреА + * - рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдШрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЦрд░рд╛рдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд░реИрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рджрд░реНрд╢рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП , рдПрдХ рдПрд▓рдПрд╕рдПрдо рдкреЗрдбрд╝ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рддреЗрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдкрдврд╝рдиреЗ рдореЗрдВ рдзреАрдорд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрдврд╝рдиреЗ рдореЗрдВ рдиреБрдХрд╕рд╛рди рд▓реЗрдЦрди рдореЗрдВ рд▓рд╛рдн рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдмреА + рдкреЗрдбрд╝ рднреА рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛ред
рд╡рд╣рд╛рдБ рднреА рдЕрдЬреАрдм рднрдЧреНрди рдкреЗрдбрд╝ рд╣реИрдВ , рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рд╡реЗ рдХреЗрд╡рд▓ рдЯреЛрдХреБрдмреАрдбреА рдореЗрдВ рдкреЗрдЯреЗрдВрдЯ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдореЗрдВ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рд▓реЗрд╡рд▓рдмреИрдВрдХ рдХреА рддрд░рд╣ рд░реЗрдбреАрдореЗрдб рдбрд┐рд╕реНрдХ рдмреИрдХрдПрдВрдб рд▓реЗрдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛? рдПрдХ рдЖрдВрд╢рд┐рдХ рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреАрдбреАрдПрд╕ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рднрдВрдбрд╛рд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдмрдбрд╝реЗ рд╕реЗрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЧреНрд░рд┐рдбрдЧреИрди рдиреЗ рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдУрдкрди-рд╕реЛрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдиреЗ рдХрдВрдкрдиреА рдХрд╛ рдирд╛рдо рдмреЛрд░ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рдирд╛рдо Grid
рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧ Ignite
рд╕рд╛рдеред рдЗрд╕рд▓рд┐рдП GridCursor
, рд▓реЗрдХрд┐рди IgniteTree
ред рдпрд╣рд╛рдВ рдХреЛрдИ рдФрд░ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИред
рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдХреЛрдб рдЬрд╛рд╡рд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдкреИрдЯрд░реНрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдПрдХ рдирд╣реАрдВред IgniteTree
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдФрд░ рдиреГрддреНрдп рд╢реБрд░реВ рдХрд░реЗрдВред рдореИрдВ javadoc рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рджреЗрддрд╛ рд╣реВрдВ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред
public interface IgniteTree<L, T> { public T put(T val) throws IgniteCheckedException; public void invoke(L key, Object x, InvokeClosure<T> c) throws IgniteCheckedException; public T findOne(L key) throws IgniteCheckedException; public GridCursor<T> find(L lower, L upper) throws IgniteCheckedException; public GridCursor<T> find(L lower, L upper, Object x) throws IgniteCheckedException; public T findFirst() throws IgniteCheckedException; public T findLast() throws IgniteCheckedException; public T remove(L key) throws IgniteCheckedException; public long size() throws IgniteCheckedException; interface InvokeClosure<T> { void call(@Nullable T row) throws IgniteCheckedException; T newRow(); OperationType operationType(); } enum OperationType { NOOP, REMOVE, PUT } }
IgniteTree
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рдПрдХ рдорд╛рдирдХ рд╕реЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реАрдорд╛ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдмреБрдирдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдмреЛрдирд╕ рдПрдХ рдордирдорд╛рдирд╛ рд░рд┐рдХреЙрд░реНрдб рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ - invoke
ред
put
рдСрдкрд░реЗрд╢рди рдмрд┐рдирд╛ рдЪрд╛рдмреА рдХреЗ рдХреЗрд╡рд▓ T
рдХрд╛ рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП IgniteTree
рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм BPlusTree
рд╣реЗрдбрд░ рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реИред
public abstract class BPlusTree<L, T extends L> extends DataStructure implements IgniteTree<L, T>
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореВрд▓реНрдп рдХреБрдВрдЬреА рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдкреБрдЯ рдСрдкрд░реЗрд╢рди рдореЗрдВ, рдореВрд▓реНрдп рд╕реЗ рдХреБрдВрдЬреА рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдкреЗрдбрд╝ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред
рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рдореВрд▓реНрдп рд╕реЗ рд╕реНрдерд┐рд░ рдХрдЪрд░рд╛ рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рдирдХреНрд╢реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмреА + рдкреЗрдбрд╝ рдореЗрдВ, рдХреЗрд╡рд▓ рдЪрд╛рдмрд┐рдпрд╛рдБ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдпрджрд┐ рдореВрд▓реНрдп рднреА рдХреБрдВрдЬреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдФрд░ рдЕрдЧрд░ рдкреЗрдбрд╝ рдПрдХ рд╕реЗрдЯ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ рдХрд┐ рдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрдЪрд░рд╛ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдЪрд╛рдмрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреАред

рдЕрдм рддрддреНрд╡ рдЦреЛрдЬ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред
private void doFind(Get g) throws IgniteCheckedException { for (;;) {
рдмреА-рдЯреНрд░реА рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЖрдзрд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рд╛ рд╣реИ: рд╡реЗ рдкреБрди: рдкреЗрдбрд╝ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрддреНрддреА рддрдХ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ: рдпрджрд┐ рдореВрд▓реНрдп рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╡реЗ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ null
ред рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреА рдЧрдИ рдереА, рд╡реИрд╕реЗ рднреА, рдмреА-рдкреЗрдбрд╝ рдЧрд╣рд░реЗ рдирд╣реАрдВ рд╣реИрдВред

рдореИрдВ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕реНрдерд╛рдкрдирд╛ рдереА: рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ ( рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрдИ рдкреВрдВрдЫ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рд╣реИ , рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ)ред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреА-рдкреЗрдбрд╝ рдХреА рдКрдВрдЪрд╛рдИ рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдСрд░реНрдбрд░ рдмреНрд▓реЙрдХ рдХрд╛ рдЖрдХрд╛рд░ , рдФрд░ рдЖрджреЗрд╢ рдХреЗ рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдКрдВрдЪрд╛рдИ рд╣реЛрдЧреА ред
рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдХреЛ рдХреЙрдиреНрд╕рд░реНрдЯ рдкрд╕рдВрдж рд╣реИ ред рдЗрд╕рд▓рд┐рдП, рдкреЗрдбрд╝ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╕рдВрд╢реЛрдзрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рдордп, рдПрдХ рдкреГрд╖реНрда рдЕрд╡рд░реБрджреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдзрд╛рдЧрд╛ рдмрд╛рдХреА рдкреЗрдбрд╝ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рджреВрд╕рд░реЗ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрдбрд╝ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрд░реНрде рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рд╕реНрдХ рдзреАрдореА рд╣реИ рдФрд░ рдПрдХ рдзрд╛рдЧрд╛ рд╢рд╛рдВрддрд┐ рд╕реЗ рд╕рднреА I / O рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рд╕реЗ рд▓реЛрдб рдиреЛрдб рдореЗрдВ рдЦреЛрдЬ рдХреА рдереЛрдбрд╝реА рд▓рд╛рдЧрдд рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕ рджреМрд░рд╛рди рдЖрдк рдбрд┐рд╕реНрдХ рдХреЛ рджреВрд╕рд░реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рд░-рдмрд╛рд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рддрдм рдпрд╣ рдореБрдЭ рдкрд░ рд╣рд╛рд╡реА рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдиреЛрдбреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрди рдХреЗ рдмрд╛рдж рддреБрд░рдВрдд рдбрд┐рд╕реНрдХ рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдореЗрдВ рд▓рдЯрдХрд╛ рд░рд╣реЗ рдереЗ, рдлрд┐рд░ рддреБрд░рдВрдд рдХрдИ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ рдзрдиреНрдпрд╡рд╛рдж рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд▓реЙрдЧ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реЛрдЧрд╛ред
рдЕрдм рдПрдХ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рджреЗрдЦрддреЗ рд╣реИрдВред
private T doPut(T row, boolean needOld) throws IgniteCheckedException { checkDestroyed(); Put p = new Put(row, needOld); try { for (;;) {
рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдб replace
рдФрд░ insert
ред remove
рдХреЛрдб рдХреЛ рдЕрдм рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреБрдирд┐рдпрд╛рджреА рддрдВрддреНрд░ рдпрд╣ рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдкреЗрдбрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдЪрд▓рдиреЗ рдХрд╛ рдмрд╛рд░-рдмрд╛рд░ рдкреНрд░рдпрд╛рд╕: Get
, Put
рдпрд╛ Remove
ред
рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдСрдкрд░реЗрд╢рди рд░рд┐рдХреЙрд░реНрдб рдХреА рдПрдХ рдкреНрд░рддрд┐ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдЗрд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП NOOP
, REMOVE
рд▓рд┐рдП REMOVE рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП PUT
, рдФрд░ рдлрд┐рд░ рд╕рдВрдмрдВрдзрд┐рдд Put
рдпрд╛ Remove
рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреЗрдбрд╝ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдХреЗ рдЙрдкрдпреЛрдЧ
рдиреАрдЪреЗ рдореИрдВ рджреЛ BPlusTree
рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ BPlusTree
: CacheDataTree
рдФрд░ PendingEntriesTree
ред рдУрд╡рд░рдмреЛрд░реНрдб рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ - рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрднреА рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реВрдВред
рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреВрдВрдЧрд╛ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рддрд░рд┐рдд рдирдХреНрд╢реЗ рдореЗрдВ IgniteCache
рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ IgniteCache
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ рдПрдХ рдХреИрд╢ред
CacheDataTree
CacheDataTree
рдбрд┐рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдХрдИ IgniteCache
рдХреА рдореИрдкрд┐рдВрдЧ рд╣реИред рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдмрд╣реБ-рд╕реНрддрд░реАрдп рд╣реИ: рдкрд╣рд▓реЗ рдХреИрд╢ рдореЗрдВ рд╕рдореВрд╣ рдХреБрдВрдЬреА рдореЗрдВ рдХреИрд╢ рдЖрдИрдбреА рдФрд░ рдлрд┐рд░ рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВред
CacheDataTree
рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЪреВрдВрдХрд┐ H2Tree extends BPlusTree
рдХреЗ рд╡рд╛рд░рд┐рд╕ рдореЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ H2Tree extends BPlusTree
, рдЗрд╕рд▓рд┐рдП H2Tree extends BPlusTree
, рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдЫрдВрдЯрд╛рдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ: рдХреЛрдИ рднреА put
рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рд╕рдВрдЪрд╛рд▓рди get
рдХрд░рддрд╛ рд╣реИред рдмрд░рд╛рдмрд░реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдЕрдзрд┐рдХ рддреЗрдЬ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдПрдХ рд╕рдорд╛рди рд╣реИрд╢ рдкреЗрдбрд╝ рдХреЛ рдЕрдзрд┐рдХ рдШрдиреА рд░реВрдк рд╕реЗ рднрд░ рджреЗрдЧрд╛ред
рдкреЗрдбрд╝ рд╕рдВрддреБрд▓рди рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдПрдХ рд╕реВрдЪреА рдореЗрдВ рди рдШрдЯреЗрдВред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЦреЛрдЬ рдЯреНрд░реА рдореЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрддреБрд▓рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдмреА-рдкреЗрдбрд╝ рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рд╣реИрд╢ рдорд┐рдХреНрд╕ рдХреАрдЬрд╝ рднреА рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИрдВ, рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛ рдЫрд╛рдБрдЯрдиреЗ рд╕реЗ рд╕рдВрддреБрд▓рди рдХреА рдЖрд╡реГрддреНрддрд┐ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЦреЛрдЬ рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЕрдЬреАрдм рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рд╡рд┐рдХрд╛рд╕ рд╕реЗ рд╣реИрд╢ рдПрд░реЗ рдореИрдкреНрдб рдЯреНрд░рд╛рдИ рд╣реЛрдЧрд╛ ред
PendingEntriesTree
PendingEntriesTree
рд╕рдордп рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдмрд╣реБ-рд╕реНрддрд░реАрдп рд╣реИ: рдкрд╣рд▓реЗ рдХреИрд╢ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣ рдХреБрдВрдЬреА рдореЗрдВ рдПрдХ рдХреИрд╢ рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рдЕрдЧрд▓рд╛ рддреБрд▓рдирд╛ рдХрд╛ рдПрдХ рдФрд░ рджреМрд░ рд╣реИ - рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рддрдХрдиреАрдХреА, рддрддреНрд╡реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЫрдВрдЯрд╛рдИ рд╕реЗ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреЗрдбрд╝ рдкреНрд░реАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдПрдВрдЯреНрд░реА рдХреАрдЬ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рддрд╛ рд╣реИред
рд╕рдордЭреЗрдВ рдХрд┐ рдпрд╣ рдЕрд▓рдЧ рд╕рд╛рд╣рд╕рд┐рдХ рдХрд╛рдо рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИред
рд╕рд╛рд╣рд╕рд┐рдХ рдХрд╛рд░реНрдпIgniteCacheOffheapManagerImpl.expire()
рдХрд░реНрд╕рд░ рд▓реЗ рдЬрд╛рдПрдВ рдФрд░ PendingEntriesTree
рд╕реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ PendingEntriesTree
ред CacheDataTree
рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдХреНрд▓реЛрдЬрд░ c
рдореЗрдВ рд╣рдЯрд╛ рджреА CacheDataTree
рд╣реИрдВ, рдЬреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред
@Override public boolean expire( GridCacheContext cctx, IgniteInClosure2X<GridCacheEntryEx, GridCacheVersion> c, int amount )
Apache Ignite рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ Java 7 рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓реЛрдЬрд░ рдПрдХ рдЕрдирд╛рдо рд╡рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
private final IgniteInClosure2X<GridCacheEntryEx, GridCacheVersion> expireC = new IgniteInClosure2X<GridCacheEntryEx, GridCacheVersion>() { @Override public void applyx(GridCacheEntryEx entry, GridCacheVersion obsoleteVer) { boolean touch = !entry.isNear(); while (true) { try { if (log.isTraceEnabled()) log.trace("Trying to remove expired entry from cache: " + entry); if (entry.onTtlExpired(obsoleteVer)) touch = false; break; } catch (GridCacheEntryRemovedException ignore) { entry = entry.context().cache().entryEx(entry.key()); touch = true; } } if (touch) entry.context().evicts().touch(entry, null); } };
рд╣рдо рдЬреЛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ GridCacheMapEntry.onTtlExpired()
рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдХрд╝реАрдорддреА рд░реЗрдЦрд╛ finally
рдмреНрд▓реЙрдХ рдореЗрдВ рд╣реИред
cctx.cache().removeEntry(this);
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╡рд░рдг
Offheap рдореЗрдВ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдСрдлрд╢реЗрдпрд░ рдПрдХ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рднрд╛рд╖рд╛ рдореЗрдВ рдореИрдиреБрдЕрд▓ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рддрдХрдиреАрдХ рд╣реИред
рдпрд╣ рдПрдХ рдорд┐рдердХ рд╣реИ рдХрд┐ рдХрдЪрд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рдХрд╛рд░рдг рд╕рдм рдХреБрдЫ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдХрд▓реЗрдХреНрдЯрд░реЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рджрдпрдиреАрдп рдкреНрд░рддрд┐рд╢рдд рд╣реЛрддрд╛ рд╣реИ ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрдбрд╝реЗ рдвреЗрд░ рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд▓реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реАрдПрдордПрд╕ рдФрд░ рдЬреА 1), рдФрд░ рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рджрд░реНрдЬрдиреЛрдВ рдХреЛрд░ рд╣реИрдВ ред рдмреЗрд╢рдХ, рдХрд▓реЗрдХреНрдЯрд░ рдЖрд╡реЗрджрди рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдард╣рд░рд╛рд╡ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╣рдиреАрдп рд╣реИред
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реЛрдЧреА рдпрд╣ рдПрдХ рдмрдбрд╝реЗ рдвреЗрд░ рдкрд░ рдЙрддреНрдкрддреНрддрд┐ рд╕рдВрдмрдВрдзреА рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реИред
рдкреАрдврд╝реА рдХреА рдкрд░рд┐рдХрд▓реНрдкрдирд╛рдЬреАрд╕реА рдЕрдиреБрдХреВрд▓рди рдЬреЗрдиреЗрд░рд┐рдХ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ: рдордЬрдмреВрдд рдФрд░ рдХрдордЬреЛрд░ред
рдХрдордЬреЛрд░ рдкреАрдврд╝реА рдХреА рдкрд░рд┐рдХрд▓реНрдкрдирд╛: рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд╕реНрддреБрдПрдВ рдпреБрд╡рд╛ рдорд░ рдЬрд╛рддреА рд╣реИрдВред
рдкреАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдордЬрдмреВрдд рдкрд░рд┐рдХрд▓реНрдкрдирд╛: рдкреБрд░рд╛рдиреА рд╡рд╕реНрддреБ рдЬрд┐рддрдиреА рдкреБрд░рд╛рдиреА рд╣реЛрдЧреА, рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдЧреАред
рдПрдХ рдордЬрдмреВрдд рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрдордЬреЛрд░ рд╡реНрдпрдХреНрддрд┐, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЬреАрд╕реА рдХреЛ рдХрдордЬреЛрд░ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдПрд▓реЗрдХреНрд╕реА рд╢рд┐рдкрд┐рд▓реЗрд╡ рдХреА рдЬрд╛рд╡рд╛ рдореЗрдВ рдирдИ рдЬреАрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВ: рдПрдХ рдФрд░ рджреЛ ред
рдФрд░ рдпрд╣рд╛рдВ рдпрд╣ рдРрд╕реА рдмрд╛рдд рд╣реИ рдХрд┐ рдкреАрдбреАрдПрд╕ рдХреЗ рдЖрдЧрдорди рд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдПрдХ рдбрд┐рд╕реНрдХ рдбреЗрдЯрд╛рдмреЗрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдбреЛрдк ) рдХреЗ рдмреАрдЪ рдХреИрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, IgniteCache
рдореЗрдВ рдореИрдкреНрд╕ рдХреЛ рдЗрдЧреНрдирд╛рдЗрдЯреЗрдЪреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХреНрд╕рдЯреНрд░реВрдЬрд╝рди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдХреИрд╢ рд╕рд┐рд░реНрдл рдкреАрдврд╝реАрдЧрдд рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВ - рдЙрдирдореЗрдВ, рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдирд╖реНрдЯ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдлрд╢ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдЕрдзрд┐рдХ рдмреЛрдирд╕:
- Offheap,
Integer.MAX_VALUE
рддрддреНрд╡реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред - рдпрджрд┐ рдЖрдк 32 рдЬреАрдмреА рд╕реЗ рдХрдо рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд▓рд┐рдВрдХ 4 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рд╡рдЬрди рдХрд░реЗрдВрдЧреЗ , рдЬреЛ рдХреБрдЫ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдмрдЪрд╛рддрд╛ рд╣реИред
- рдЪреВрдВрдХрд┐ рдХрд▓реЗрдХреНрдЯрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдЧреНрд░рд╛рдл рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдвреЗрд░ рдХреЗ рд╕рдорд╛рдиреБрдкрд╛рддреА рд╣реЛрддреА рд╣реИред рдХрд▓реЗрдХреНрдЯрд░ рдПрдХ рд╕реАрдкреАрдпреВ рднреА рдЦрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдбреЗрдЯрд╛ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
- рдмрд╣реБрдд рдмрдбрд╝реЗ рдвреЗрд░ рдкрд░, рднрд▓реЗ рд╣реА рдкреАрдврд╝реАрдЧрдд рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдкреВрд░реНрдг рдореВрд▓реНрдп рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдкреБрд░рд╛рдиреА рд╡рд╕реНрддреБрдПрдВ рд╣реЛрдВрдЧреА рдЬреЛ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░реЗрдЧреАред
рдЪреВрдВрдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рд╕реНрдХ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реАрдзреЗ unsafe
рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ unsafe
, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ I / O рдмрдлрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЧреЗ рд▓реЙрдЧ рд▓реЙрдЧ рдХрд░реЗрдВ
рд▓рд┐рдЦреЗрдВ рдЖрдЧреЗ рд▓реЙрдЧ рдПрдХ рд░реИрдЦрд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рд▓реЙрдЧ рд╣реИ, рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЗрдбрд╝ рдХреЗ рд╡рд┐рдкрд░реАрдд рдПрдХ рд╕реНрдерд┐рд░ рд▓рд╛рдЧрдд рд╣реЛрддреА рд╣реИред рдкреЗрдбрд╝ рдХреЛ рдХрдо рдмрд╛рд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдбреЗрдЯрд╛ рдЧрд┐рд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЕрдВрддрд┐рдо рд╕рд╣реЗрдЬреЗ рдЧрдП рд░рд╛рдЬреНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд▓реЙрдЧ рд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдкрд░рд┐рдгрд╛рдо рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ IgniteWriteAheadLogManager
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ - рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди рд╣реИред
рдиреЛрдб рдмрд╛рдИрдкрд╛рд╕
рдЪреВрдВрдХрд┐ рдмреА-рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рдиреЛрдбреНрд╕ рдЫреЛрдЯреЗ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдмрд╛рдЗрдирд░реА рдЦреЛрдЬ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдИрдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, BPlusTree.GetPageHandler
рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬ рдХрд╛ BPlusTree.GetPageHandler
, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВред
рдмрд╛рдЗрдирд░реА рдЦреЛрдЬ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди private int findInsertionPoint(int lvl, BPlusIO<L> io, long buf, int low, int cnt, L row, int shift) throws IgniteCheckedException { assert row != null; int high = cnt - 1; while (low <= high) { int mid = (low + high) >>> 1; int cmp = compare(lvl, io, buf, mid, row); if (cmp == 0) cmp = -shift;
BPlusTree
рд╡рд┐рднрд┐рдиреНрди рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд▓рд┐рдП compare
рд╡рд┐рдзрд┐ рднрд┐рдиреНрди рд╣реИред рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕реВрдЪрдХрд╛рдВрдХ рдПрдХ рддрддреНрд╡ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ Collections.binarySearch
рд╡рд╣реА рдХрд░рддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
if (cmp == 0) cmp = -shift;
findOne
рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЛрдб рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ shift
рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрджрд┐ рд╡рд╣реА рдХреБрдВрдЬрд┐рдпрд╛рдВ рдкреЗрдбрд╝ рдореЗрдВ рд╣реИрдВ, рддреЛ рд╡реЗ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдордирдорд╛рдиреА рдкрд╛рдПрдВрдЧреЗред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реАрдорд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рддрддреНрд╡ рдЦреЛ рдЬрд╛рдПрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдВ shift
1
рд╕реЗрдЯ рд╣реИред рдирддреАрдЬрддрди, рдЦреЛрдЬ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИ рднрд▓реЗ рд╣реА рд╡рд╣ рд╡рд╣рд╛рдВ рд╣реЛ , рд▓реЗрдХрд┐рди рд░реЗрдВрдЬ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
рдЪрд╛рджрд░реЛрдВ рдХреА рд╕реВрдЪреА
рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╕реАрдорд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд╛рджрд░реЗрдВ рдПрдХ рд╕реВрдЪреА рд╕реЗ рдмрдВрдзреА рд╣реЛрддреА рд╣реИрдВред BPlusTree.ForwardCursor
, рдЬреЛ рд╢реАрдЯ рд╕реЗ рд╢реАрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрд░реНрд╕рд░ рдкрд╛рд╕ рдкреЗрдбрд╝ рдореЗрдВ рдЕрдиреНрдп рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, рд▓реЙрдХ рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рдкрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдПрдХ рддреБрд▓реНрдпрдХрд╛рд▓рди рддрдВрддреНрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рдХрд░реНрд╕рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рд░рдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЪреВрдВрдХрд┐ рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдореЗрдВ B + рдЯреНрд░реА рдЕрдиреНрдп рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпреБрд╡рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ B + рдЯреНрд░реА рдорд┐рд▓рддрд╛ рд╣реИ:
- рд╡рд╛рд▓ рд╕рд╕реНрддреА рд╕реБрд░рдХреНрд╖рд╛ рджреЗрддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдбрд┐рд╕реНрдХ рдкрд░ рдкреЗрдбрд╝ рдХреЛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдХреНрд░рдордмрджреНрдз рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдСрдлрд╢рд┐рдк ред
- рдХрдВрд╕реАрдбрд░ - рд╕реНрдореГрддрд┐ рдореЗрдВ рд▓рджреЗ рдкреЗрдбрд╝ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдПред