рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдЙрддреНрдкрдиреНрди рд╣реБрдП - рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдзрд╛рд░ рд╣реИ, рд╕реИрдХрдбрд╝реЛрдВ рд╣рдЬрд╛рд░реЛрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ред рдкреНрд░рддреНрдпреЗрдХ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕реИрдХрдбрд╝реЛрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрддреНрдкрд╛рдж рджреНрд╡рд╛рд░рд╛ рддреНрд╡рд░рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЧрдарди рдХрд╛ рд╕рдордп 0.3 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреЛ рд╢реИрд▓реА рдореЗрдВ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
(1 = true AND (2 < 100)) OR (1 = false AND (3 > 17)) ... AND\OR
рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг
hotline.ua/computer/myshi-klaviatury рд╣реИ
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ MySQL + Symfony2 / Doctrine рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рд╣реИ, рдЧрддрд┐ рдЕрд╕рдВрддреЛрд╖рдЬрдирдХ рд╣реИ - рдЬрд╡рд╛рдм 1-10 рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рдмрдирддреЗ рд╣реИрдВред рдЗрд╕ рд╕рднреА рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдореЗрд░реЗ рдкреНрд░рдпрд╛рд╕ рдХрдЯ рдХреЗ рддрд╣рдд рд╣реИрдВред
рдорд╛рд▓ рдХреЛ рдЫрд╛рдирдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА (рд╕рд░рд▓реАрдХреГрдд рд░реВрдк рдореЗрдВ)
- рд╡рд┐рд╢реЗрд╖рддрд╛ - рдорд╛рд▓ рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ред
- рдЙрддреНрдкрд╛рдж рдЯреЗрдореНрдкрд▓реЗрдЯ - рд╕рдорд╛рди рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдкреНрдпреВрдЯрд░ рдЪреВрд╣реЛрдВ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреАред рдПрдХ рдирдпрд╛ рдЙрддреНрдкрд╛рдж рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рднреАрддрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ - рдЖрдкрдХреЛ рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред
- рдЙрддреНрдкрд╛рдж рд╕рдореВрд╣ - рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЙрддреНрдкрд╛рдж ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдкреНрдпреВрдЯрд░ рдЪреВрд╣реЛрдВред рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗрд╡рд▓ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИред
- рдорд╛рдирджрдВрдб - рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рдпрдо, рдЬрд┐рд╕рдореЗрдВ рдорд╛рд▓ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдФрдкрдЪрд╛рд░рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдЧреЗрдорд┐рдВрдЧ рдорд╛рдЙрд╕" рдкреНрд░рджрд░реНрд╢рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ (рдЖрдХрд╛рд░ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИ) рдФрд░ (рд▓реЗрдЬрд░ рд╕реЗрдВрд╕рд░) рдФрд░ (рдХрдо рд╕реЗ рдХрдо 1500 рдХрд╛ рд╕реЗрдВрд╕рд░ рд╕рдВрдХрд▓реНрдк) рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ
- рдлрд╝рд┐рд▓реНрдЯрд░ - рд╕рдорд╛рди рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдб рдХрд╛ рдПрдХ рд╕рдореВрд╣ред рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЙрдиреНрд╣реЗрдВ AND рдпрд╛ OR рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╣реЙрдЯрд▓рд╛рдЗрди рдХрд╛ рдПрдХ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ - рдПрдХ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдХрд┐ рдХрд╕реМрдЯреА рдХреА рд╕рдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдХрд┐рддрдиреЗ рдЙрддреНрдкрд╛рдж рдмрдиреЗ рд░рд╣реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк "рдмреНрд▓реВрдЯреВрде" рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, "рдорд╛рдЙрд╕ рд╕реЗрдВрд╕рд░ рдкреНрд░рдХрд╛рд░ рдСрдкреНрдЯрд┐рдХрд▓ рд╣реИ" рдлрд┐рд▓реНрдЯрд░ 17 рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реЗрд╖ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рднреА рдЧрдгрдирд╛ рдХрд░реЗрдВред рдЗрд╕рдХреА рд╕рдХреНрд░рд┐рдпрддрд╛ред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
Neo4j рдЧреНрд░рд╛рдл рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рддрд╣реА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
Neo4j рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЧреНрд░рд╛рдлрд╝ рдбреЗрдЯрд╛рдмреЗрд╕ред
- рдЧреНрд░рд╛рдлрд╝ рдбреЗрдЯрд╛рдмреЗрд╕ , рдЧреНрд░рд╛рдлрд╝ рдбреЗрдЯрд╛рдмреЗрд╕ - рдЧреНрд░рд╛рдлрд╝ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ - рдиреЛрдбреНрд╕ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреЗ рд░рд┐рд╢реНрддреЗ
- рд╕рд╛рдЗрд░реЛрдлрд╝рд░ - Neo4j рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ (рд▓рдЧрднрдЧ, SQL рдореЗрдВ SQL рдХреА рддрд░рд╣)
- рдиреЛрдб , рдиреЛрдб - рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ, рдПрдХ рдЧреНрд░рд╛рдл рдиреЛрдбред рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ 2 рд╕реЗ 35 ~ 34 рдмрд┐рд▓рд┐рдпрди рдХреА рд╢рдХреНрддрд┐ рддрдХ рд╕реАрдорд┐рдд рд╣реИ
- рдиреЛрдб рд▓реЗрдмрд▓ , рдиреЛрдб рд▓реЗрдмрд▓ - рдПрдХ рд╕рд╢рд░реНрдд "рдиреЛрдб рдкреНрд░рдХрд╛рд░" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк рдореВрд╡реА рдХреЗ рдиреЛрдбреНрд╕ рдЯрд╛рдЗрдк рдПрдХреНрдЯрд░ рдХреЗ рдиреЛрдбреНрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдмрд▓ рдиреЛрдб рдХреЗрд╕-рд╕рдВрд╡реЗрджреА рд╣реЛрддреЗ рд╣реИрдВ , рдФрд░ рдпрджрд┐ рдЖрдк рдЧрд▓рдд рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдирд╛рдо рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рд╛рдЗрдкреНрд░реЛ рдПрд░рд░ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
- рд╕рдВрдмрдВрдз , рд╕рдВрдЪрд╛рд░ - рджреЛ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдВрдмрдВрдз, рдЧреНрд░рд╛рдл рдХреЗ рдХрд┐рдирд╛рд░реЗред рдмрд╛рдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛ 35 ~ 34 рдмрд┐рд▓рд┐рдпрди рдХреА рд╢рдХреНрддрд┐ рддрдХ 2 рддрдХ рд╕реАрдорд┐рдд рд╣реИ
- рд╕рдВрдмрдВрдз рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ , рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП Neo4j рдореЗрдВ рд╣реИред рд▓рд┐рдВрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ 32767 рд╣реИ
- рдЧреБрдг , рдиреЛрдб рдЧреБрдг - рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬрд┐рд╕реЗ рдиреЛрдб рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдПрдХ рдиреЛрдб рдПрдХ рдЙрддреНрдкрд╛рдж рд╣реИ, рддреЛ рдиреЛрдб рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдЖрдк рдЙрддреНрдкрд╛рдж рдЖрдИрдбреА рдХреЛ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- рдиреЛрдб рдЖрдИрдбреА , рдиреЛрдб рдЖрдИрдбреА - рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрддреЗ рд╕рдордп, рдпрд╣ рдЖрдИрдбреА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдХрд┐ рдЗрд╕реЗ рд╕рд╛рдЗрдлреНрд░реЗрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП
рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛
рдкреНрд░рддреНрдпреЗрдХ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдиреЛрдб рдмрдирд╛рдПрдВ, рдиреЛрдб рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдЖрдИрдбреА рдХреЛ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдирджрдВрдб рдХреЗ рд▓рд┐рдП, рдЧреБрдгреЛрдВ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдиреЛрдб рдмрдирд╛рдПрдВ, рдорд╛рдкрджрдВрдб рдХреА рдЖрдИрдбреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рд╛рдорд╛рди рдХреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЛ рдорд╛рдкрджрдВрдб рдХреЗ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВ рдЬреЛ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рдЙрддреНрдкрд╛рдж рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдпрд╛ рдорд╛рдкрджрдВрдб рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
рдкрд╣рд▓рд╛ рд╕рдорд╛рдзрд╛рди Neo4j рдХреЗ рд╕рд╛рде рд╣реИ
рдпрд╣ рд╕рдордЭрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВрдиреЗ рдХрднреА рдЧреНрд░рд╛рдлрд╝ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореИрдВрдиреЗ рдирд┐рдУ 4 рдЬреЗ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕реНрддрд░ рдкрд░ рд╕рд╛рдЗрдлрд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, 1 рдорд┐рд▓рд┐рдпрди рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреА рдЧрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 500 рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВред
рд╕рд┐рд╕реНрдЯрдо рдХреА рддреИрдирд╛рддреА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ -
рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
Neo4j рд╕рд░реНрд╡рд░ рдореЗрдВ RestAPI рд╣реИ, php рдХреЗ рд▓рд┐рдП
neo4jphp рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред Symfony2 рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрдбрд▓ рднреА рд╣реИ -
klaussilveira / neo4j-ogm-рдмрдВрдбрд▓ ред
рд╡рд┐рддрд░рдг рдореЗрдВ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ
http: // localhost: 7474 /рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЕрднреА рднреА
рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ ред
рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдЧреНрд░рд╛рдлрдЧрд┐рд╕реНрдЯ рдореЗрдВ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рдСрдирд▓рд╛рдЗрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ
рдЧреНрд░рд╛рдлрдЧрд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛
рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдпрд╣рд╛рдВ ) рдФрд░ рдкреГрд╖реНрда рд╕реНрд░реЛрдд рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
Neo4j рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП
рдмрд┐рд▓реНрдЯ-рдЗрди рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ
ред рд╡рд╣рд╛рдВ рдЖрдк рд╕рд╛рдЗрдлреНрд░реЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдиреЛрдбреНрд╕ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд┐рдВрдкрд▓ рд╕рд╛рдЗрдкрд░ рдХрдорд╛рдВрдбреНрд╕рдПрдХ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдб рдмрдирд╛рдирд╛ create (n:Ware {wareId: 1});
рд╕рднреА рдиреЛрдбреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ MATCH (n) RETURN n
рдХрд╛рдЙрдВрдЯрд░ MATCH (n:Ware {wareId:1}) RETURN "Our graph have "+count(*)+" Nodes with label Ware and wareId=1" as counter
2 рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдб рдмрдирд╛рдПрдВ CREATE (n{wareId:1})-[r:SUIT]->(m{criteriaId:1})
рд▓рд┐рдВрдХ 2 рдореМрдЬреВрджрд╛ рдиреЛрдбреНрд╕ MATCH (a {wareId: 1}), (b {criteriaId: 2}) MERGE (a)-[r:SUIT]->(b)
рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдбреНрд╕ рд╣рдЯрд╛рдПрдБ match (n)-[r]-() DELETE n,r;
рд╕рднреА рдЕрд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдбреНрд╕ рдХреЛ рд╣рдЯрд╛рдПрдВ - рдпрджрд┐ рдЖрдк рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдбреНрд╕ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдбреНрд╕ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред
match n DELETE n;
рдорд╛рдкрджрдВрдб 3 рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ MATCH (a:Ware)-->(b:Criteria {criteriaId: 3}) RETURN a
рдПрдХ рдмрд╛рд░ рдХрдИ Cypher рдЖрджреЗрд╢реЛрдВ рдкрд░ рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐
рдкреБрд░рд╛рдиреЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ 1 рдкрдВрдХреНрддрд┐ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрдк рдПрдХ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрдИ рдиреЛрдб рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдиреЛрдбреНрд╕ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдо рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдк рд▓рд┐рдВрдХ рдХреЛ рдХреЛрдИ рдирд╛рдо рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ
CREATE (w1:Ware{wareId:1})-[:SUIT]->(c1:Criteria{criteriaId:1}), (w2:Ware{wareId:2})-[:SUIT]->(c2:Criteria{criteriaId:2}), (w3:Ware{wareId:3})-[:SUIT]->(c3:Criteria{criteriaId:3}), (w4:Ware{wareId:4})-[:SUIT]->(c1), (w5:Ware{wareId:5})-[:SUIT]->(c1), (w4)-[:SUIT]->(c2), (w5)-[:SUIT]->(c3);
рдЖрдкрдХреЛ рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдорд┐рд▓рддреА рд╣реИред рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ рдХрдо рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдорд╛рдЙрд╕ рд╕реЗ рдиреЛрдбреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ Neo4j рд╕реНрдкреАрдб рдЯреЗрд╕реНрдЯ
рдмрдбрд╝реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рд╕рд░рд▓ рдирдореВрдиреЛрдВ рдХреЛ рднрд░рдиреЗ рдХреА рдЧрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд▓реЛрди neo4jphp
git clone https:
рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдореВрд▓ рд╡рд┐рд╡рд░рдг
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрджрд╛рд╣рд░рдг / test_fill_1.php рдЯреЗрд╕реНрдЯ рдмреЗрд╕ рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдХреЛрдб рдирд┐рдХрд╛рд▓реВрдВрдЧрд╛ред
<?php use Everyman\Neo4j\Client, Everyman\Neo4j\Index\NodeIndex, Everyman\Neo4j\Relationship, Everyman\Neo4j\Node, Everyman\Neo4j\Cypher; require_once 'example_bootstrap.php'; $neoClient = new Client(); $neoWares = new NodeIndex($neoClient, 'Ware'); $neoCriterias = new NodeIndex($neoClient, 'Criteria'); $neoWareLabel = $neoClient->makeLabel('Ware'); $neoCriteriaLabel = $neoClient->makeLabel('Criteria'); $wareTemplatesCount = 200;
рдореИрдВрдиреЗ рд░рд╛рдд рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЫреЛрдбрд╝ рджреАред рд▓рдЧрднрдЧ 4 рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдФрд░ Neo4j рд╕реЗрд╡рд╛ рдиреЗ рд╕рд░реНрд╡рд░ рдХреЛ 100% рд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд╕реБрдмрд╣, рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, 8 рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ 78,300 рдЙрддреНрдкрд╛рдж рдбрд╛рд▓реЗ рдЧрдПред
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкрд░реАрдХреНрд╖рдг рднрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо 200-400 рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 20 рдЙрддреНрдкрд╛рдж рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╣реИрдВред рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ - рдореИрд╕рд┐рдХреЗрд▓ рдФрд░ рдХреИрд╕реЗрдВрдбреНрд░рд╛ рдиреЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб (10 рдлрд╝реАрд▓реНрдб, 1 рдкреНрд░рд╛рдердорд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ, 1 рд╕реВрдЪрдХрд╛рдВрдХ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 10-20 рд╣рдЬрд╛рд░ рдЖрд╡реЗрд╖рдг рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЧрддрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ - рд╣рдо рдЙрддреНрдкрд╛рдж рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдбреЗрдЯрд╛ рдЧреНрд░рд╛рдл рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рд╕реИрдВрдкрд▓рд┐рдВрдЧ рдХреА рдЧрддрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдбрд┐рд╕реНрдХ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЖрдХрд╛рд░ 1781 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИред рдпрд╣ 78,300 рдЙрддреНрдкрд╛рджреЛрдВ, 4,000 рдорд╛рдирджрдВрдбреЛрдВ, 156.66 рдорд┐рд▓рд┐рдпрди-31320000 рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ (рдиреЛрдбреНрд╕ рдФрд░ рд▓рд┐рдВрдХ) 32 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдХрдо рд╣реИ - рдкреНрд░рддрд┐ рдЗрдХрд╛рдИ рдФрд╕рдд 55 рдмрд╛рдЗрдЯреНрд╕ред рдереЛрдбрд╝рд╛ рдмрд╣реБрдд, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрднреА рднреА рдирдореВрдиреЛрдВ рдХреА рдЧрддрд┐ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЖрдХрд╛рд░ рдирд╣реАрдВ рд╣реИред
рдирдореВрдирд╛рдХрд░рдг рдЧрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд░рд╣рд╛ - Neo4j рд╕рд░реНрд╡рд░ рдлрд┐рд░ рд╕реЗ "100% рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдореЛрдб рдореЗрдВ" рдЪрд▓рд╛ рдЧрдпрд╛ рдФрд░ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреАред
MATCH (c {criteriaId: 1})<--(a)-->(b {criteriaId: 3}) RETURN a.wareId;
рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ Neo4j рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдкрд╣рд▓реЗ, рдореИрдВ START рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрдпрди рдореЗрдВ рдиреЛрдбреНрд╕ рдХреЗ рд╢реБрд░реБрдЖрддреА рд╕реЗрдЯ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛
START n=node:nodeIndexName(key={value}) MATCH (c)<
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Neo4j рдореЗрдВ рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдирд╣реАрдВ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди
Neo4j рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЖрдк рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
:schema
рдЖрдк рдХрдорд╛рдВрдб рдХреЗ
рд╕рд╛рде рдЗрдВрдбреЗрдХреНрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ
рд╣реИрдВ CREATE INDEX ON :Criteria(criteriaId)
рдЯреАрдо рджреНрд╡рд╛рд░рд╛
рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
CREATE CONSTRAINT ON (n:Criteria) ASSERT n.criteriaId IS UNIQUE;
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рдЕрдиреБрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ START рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдирдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЬрд╣рд╛рдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
Cypher рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдП рдЧрдП рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╕реНрдХреАрдорд╛ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ START рдХреНрд▓рд╛рдЬ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред START рдХреНрд▓реЙрдЬрд╝ рдЗрдВрдбреЗрдХреНрд╕ рд▓реБрдХрдЕрдк рдЙрди рд╡рд┐рд░рд╛рд╕рдд рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдк рдСрдЯреЛрдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдЧреИрд░-рд╕рд╛рдЗрд░рдлрд╛рдЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реВрдЪрдХрд╛рдВрдХ, рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдореИрдЪ n: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдЬрд╣рд╛рдБ n.name = "aapo"
рд╡рд╛рдкрд╕реА n;
рдпрджрд┐ рдореИрдВ
рдкреНрд░рд▓реЗрдЦрди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдЖрдк START рдХреЗ рдмрдЬрд╛рдп WHERE рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
START рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рдпрджрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рд╛рдЗрдлреЛрд░ рдЖрдкрдХреА рдХреНрд╡реЗрд░реА рд╕реЗ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБрдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдЧрд╛ред рдпрд╣ рдиреЛрдб рд▓реЗрдмрд▓реНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреА рдХреНрд╡реЗрд░реА рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЕрдзреНрдпрд╛рдп 14, рд╕реНрдХреАрдорд╛ рджреЗрдЦреЗрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓реАрдЧреЗрд╕реА рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕реНрдЯрд╛рд░реНрдЯ рдХреНрд▓реЙрдЬ рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред
рддреЛ рдкрд╣рд▓рд╛ рдХрд╛рдо рдЕрдиреБрд░реЛрдз рдкреИрджрд╛ рд╣реБрдЖ рдерд╛
MATCH (a:Ware)-->(c1:Criteria {criteriaId: 3}),(c2:Criteria {criteriaId: 1}),(c3:Criteria {criteriaId: 2}) WHERE (a)-->(c2) AND (a)-->(c3) RETURN a;
рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреЛрдИ рдЗрдВрдбреЗрдХреНрд╕ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдВрдЧреЗред рдореБрдЭреЗ Neo4j рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдбреЗрдЯрд╛ рд╕реЗрдЯ (MySQL рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ) рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рдорд┐рд▓реАред рдЗрд╕рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл Neo4j рд╕рдореБрджрд╛рдп (рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рди) рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд╛ рдкрде рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛

рдЪреМрдХрд╕ рдкрд╛рдардХреЛрдВ рдХреЛ test_fill_1.php рдХреЛрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рдЬреЛрдбрд╝реЗ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН
$c = $neoClient->makeNode()->setProperty('criteriaId', $wareTemplateId * $criteriasCount + $criteriaId)->save(); // ->addLabels(array($neoCriteriaLabel)) - commitBatch $neoCriterias->add($c, 'criteriaId', $wareTemplateId * $wareTemplatesCount + $criteriaId); // ->save()
Neo4jphp рдореЗрдВ рдмреИрдЪ рдореЛрдб рдореЗрдВ, рдореИрдВ рдиреЛрдбреНрд╕ рдореЗрдВ рд▓реЗрдмрд▓ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрд╛ рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдгрд╡рд╢ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рд╕рд╣реЗрдЬрд╛ рдирд╣реАрдВ рдЧрдпрд╛ред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ Cypher рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЪреАрдиреА рдкрддреНрд░ рдирд╣реАрдВ рд░рд╣ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХрдЯреНрдЯрд░ - рдкреНрдпреЛрд░ Cypher рдкрд░ рднрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рддреЛ рдпрд╣ test_fill_2.php рдирд┐рдХрд▓рд╛
<?php use Everyman\Neo4j\Client, Everyman\Neo4j\Index\NodeIndex, Everyman\Neo4j\Relationship, Everyman\Neo4j\Node, Everyman\Neo4j\Cypher; require_once 'example_bootstrap.php'; $neoClient = new Client(); $wareTemplatesCount = 100;
рдкрд╣рд▓реЗ рдЕрд╡рддрд╛рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЧрддрд┐ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдереАред
30,000 рдиреЛрдбреНрд╕ рдФрд░ 500,000 - 1,000,000 рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд╕рд╛рдЗрдмрд░рдлреЛрд░ рдкрд░ 140 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдиреЗ 62 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рд▓рд┐рдпрд╛ред рдЬрдм рдореИрдВрдиреЗ $ waresCount = 1000 (10,000 рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдореБрдЭреЗ "рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рддреНрд░реБрдЯрд┐" рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдореИрдВрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ред
MATCH (a {wareId: 1}), (b {criteriaId: 2}) MERGE (a)-[r:SUIT]->(b)
рдЗрд╕рд╕реЗ рдЧрддрд┐ рдореЗрдВ рдПрдХ рднрдпрд╛рд╡рд╣ рдЧрд┐рд░рд╛рд╡рдЯ рдЖрдИ, рд╕рдВрд╢реЛрдзрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд▓рдЧрднрдЧ рдПрдХ рдШрдВрдЯреЗ рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ
рдХрдИ рдорд╛рдирджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирдореВрдирд╛ рдЧрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдкреНрд░рд╢реНрди рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ред
<?php use Everyman\Neo4j\Client, Everyman\Neo4j\Index\NodeIndex, Everyman\Neo4j\Relationship, Everyman\Neo4j\Node, Everyman\Neo4j\Cypher; require_once 'example_bootstrap.php'; $neoClient = new Client(); $time = microtime(); $query = new Cypher\Query($neoClient, "MATCH (a:Ware)-->(b:Criteria {criteriaId: 3}),(c:Criteria {criteriaId: 1}),(c2:Criteria {criteriaId: 2}) WHERE (a)-->(c) AND (a)-->(c2) RETURN a;", array()); $result = $query->getResultSet(); print "Done in ".(microtime() - $time)." seconds\n";
рдКрдкрд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ 0.02 рд╕реЗрдХрдВрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдХрд╛рдлреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рд▓ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреИрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд╣реБрдИ рд╣реИред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди
рдореИрдВрдиреЗ MySQL рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдореЗрд░реА рдЕрдВрддрд░рд╛рддреНрдорд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ" рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рд▓рд┐рдВрдХ рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
CREATE TABLE IF NOT EXISTS `edges` ( `criteriaId` int(11) NOT NULL, `wareId` int(11) NOT NULL, UNIQUE KEY `criteriaId` (`criteriaId`,`wareId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
<?php mysql_connect("localhost", "root", ""); mysql_select_db("test_nodes"); $wareTemplatesCount = 100; $criteriasCount = 50; $waresCount = 250; $minRelations = 20; $maxRelations = 40; $time = time(); for($wareTemplateId = 0;$wareTemplateId<$wareTemplatesCount;$wareTemplateId++) { $criterias = array(); for($criteriaId = 1;$criteriaId <=$criteriasCount;$criteriaId++) { $criterias[] = $wareTemplateId * $criteriasCount + $criteriaId; } for($wareId = 1;$wareId <=$waresCount;$wareId++) { $edges = array(); $wId = $wareTemplateId * $waresCount + $wareId; $links = array_rand($criterias,rand($minRelations,$maxRelations)); foreach($links as $linkId) { $edges[] = "(".$criterias[$linkId].",".$wareId.")"; }
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рднрд░рдиреЗ рдореЗрдВ 12 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрд╛ред рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрдХрд╛рд░ 37 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИред 2 рдорд╛рдкрджрдВрдб рд╕реЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдкрд░ 0.0007 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ
SELECT e1.wareId FROM `edges` AS e1 JOIN edges AS e2 ON e1.wareId = e2.wareId WHERE e1.criteriaId =17 AND e2.criteriaId =31
рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк
Mysql рдХреЗ рддрд╣рдд рдПрдХ рдкреВрд░реНрдг
рдЧреНрд░рд╛рдлрд╝ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рд╣реИ - рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ Neo4j рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрджрд┐рдо рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
Neo4j рдПрдХ рдмрд╣реБрдд рд╣реА рд╢рд╛рдВрдд рдЪреАрдЬ рд╣реИ ред Neo4j рдореЗрдВ "рд╕рдВрдЧреАрддрдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рд╕рд╛рдЙрдВрдбрдЯреНрд░реИрдХ рдЬреИрд╕реА рдлрд┐рд▓реНрдореЛрдВ рдореЗрдВ рдЕрднрд┐рдирдп рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд┐рд▓реНрдо рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рдВрдкрд░реНрдХреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз" Neo4j рдореЗрдВ рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣
MATCH (me:User {userId:123})-[:Like]->(musicants:User)-[:Author]->(s:Soundtrack)-[:Used]->(f:Film)<-[:Starred]-(actor: User)<-[:Like]-(u:User) RETURN u
SQL рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рд╡рд╛рд▓рд╛ рдХрд╛рдо рд╣реИред
MySQL рдореЗрдВ рдирдВрдЧреЗ рд╕реВрдЪрдХрд╛рдВрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдЧреНрд░рд╛рдлрд╝ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЧрд▓рдд рд╣реИ, рд▓реЗрдХрд┐рди
рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, Neo4j рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реБрдЖ ред
рдЕрджреНрдпрддрдиред рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рднреА рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрджреНрдпрддрди реи ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдИ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╕реБрдЭрд╛рдП - MongoDB, elasticsearch, solr, sphinx, OrientDBред рдореИрдВ MongoDB рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рд╡рд╣реАрдВ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред