рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ MongoDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдХрдо рдХрд░реЗрдВ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдПрдХ рдкрд░рд┐рд╡рд╛рд░, рдЬрд┐рд╕реЗ рдЖрдо рдирд╛рдореЛрдВ рдмрд┐рдЧ рдбреЗрдЯрд╛ рдФрд░ NoSQL рджреНрд╡рд╛рд░рд╛ рдПрдХрдЬреБрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдореЙрдбрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдЬреЛ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ Google рдХреА рдЖрдВрддреЛрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рдореИрдк-рд░рд┐рдбреНрдпреВрд╕ рддрдХрдиреАрдХред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдореЙрдбрд▓ MongoDB рдЧреИрд░-рд╕рдВрдмрдВрдзрдкрд░рдХ DBMS рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

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

рддреЛ рдореИрдк-рд░рд┐рдбреНрдпреВрд╕ рдореЗрдВ рдРрд╕рд╛ рдХреНрдпрд╛ рдЦрд╛рд╕ рд╣реИ?

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

рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрдиреЗ рджреЗрдВ рдЬрд┐рдирдХреЗ рддрддреНрд╡ рдлреЙрд░реНрдо рдХреЗ рд╣реИрдВ:

{ name : "John", age : 23, interests : ["football", "IT", "women"] } 

рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

 { key: "football", value: 1349 }, { key: "MongoDB", value: 58 }, //... 

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

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

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 function map(){ for(var i in this.interests) { emit(this.interests[i], 1); } } 

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

рдЙрддреНрдкрдиреНрди рдЬреЛрдбрд╝реЗ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлреЙрд░реНрдо <рдХреБрдВрдЬреА, рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА> рдореЗрдВ рдХрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрдо рд╕рдорд╛рд░реЛрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 function reduce(key, values) { var sum = 0; for(var i in values) { sum += values[i]; } return sum; } 

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

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

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ MongoDB рдордзреНрдпрд╡рд░реНрддреА рдПрдХрддреНрд░реАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Reduce рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдПрдХ рд╣реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрдИ рдЬреЛрдбрд╝реЗ рдмрдирддреЗ рд╣реИрдВ, MongoDB рдЙрдирдХреЗ рд▓рд┐рдП рд░рд┐рдбреНрдпреВрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХ <рдХреБрдВрдЬреА, рдорд╛рди> рдЬреЛрдбрд╝реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдореИрдк рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣ рдХрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд▓рдЧрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╡реЗ рд╣реИрдВ:

  1. рдХрдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рдВрдХреНрд╢рди ( рдПрдорд┐рдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░) рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдорд╛рди рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
  2. рд╕рдорд╛рдирддрд╛ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдХрдо рдХрд░рдирд╛ (рдХреБрдВрдЬреА, [рдП, рдХрдо (рдХреБрдВрдЬреА, [рдмреА, рд╕реА])]] == рдХрдо рдХрд░рдирд╛ (рдХреБрдВрдЬреА, [рдП, рдмреА, рд╕реА])
  3. рдкреНрд░рд╛рдкреНрдд рдЬреЛрдбрд╝реА рдореЗрдВ рдХрдореА рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рд░-рдмрд╛рд░ рдЖрд╡реЗрджрди <рдХреБрдВрдЬреА, рдореВрд▓реНрдп> рдкрд░рд┐рдгрд╛рдо (рдкреНрд░рднрд╛рд╡рд╣реАрдирддрд╛) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
  4. рдХрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХрд╛ рдХреНрд░рдо рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

 { key:"football", value: 1349 }, 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдореЛрдВрдЧреЛ рд╢реЗрд▓ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:

 db.users.mapReduce(map, reduce,{out:"interests"}) 

рдЖрдЗрдП рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдЖрдпреБ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреА рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдирдХреНрд╢рд╛ рд╕рдорд╛рд░реЛрд╣ рдлрд╛рд░реНрдо рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 function map(){ emit(this.age, {interests_count: this.interests.length, count: 1}); } 

рдпрд╣рд╛рдВ рдХреБрдВрдЬреА рдЙрдореНрд░ рд╣реИ, рдФрд░ рд╡рд╕реНрддреБ рдХреЛ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рд┐рддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЗрди рд╣рд┐рддреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдЖрдпреБ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЗрдХрд╛рдИ рд╣реИ)ред

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

 function reduce(key, values) { var sum = 0; var count = 0; for(var i in values){ count += values[i].count; sum += values[i].interests_count; } return {interests_count: sum, count: count}; } 

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

  function finalize(key, reducedValue) { return reducedValue.interests_count / reducedValue.count; } 

рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢:

  db.users.mapReduce(map, reduce, {finalize: finalize, out:"interests_by_age"}) 

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Apache Hadoop рд╕рд╣рд┐рдд Map-Reduce рдХреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, Reduce рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИрдВред рд╡рд╣рд╛рдВ, рдХрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдореЗрд╢рд╛ рдХреБрдВрдЬреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рдПрдЧреАред рдФрд░ рдордзреНрдпрд╡рд░реНрддреА рдПрдХрддреНрд░реАрдХрд░рдг рдПрдХ рдЕрдиреНрдп рдСрдкрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЧрдардмрдВрдзрди , рд╢рдмреНрджрд╛рд░реНрде рдореЗрдВ рдХрдореА рдХреЗ рд╕рдорд╛рдиред

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

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

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


All Articles