рд╣реИрдмреЗ рдкрд░ рдХрд▓ рдХреА рдкреЛрд╕реНрдЯ рдХреЗ рдзреНрдпрд╛рди рдХрд╛ рд╡рд┐рд╖рдп рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд░рд┐рд╕рд░реНрдЪ - рдбреНрд░рд╛рдпрдб рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдврд╛рдВрдЪрд╛ рдерд╛ ред
рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдХ
рдирд┐рд░реНрджреЗрд╢рд┐рдд рдПрд╕рд╛рдЗрдХреНрд▓рд┐рдХ рдЧреНрд░рд╛рдл рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд╣рд╛рдВ
рдЧреНрд░рд╛рдл рдХреЗ
рдХреЛрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИрдВ рдФрд░
рдХрд┐рдирд╛рд░реЛрдВ рдЪреИрдирд▓ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдбреНрд░рд╛рдпрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХреА рднреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЧрдИ, рдФрд░
рдлреНрд░реЗрдорд╡рд░реНрдХ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреЗрдВрджреНрд░реАрдп рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд
рдЕрд╡рд▓реЛрдХрди , рдбреНрд░рд╛рдпрдб рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг, рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдбреНрд░рд╛рдпрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдШрдЯрдХ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ, рдбреНрд░рд╛рдпрдбрд▓рд╛рдЗрди рдХреНрд╡рд┐рдХ рд╕реНрдЯреЛрд░реЗрдЬ рдХреНрд╡реЗрд░реА рд▓реИрдВрдЧреНрд╡реЗрдЬ рд╣реИред
# рднрд╛рдЧ рд▓рд┐рд░рд┐рдХрд▓ рдбрд╛рдЗрдЬреЗрд╢рди (рдкреНрд░реЗрд░рдгрд╛ рд▓рд┐рдЦрдиреЗ рдкрд░)рдбреНрд░рд╛рдпрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд▓ рдХрд╛ рд▓реЗрдЦ, рдореИрдВрдиреЗ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЖрдк Microsoft рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдореИрдВ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВ: рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрд╕рдВрдзрд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдбреНрд░рд╛рдпрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рди рд╣реА рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (рдЪреВрдВрдХрд┐ рдЕрдм рдХреЗрд╡рд▓ рдПрдХ рд╢реИрдХреНрд╖рдгрд┐рдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЙрдкрд▓рдмреНрдз рд╣реИ)ред рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ, рдореИрдВ рдпрд╣ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдбреНрд░рд╛рдпрдб рдмреБрд░рд╛рдИ рдирд┐рдЧрдо рдХрд╛ рдПрдХ " рдЖрдВрддрд░рд┐рдХ " рдЙрддреНрдкрд╛рдж рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рд╡рд┐рдХрд╛рд╕ рд░рдгрдиреАрддрд┐ [рдЙрддреНрдкрд╛рдж рдФрд░ рдмреБрд░рд╛рдИ] Microsoft рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ (рдЬреЛ рдХрд┐ рдХрд╛рдлреА рдЙрдЪрд┐рдд рд╣реИ)ред
рдпреЗ рд╕рднреА рддрдереНрдп (рдореИрдВ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддреЗ рд╣реИрдВ) рдбреНрд░рд╛рдпрдб рдордВрдЪ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рдпрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрдо рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ (рдлрд┐рд░ рд╕реЗ - рдЕрдкрдиреЗ рд▓рд┐рдП)ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИ - рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИред
рдЬреЛ рд▓реЛрдЧ рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рд╡реЗ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ рдХрд┐ Hadoop рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ, рдФрд░ DryadLINQ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ, рдореИрдВ рд╕рдВрдХреЗрдд рджреВрдВрдЧрд╛ рдХрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреЗрд╡рд▓ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╣реЛрдЧреА ред
1. рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА
рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдФрд░ рдШреЛрд╖рдгрд╛рддреНрдордХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВ, рдФрд░ рдлрд┐рд░, рдЙрд╕реА рдХреЛрдб рдХреЛ рдПрдХ рдорд╢реАрди рдкрд░, рдПрдХ рдорд▓реНрдЯреАрдХреЛрд░ рдорд╢реАрди рдкрд░, рдпрд╛ рдорд╢реАрдиреЛрдВ рдХреЗ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдбреНрд░рд╛рдпрдбрд▓реАрдирдХреНрдпреВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ рдХреА рд╕реБрдВрджрд░рддрд╛ рд╣реИред
- рдпреБрдЖрди рдпреВ, рдкреНрд░рдзрд╛рди рд╢реЛрдзрдХрд░реНрддрд╛, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд░рд┐рд╕рд░реНрдЪ
DryadLINQ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ SQL-рддрд░рд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рд╣реИред DryadLINQ .NET рд▓реИрдВрдЧреНрд╡реЗрдЬ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рдХреНрд╡реЗрд░реА (LINQ) рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдбреНрд░рд╛рдпрдб рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ LINQ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рддрд░рд┐рдд LINQ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП API рдХреЗ рд╕рд╛рде рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
Hadoop - HiveQL рдордВрдЪ, рд╕реБрдЕрд░ рд▓реИрдЯрд┐рди рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд - DryadLINQ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ (рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ) рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, DryadLINQ .NET рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:
- LINQ рдПрдХреАрдХреГрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЙрдбрд▓ ;
- => рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк - рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг ;
- .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓
- рдПрдордПрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг ;
- рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп PLs рдЬреИрд╕реЗ C #, F #, рдпрд╛ рдХреЛрдИ CLS- рд╕рдВрдЧрдд рднрд╛рд╖рд╛ред
рдЙрдкрд░реЛрдХреНрдд рд╕реВрдЪреА рдХреЗ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рдЦреЛрд▓рдирд╛, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ LINQ рдореЗрдВ рд╢реБрд░реВ рдореЗрдВ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдереЗ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░, LINQ рдХреЗ рдКрдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, DryadLINQ API рднреА рд╣реИ
"рдирд╣реАрдВ рджреЗрддрд╛" рдЙрдирдХреЗ рд╡рд┐рддрд░рд┐рдд рд╕реНрд╡рднрд╛рд╡ рдХреЛ "рдзреЛрдЦрд╛" рди рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЗрдЯрд╛рдмреЗрд╕ (LINQ-SQL рдкрд░) рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо (DryadLINQ рдкрд░) рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЕрдВрддрд░ рдХреЛ рдХрдо рдХрд░рдХреЗ, рд╕рдмрд╕реЗ рдЖрдо рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рд╕реБрдЧрдо рд╣реИ - рдбреЗрдЯрд╛рдмреЗрд╕-рдЖрдзрд╛рд░рд┐рдд рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдПрдХ рд╡рд┐рддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рддреЛ рдпрд╣ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП DryadLINQ рд▓рдЧрддрд╛ рд╣реИред рд╣рдо
DryadLINQ рдХреЗ
рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ
: рдбреЗрдЯрд╛, рдШрдЯрдХреЛрдВ рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдХреНрд╡реЗрд░реА рдХреЗ рдХреНрд░рдо рдореЗрдВ DryadLINQ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИ ред
2. рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЪрд░рдг

рдЪрд┐рддреНрд░рдг рдХрд╛ рд╕реНрд░реЛрдд [5]
рдЪрд░рдг 1. рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬрд┐рд╕рдореЗрдВ LINQ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЪрд▓ рд░рд╣реА рд╣реИред LINQ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рджреЗрд░реА рд╣реЛ рд░рд╣реА рд╣реИ (рдЙрдиреНрд╣реЗрдВ рддрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдЕрдиреБрд░реЛрдз рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ)ред DryadLINQ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рднреА рд╕реНрдердЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪрд░рдг 2. LINQ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп, DryadLINQ- рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреНрд░рд┐рдЧрд░ тАЬToDryadTable ()тАЭ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред DryadLINQ рдЗрд╕ рдЯреНрд░рд┐рдЧрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдз рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
рдЪрд░рдг 3. рдбреНрд░рд╛рдпрдбрд▓реАрдирдХреНрдпреВ рд▓рд┐рдиреНрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдбреНрд░рд╛рдпрдб рдбрд┐рд╕реНрдЯреНрд░рд┐рдмреНрдпреВрдЯреЗрдб рдХреНрд╡реЗрд░реА рдкреНрд▓рд╛рди рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ: рд▓рд┐рдиреЗрдХреНрдпреВ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЯреНрд░реА рдХреЛ рдЙрдкрдХреЗрдВрджреНрд░реЛрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╡рд┐рд╖реНрдп рдХреЗ рдбреНрд░рд╛рдпрдб рдирд┐рд╖реНрдкрд╛рджрди рдЧреНрд░рд╛рдл рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЯреЗрдХреНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ; рджреВрд░рд╕реНрде рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд╡рд╛ рдбреЗрдЯрд╛ рдХреА рдПрдХ рдкреАрдврд╝реА рд╣реИ, рд╕рдмрд╕реЗ рдКрдкрд░ рдХреЛрдб рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреА рдкреАрдврд╝реА, рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдХреНрд░рдорд╛рдВрдХрдиред
рдЪрд░рдг 4. рдбреНрд░рд╛рдпрдбрд▓рд┐рдирдХреНрдпреВ рдЖрд╡реЗрджрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреНрд░рд╛рдпрдб рдЬреЙрдм рдореИрдиреЗрдЬрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рдЪрд░рдг 5ред рдиреМрдХрд░реА рдкреНрд░рдмрдВрдзрдХ рдЪрд░рдг 3 рдореЗрдВ рдЙрддреНрдкрдиреНрди рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░рдирдЯрд╛рдЗрдо рдЧреНрд░рд╛рдл рдмрдирд╛рддрд╛ рд╣реИред
рдЪрд░рдг 6. рд╡рд░реНрдЯреЗрдХреНрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЙрдирдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪреЛрдЯрд┐рдпреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдЪрд░рдг 7. рдбреНрд░рд╛рдпрдб рдХрд╛рд░реНрдп рдХреЗ рдЕрдВрдд рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдЖрдЙрдЯрдкреБрдЯ рддрд╛рд▓рд┐рдХрд╛ (рдУрдВ) рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪрд░рдг 8. рдЬреЙрдм рдореИрдиреЗрдЬрд░ рдбреНрд░рд╛рдпрдбрд▓рд╛рдЗрди рдХреНрд╡реЙрд▓рд┐рдЯреА рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдиреЛрдб рдкрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред
рдЪрд░рдг 9. рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдбреНрд░рд╛рдпрдбрд▓рд╛рдЗрди рдХреНрд╡реЙрд▓рд┐рдЯреА рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдереАред рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ DryadTable рд╣реИред рдбреНрд░рд╛рдИрдПрдбрдЯреЗрдмрд▓ рдЗрдореНрдкреНрд▓рд┐рдореЗрдВрдЯ IEnumerable <T>, рддрд╛рдХрд┐ рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдбреНрд░рд╛рдпрдбрдЯреЗрдмрд▓ рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдпрдорд┐рдд .NET рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рддрд░рд╣ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
3. рдбреНрд░рд╛рдпрдбрд▓реАрдирдХреНрдпреВ рдХрдВрдкрд╛рдЗрд▓рд░
DryadLINQ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХрд╛ рджрд┐рд▓ DryadLINQ
рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрдХрд▓рдХ рд╣реИ ред рдпрджрд┐ рд╣рдо SQL рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХреА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рджреГрд╢реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ DryadLINQ рд╕рдВрдХрд▓рдХ рдХреА рддреБрд▓рдирд╛ DBMS рдХреНрд╡реЗрд░реА рд╢реЗрдбреНрдпреВрд▓рд░ / рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рд╕рдВрдХрд▓рдХ рдбреНрд░рд╛рдпрдбрд▓реИрдирдХреНрдпреВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдбреНрд░рд╛рдпрдб рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рддрд░рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред DryadLINQ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдПрдХ
рд╕реНрдерд┐рд░ рдШрдЯрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ
рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХ рдЬреЛ рдЖрдкрдХреЛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП рд╡рд┐рднрд┐рдиреНрди рдиреАрддрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
3.1ред рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдХрд╛ рдЧреНрд░рд╛рдл
рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдмрд╛рдж рдореЗрдВ LINQ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХреНрдЬреАрдХреНрдпреВрд╢рди рдкреНрд▓рд╛рди рдЧреНрд░рд╛рдл (EPG) рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдИрдкреАрдЬреА
рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдЧреНрд░рд╛рдл рдХрд╛ рдПрдХ
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ (рдпрд╛рдиреА, рдЕрдВрддрд┐рдо рдпреЛрдЬрдирд╛ рдирд╣реАрдВ)ред
DryadLINQ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ EPG рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рднреА рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдпреЛрдЬрдирд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╡рд┐рддрд░рд┐рдд рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдЧреНрд░рд╛рдл рдХреЗ рдХреЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣
рдбреЗрдЯрд╛ рд╡рд┐рднрд╛рдЬрди рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ , рдФрд░ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣
.NET рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░
рдбреЗрдЯрд╛ рд╕рдВрдкреАрдбрд╝рди рдпреЛрдЬрдирд╛ рд╣реИ, рдпрджрд┐ рдХреЛрдИ рд╣реЛред
3.2ред DryadLINQ рдЕрдиреБрдХреВрд▓рди
рдмрджрд▓реЗ рдореЗрдВ, DryadLINQ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░
рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдПрдХрддреНрд░ рдХреА рдЧрдИ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд╛рд▓рдЪреА рдЕрдиреБрдорд╛рди рдФрд░
рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреЛрдиреЛрдВ
рд╕реНрдерд┐рд░ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИ
редрд╕реНрдереИрддрд┐рдХ рдЕрдиреБрдХреВрд▓рди
рд╕реНрдереИрддрд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рджреЛ рд╣реИрдВ: рдбрд┐рд╕реНрдХ рдореАрдбрд┐рдпрд╛ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░
рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ ред рдЬреЛ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЗрдВрдЯрд░-рдорд╢реАрди рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рддрд░рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдЕрдбрд╝рдЪрди рд╣реИред
рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕реНрдереИрддрд┐рдХ рдЕрдиреБрдХреВрд▓рди рддрдХрдиреАрдХ рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ:
- рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд┐рдВрдЧ (рдЗрди-рдкреНрд░реЛрд╕реЗрд╕ рдЗрдВрдЯрд░реИрдХреНрд╢рди): рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдПрдХ рдПрдХрд▓ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдиреЛрдб рдХреЗ рднреАрддрд░ рдЧрдгрдирд╛рдУрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ;
- I / O рдХрдореА : рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реАрдХреЗ рдХреЗ рдмрдЬрд╛рдп рд╡рд░реНрдЯреЗрдХреНрд╕ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреАрд╕реАрдкреА-рдкрд╛рдЗрдк рдФрд░ рдЗрди-рдореЗрдореЛрд░реА FIFO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - рдбрд┐рд╕реНрдХ рд╕реЗ / рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ / рдкрдврд╝рдирд╛ (рдбреНрд░рд╛рдпрдб рдбреЗрдЯрд╛ рдЪреИрдирд▓ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА);
- рдЕрддрд┐рд░реЗрдХ рдХреЛ рджреВрд░ рдХрд░рдирд╛ : рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ / рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИрд╢ рдФрд░ рд░реЗрдВрдЬ-рд╡рд┐рднрд╛рдЬрди рдЪрд░рдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдХреВрд▓рди
рдбрд╛рдпрдирд╛рдорд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░
рд╡рд┐рддрд░рд┐рдд рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдирд┐рд╖реНрдкрд╛рджрди рдЧреНрд░рд╛рдл рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХрддреНрд░рд┐рдд рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЖрдВрдХрдбрд╝реЛрдВ (рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЕрдиреБрдХреВрд▓рдХ рдЧреНрд░рд╛рдл рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рддрдХрдиреАрдХреЗрдВ рдиреАрдЪреЗ рджреА рдЧрдИ рд╣реИрдВ:
рдбрд╛рдпрдиреЗрдорд┐рдХ рдПрдХрддреНрд░реАрдХрд░рдг : рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдПрдХрддреНрд░реАрдХрд░рдг рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЕрднрд┐рдХрд▓рди рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдиреЛрдб, рд░реИрдХ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕реНрддрд░ рдкрд░ рдмрд╛рд░реА-рдмрд╛рд░реА рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдмрд╣реБрдд рдиреЛрдб рдФрд░ рд╕рдореБрдЪреНрдЪрдп рдбреЗрдЯрд╛ рдХреЗ рдЯреЛрдкреЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реНрдерд╛рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд░рдирдЯрд╛рдЗрдо (рдпрд╛рдиреА рдЧрддрд┐рд╢реАрд▓) рдкрд░ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИред
рдбреЗрдЯрд╛-рдирд┐рд░реНрднрд░ рд╡рд┐рднрд╛рдЬрди : рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди (рд╡рд┐рднрд╛рдЬрди) рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдбрд╛рдпрдиреЗрдорд┐рдХ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рд╕рд╛рде, рд╡рд┐рддрд░рд┐рдд рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ рдЗрдирдкреБрдЯ рд╕реЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред
4. рдЕрднреНрдпрд╛рд╕
рд╢рдмреНрдж рдЧрдгрдирд╛
DryadLINQ рдбреЗрдЯрд╛ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рдорд╛рдирдЪрд┐рддреНрд░ / рдХрдо рдореЙрдбрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧрдгрдирд╛ рдХрд╛ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1. рдирдХреНрд╢рд╛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ / рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ рдХреЛ рдХрдо рдХрд░рдирд╛ред
public static IQueryable<TResult> MapReduce<TSource, TMap, TKey, TResult>( this IQueryable<TSource> source, Expression<Func<TSource, IEnumerable<TMap>>> mapper, Expression<Func<TMap, TKey>> keySelector, Expression<Func<IGrouping<TKey, TMap>, TResult>> reducer) { return source .SelectMany(mapper) .GroupBy(keySelector) .Select(reducer); }
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2 рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреБрдЫ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд foo.pt (рд╡рд┐рднрд╛рдЬрди рддрд╛рд▓рд┐рдХрд╛) рдореЗрдВ рдбреНрд░рд╛рдпрдб рд╢рдмреНрдж рдЧрдгрдирд╛ рдХрд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдП рдЧрдП рдореИрдк / рдХрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2. рдбреНрд░рд╛рдпрдбрд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рд╢рдмреНрдж рдЧрдгрдирд╛ред
const string inputPath = @"file://\\machine\directory\foo.pt"; const string outputPath = @"file://\\machine\directory\count.pt"; PartitionedTable<LineRecord> inputTable = PartitionedTable.Get<LineRecord>(inputPath); var result = inputTable.MapReduce( r => r.Line.Split(' '), // r: rows w => w, // w: words g => new Tuple<string, int>(g.Key, g.Count())); // g: groups result.ToDryadPartitionedTable(outputPath);
рдбреНрд░рд╛рдпрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рдирдЯрд╛рдЗрдо рдЧреНрд░рд╛рдл рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

рдЪрд┐рддреНрд░рдг рдХрд╛ рд╕реНрд░реЛрдд [3]ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдЯреЗрдк (2) рдФрд░ (3) рдкрд░ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрд╢рди рдЧреНрд░рд╛рдл рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрдЯрд┐рдХреНрд╕ рдХреЗ рдмреАрдЪ рднреЗрдЬреЗ рдЧрдП рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЯреЗрдХреНрд╕ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЗ рдЯреЙрдкреЛрд▓реЙрдЬрд┐рдХрд▓ рд▓реЛрдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред
рдкреЗрдЬрд░реИрдВрдХ рдЧрдгрдирд╛
рд╕реВрдЪреАрдмрджреНрдз 3-5 рд╡рд┐рддрд░рд┐рдд рдкреЗрдЬрд░реИрдВрдХ рдЧрдгрдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 3. рдкреЗрдЬрд░реИрдВрдХ [5] рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
public static IQueryable<Rank> PRStep(IQueryable<Page> pages, IQueryable<Rank> ranks) { // join pages with ranks, and disperse updates var updates = from page in pages join rank in ranks on page.Name equals rank.Name select page.Disperse(rank); // re-accumulate return from list in updates from rank in list group rank.Rank by rank.Name into g select new Rank(g.Key, g.Sum()); }
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 4. DryadLINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЗрдЬрд░реИрдВрдХ рдХреА рдЧрдгрдирд╛ред рд╕реНрд░реЛрдд [рел]
const string inputPath = @"dfs://pages.txt"; const string outputPath = @"dfs://outputranks.txt"; var pages = PartitionedTable.Get<Page>(inputPath); var ranks = pages.Select(page => new Rank(page.Name, 1.0)); const int iterationCount = 1000; for (int iter = 0; iter < iterationCount; iter++) ranks = PRStep(pages, ranks); ranks.ToPartitionedTable<Rank>(outputPath);
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 5. рд╣реЗрд▓реНрдкрд░ рдХрдХреНрд╖рд╛рдПрдВред рд╕реНрд░реЛрдд [5] public class Page { public Page(Int64 name, Int64 degreee, Int64[] links) { this.Name = name; this.Degree = degreee; this.Links = links; } public Int64 Name { get; set; } public Int64 Degree { get; set; } public Int64[] Links { get; set; } public Rank[] Disperse(Rank rank) { Rank[] ranks = new Rank[Links.Length]; double score = rank.Value / this.Degree; for (int i = 0; i < ranks.Length; i++) ranks[i] = new Rank(this.Links[i], score); return ranks; } } public class Rank { public Rank(Int64 name, double rank) { this.Name = name; this.Value = rank; } public Int64 Name { get; set; } public double Value { get; set; } }
рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░
рдЗрди-рдореЗрдореЛрд░реА FIFO рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрдЧрд╛, рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ
рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдПрдХ рдЖрджреЗрд╢ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ Hadoop рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ (рд╣рдо [рд╕рд╛рджреЗ] Hadoop рдХреЗ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ) ред

рдЪрд┐рддреНрд░рдг рдХрд╛ рд╕реНрд░реЛрдд [5]
рдЪрд┐рддреНрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ : рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг 1> рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ 2> ...> рдкреБрдирд░рд╛рд╡реГрддрд┐ n рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрди-рдореЗрдореЛрд░реА FIFO рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред
5. рд╕реАрдорд╛
рдбреНрд░рд╛рдИрдб рдлреНрд░реЗрдорд╡рд░реНрдХ, Hadoop MapReduce рдХреЗ рд╡рд┐рдкрд░реАрдд,
рдПрдХ рд╡рд┐рддрд░рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдПрдХ
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ / рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХреЛ
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЛ рдирд╣реАрдВ рдорд┐рд▓рд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдЗрд╕ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ,
DryadLINQ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЙрдбрд▓ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЕрднреА рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдбреНрд░рд╛рдпрдб рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ LINQ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рди рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпрдХреНрд╖ рджрд╛рдпрд┐рддреНрд╡ рд▓реЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ EPG рдбреЗрдЯрд╛ рдЧреНрд░рд╛рдл рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред ред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдбреНрд░рд╛рдпрдб рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк рд╕рдордп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛: рдбреНрд░рд╛рдИрдкреИрдбрд▓рд╛рдЗрди рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реАрдкреАрдпреВ рдЪрдХреНрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдо рджрд╛рдпрд┐рддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред
рдирддреАрдЬрддрди, рдПрдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдиреЛрдб рдкрд░ рдХрдИ рдбреНрд░рд╛рдпрдбрд▓рд╛рдЗрди рдХреНрд╡реЗрд╢реНрдЪрдВрд╕ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд╛ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕реНрддрд░ рдкрд░ рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдкрд░ рдЕрдзрд┐рдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВ рдЕрднреА рднреА рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдбреНрд░рд╛рдпрдб-рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддреА рд╣реИред
рдПрдХ рдЕрдиреНрдп рдЯрд┐рдкреНрдкрдгреА
рд╕реНрдЯреЗрдЯрд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ
, рдЬреЛ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдбреНрд░рд╛рдпрдб рд░рдирдЯрд╛рдЗрдо рдШрдЯрдХреЛрдВ рдХреЗ рдЖрдВрддрд░рд┐рдХ "рдорд╛рдорд▓реЛрдВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреА рдЯреЛрдкреЛрд▓реЙрдЬреА, рдбреЗрдЯрд╛ рд╡рд┐рднрд╛рдЬрди рдпреЛрдЬрдирд╛ред
рдкреНрд░рд▓реЗрдЦрди рд╕реЗ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбрд╛рдпрдиреЗрдорд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рд╣реИрдВ: рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдЗрдВрдЬрди (рдбреНрд░рд╛рдпрдб рд░рдирдЯрд╛рдЗрдо) рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЙрдбрд▓ (рдбреНрд░рд╛рдпрдбрд▓рд╛рдЗрди) рдХреЗ рд╕реНрддрд░ рдкрд░ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
DryadLINQ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рджреЛрдиреЛрдВ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИред [3]
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЕрдВрд╢ рд╕реЗ, рдпрд╣ рдкреНрд░рд╢реНрди рддреБрд░рдВрдд рдЙрдарддрд╛ рд╣реИ: рдбрд╛рдпрдирд╛рдбрд▓рд┐рдирд┐рдХ рдХреНрдпреВ рдХреЗ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдореЗрдВ рдбрд╛рдпрдиреЗрдорд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдХрд╛рд░реНрдп рдХреНрдпреЛрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╢рдмреНрджрд╛рд░реНрде рдореЗрдВ, рдбрд╛рдпрдиреЗрдорд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреНрд░рд╛рдИрдбрд┐рдирдХреНрдпреВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЕрдВрддрд┐рдо рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд░рдирдЯрд╛рдЗрдо рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕реНрддрд░ рдкрд░ред
6. рд▓рд╛рдн
рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЖрдзреБрдирд┐рдХ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ, LINQ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рдХрд╛рд╕ред
рдордЬрдмреВрдд рдбреЗрдЯрд╛ рдЯрд╛рдЗрдкрд┐рдВрдЧ
рдбреНрд░рд╛рдпрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдбреЗрдЯрд╛ рдХреНрд░рдорд╛рдВрдХрди
рдЪреИрдирд▓реЛрдВ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд░рдордмрджреНрдз / рдбрд┐рд╕рд░рд▓рд╛рдЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдорд╛рдХрд▓рди
DryadLINQ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЪрд▓рддреА рд╣реИред рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдВрдкреНрдпреВрдЯрд░реНрд╕ рдХреЗ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП PLINQ (рд╕рдорд╛рдирд╛рдВрддрд░ LINQ) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди
рд░рдирдЯрд╛рдЗрдо рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдбреНрд░рд╛рдпрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЕрдиреБрдХреВрд▓рди рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдБрдХрдбрд╝реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░рд┐рдЪрд┐рдд рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг
DryadLINQ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ MPP рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк MS Visual Studio, рд╕рд╛рде рд╣реА VS рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ: Intellisense, рдХреЛрдб рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ, рдПрдХреАрдХреГрдд рдбрд┐рдмрдЧрд┐рдВрдЧ, рдмрд┐рд▓реНрдб, рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рдмрдВрдзрдиред
.NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде 100% рд╕рдВрдЧрдд
DryadLINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА .NET рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рд╕реАрдПрд▓рдПрд╕-рд╕рдВрдЧрдд рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдбреНрд░рд╛рдпрдбрд▓рд╛рдЗрди рдПрдХ .net рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЙрдбрд▓ рд╣реИ, рдЬреЛ рдореМрдЬреВрджрд╛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрдЯреИрдХ, рдПрдХреНрд╕рдкреНрд░реЗрд╕рд┐рд╡ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реИ, рдЬреЛ рд▓реЗрдЦрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, DryadLINQ рдореЙрдбрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдореЗрдВ рдХреНрд╡реЗрд░реАрдЬрд╝ рд▓рд┐рдЦрдиреЗ, рдХреНрд╡реЗрд░реА рдХреА рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдХреГрддрд┐ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ, рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рдЙрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ LINQ- рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредрдЬреЛ рд▓реЛрдЧ рдКрдм рдЪреБрдХреЗ рд╣реИрдВ (рдпрд╛ рдмреЛрдирд╕)рдЪрдХреНрд░ рдХреЗ рддреАрд╕рд░реЗ
рдЕрдВрддрд┐рдо рднрд╛рдЧ рдореЗрдВ, рдбреНрд░рд╛рдпрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рддреБрд▓рдирд╛ рдЕрдиреНрдп рдПрдордкреАрдкреА "рдЯреВрд▓" рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рдПрдЧреА - рд░рд┐рд▓реЗрд╢рдирд▓ рдбреАрдмреАрдПрдордПрд╕, рдЬреАрдкреАрдпреВ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ, рдФрд░ рд╣рдбреЛрдк рдкреНрд▓реЗрдЯрдлреЙрд░реНрдоред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╕реЗ рдЖрдЧреЗ 'рд╡рд┐рдВрдбреЛрдЬ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА' рдФрд░ рдХрд░реНрдо рдХреЗ рдкрддрди рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ 'рдЖрдХрд░реНрд╖рдХ' рдмрд╣рд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╕реВрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА
[рез]
рдбреНрд░рд╛рдпрдбрд▓рд╛рдЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ ред Microsoft рдЕрдиреБрд╕рдВрдзрд╛рдиред
[реи] рдПрдоред рдИрд╕рд░ рдФрд░ рд╡рд╛рдИред рдпреВред
рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рддрд░рд┐рдд рдбреЗрдЯрд╛-рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ ред рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдмрдВрдзрди рдкрд░ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕рдореНрдореЗрд▓рди (SIGMOD), 2009 рдореЗрдВред
[рей] рд╡рд╛рдИред рдпреВред, рдПрдоред рдЗрд╕рд╛рд░реНрдб, рдбреАред рдлреЗрдЯрд░реНрд▓реА, рдПрдоред рдмреБрдбрд┐рдпреВ, рдпреВред рдПрд░рд▓рд┐рдВрдЧрд╕рди, рдкреАрдХреЗ рдЧреБрдВрдбрд╛ рдФрд░ рдЬреЗред рдХреНрдпреВрд░реАред
DryadLINQ: рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рддрд░рд┐рдд рдбреЗрдЯрд╛-рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ ред рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (OSDI), 2008 рдореЗрдВ 8 рд╡реАрдВ рд╕рдВрдЧреЛрд╖реНрдареА рдХреА рдХрд╛рд░реНрдпрд╡рд╛рд╣реА рдореЗрдВред
[рек] рд╡рд╛рдИред рдпреВред, рдПрдоред рдЗрд╕рд╛рд░реНрдб, рдбреАред рдлреЗрдЯрд░реНрд▓реА, рдПрдоред рдмреБрдбреАрдпреВ, рдпреВред рдПрд░рд▓рд┐рдВрдЧрд╕рди, рдкреАрдХреЗ рдЧреБрдВрдбрд╛, рдЬреЗред рдХреНрдпреБрд░реА, рд░рд┐рдкреЛрд░реНрдЯ MSR-TR-реирежреж74- ,рек, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд░рд┐рд╕рд░реНрдЪ, реирежреж 2008ред
[рел] рдЬрд┐рдирдпрд╛рдВрдЧ рд▓реАред
Dryad / Dryad LINQ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдХреЛ рдпреБрдЖрди рдпреВ рдФрд░ рдорд╛рдЗрдХрд▓ рдЗрд╕рд╛рд░реНрдб , 2009
рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред