рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рд▓реЗрдЦрд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ (рдИрдЖрд░рдкреА, рд╕реАрдЖрд░рдПрдо, рдбрдмреНрд▓реНрдпреВрдПрдордПрд╕, рдПрдордИрдПрд╕, рдмреА 2 рдмреА ...) рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдореМрдЬреВрджрд╛ рд╕рд┐рд╕реНрдЯрдо рдЬрдЯрд┐рд▓ рд╣реИрдВред рд╡реЗ рдПрдХ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ, рдФрд░ рд╕реИрдХрдбрд╝реЛрдВ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реНрдерд┐рддрд┐ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ "рд╕рддреНрдп рдХрд╛ рд╕реНрд░реЛрдд" рдкреНрд░рд╛рдердорд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд┐рдВрдЯ) рдХрд╛ рдПрдХ рдХрд╛рд▓рд╛рдиреБрдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЖрджреЗрд╢рд┐рдд рдкрддреНрд░рд┐рдХрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдФрд░ рдпрд╣ рдирд┐рдпрдо рдСрдбрд┐рдЯ рдХрд┐рдП рдЧрдП рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдордирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдмреИрдХрдбреИрдо рд╕реБрдзрд╛рд░ рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВ)ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрддреНрд░рд┐рдХрд╛ рдмрд▓ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ 20% рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдордзреНрдпрд╡рд░реНрддреА рд╕рд╛рд░ рдФрд░ рд╕рдореБрдЪреНрдЪрдп рд╣реИрдВ, рдЬреЛ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рдиреНрд╣реЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрджрд┐ рд╣рдо рд╕реНрд░реЛрддреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВ (рдбреЗрдЯрд╛ рдЕрддрд┐рд░реЗрдХ рдХреЛ рдЦрддреНрдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдореБрдЪреНрдЪрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ), рдФрд░ рд╕рднреА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реАрдзреЗ рдкреНрд░рд╛рдердорд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рдзрд╛рд░рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ DBMS рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдИрдЖрд░рдкреА рдорд┐рд▓реЗрдЧрд╛ред рдкреНрд░рджрд░реНрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджрд┐рдпрд╛
рдЬрд╛рддрд╛ рд╣реИ , рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдШреЛрд╖рд┐рдд рдПрд╕рдХреНрдпреВрдПрд▓ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧреА, рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбреЗрдиреЛ
рд░рдирдЯрд╛рдЗрдо (рдиреЛрдбреНрдпреВрдЬ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ) рдореЗрдВ рд╕рд░рд▓рддрдо рдлрд╝рд╛рдЗрд▓ рдбреАрдмреАрдПрдордПрд╕ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреНрдпреЛрдВ рд╣реИ
1) рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реНрдерд┐рддрд┐ + рдбреЗрдЯрд╛ рдЕрддрд┐рд░реЗрдХ рдЦрд░рд╛рдм рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рдирд┐рд░рдВрддрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ (рд╕рдВрддреБрд▓рди рдирд╣реАрдВ рдЬреБрдЯрддрд╛ рд╣реИ) рдФрд░ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
2) рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдФрд░ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдбреЗрдЯрд╛ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдареЛрд░ рд╕рдВрдмрдВрдзрдкрд░рдХ рдпреЛрдЬрдирд╛ рдмрд┐рдЧ рдбреЗрдЯрд╛, рд╡рд┐рд╖рдо рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдФрд░ рддреЗрдЬреА рд╕реЗ рдмрджрд▓рд╛рд╡ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдорд╣рдВрдЧреА рд╣реИ - рдЬреЛ рдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рд╣реИред рд╣рдо рдЙрдирдХреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ, рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрд░рдордмрджреНрдз, "рдирдП рд╕реЗ рдкреБрд░рд╛рдиреЗ" рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрднреА рдирд╣реАрдВред рдпрд╣ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рд╕реЗ рд╕реАрдзреЗ рдПрдХрд▓-рдкрд╛рд╕ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрд╛рдВрд╢ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ рдЕрдиреНрдп рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред
3) SQL рдкреБрд░рд╛рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рдордп рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЛ рдорд╛рдирддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╣реИ - рдмрд┐рдЧ рдбреЗрдЯрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдХреБрдЫ рдкрд╣рд▓реЗ рд╣реА рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХреА рдереЛрдбрд╝реА рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░, рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдЪреЗрдд рдЪрд┐рдВрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
4) рдЖрдзреБрдирд┐рдХ рдкреАрдПрд▓ рдЖрдкрдХреЛ рдПрдХ рдЙрддреНрддрд░рджрд╛рдпреА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд▓реИрдкрдЯреЙрдк рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд▓рд╛рдЦреЛрдВ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрд░рдбреАрдмреАрдПрдордПрд╕ рдмрд╕ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рд╣рдо рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ - рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдкрд╛рд░реНрдХ рдХреНрд▓рд╕реНрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдкреГрд╖реНрдарднреВрдорд┐
рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ (рд▓реЗрдЦрд╛, рдпреЛрдЬрдирд╛, рдбрдмреНрд▓реНрдпреВрдПрдордПрд╕) рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛: рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдХрдард┐рдирд╛рдИ, рдФрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдЧрд┐рд░рд╛рд╡рдЯ рдЬрдм рдпреЗ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЧрдП рдереЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдЙрди рдкрд░ рд▓рд╛рдж рджреА рдЬрд╛рддреА рд╣реИрдВ:
1) рд╢реНрд░рд╡реНрдпрддрд╛ред рд╕рднреА рдкреНрд░рд╛рдердорд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдмрд╣реБрдд рд╣реА рдордирдорд╛рдирд╛ рд╣реИ, рд╡рдпрд╕реНрдХ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╕рдВрд╕реНрдХрд░рдгрдХрд░рдг рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рд╡рд┐рд╢реЗрд╖ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрд░реЛрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ "рд╕рддреНрдп рдХрд╛ рд╕реНрд░реЛрдд" рд╣реИ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рдбреЗрдЯрд╛ рдЗрд╕реЗ рд╕реЗ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
2) рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХреНрд░рдп рдЖрджреЗрд╢ рд░реЗрдЦрд╛ рдмрдирд╛рддреЗ рд╕рдордп, рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЙрддреНрдкрд╛рдж рдХреА рдХреАрдордд рдХреА рдЧрдгрдирд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЦрд╛рддреЗ рдореЗрдВ рдЫреВрдЯ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХ рдХреА рд╕реНрдерд┐рддрд┐, рдЙрд╕рдХреЗ рд╡рд░реНрддрдорд╛рди рд╢реЗрд╖ рд░рд╛рд╢рд┐, рдЦрд░реАрдж рдЗрддрд┐рд╣рд╛рд╕, рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╢реЗрдпрд░реЛрдВ рдЖрджрд┐ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЧрдгрдирд╛ "рдордХреНрдЦреА рдкрд░" рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд░реНрдз-рддреИрдпрд╛рд░ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдореМрдЬреВрджрд╛ рд╕рд┐рд╕реНрдЯрдо рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ (рдкреЛрд╕реНрдЯрд┐рдВрдЧ), рд╕рд╛рде рд╣реА рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рд╕рдореБрдЪреНрдЪрдп (рд╕рдВрдЪрдп рд░рдЬрд┐рд╕реНрдЯрд░, рд╕рдордп рд╕реНрд▓рд╛рдЗрд╕, рд╡рд░реНрддрдорд╛рди рд╢реЗрд╖, рд╕рд╛рд░рд╛рдВрд╢ рдкреЛрд╕реНрдЯрд┐рдВрдЧ, рдЖрджрд┐) рдХреА рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рд╛рд░ рдЬрдорд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреА рдорд╛рддреНрд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ 80% рддрдХ рд╣реИ, рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде - рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕рдореБрдЪреНрдЪрдп рдХреЗ рд╕рд╣реА рдЕрджреНрдпрддрди рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдореБрдЪреНрдЪрдп рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреА рдкрд░рд╕реНрдкрд░ рд╕реНрдерд┐рддрд┐ рд╣реИред
3) рд▓реЗрдирджреЗрди рдкреНрд░рджрд░реНрд╢рдиред рдХрд┐рд╕реА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рднреА рд╕рдореБрдЪреНрдЪрдп рдХреЛ рдЧрд┐рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрд╡рд░реБрджреНрдз рдСрдкрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдЧреНрд░реАрдЧреЗрдЯ рдЕрдкрдбреЗрдЯ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдмрд╕реЗ рджрд░реНрджрдирд╛рдХ рдмрд┐рдВрджреБ рд╣реИ, рдФрд░ рдЬрдм рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдЯреВрдЯрдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛ "рдХреЛрд░реЛрдб" рд╣реЛрдЧрд╛, рдпрд╛рдиреА, рдПрдЧреНрд░реАрдЧреЗрдЯреНрд╕ рдЕрдм рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдпрд╣ рд╕реНрдерд┐рддрд┐ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рд╕рдорд░реНрдерди рдХрд╛ рд╕рдВрдХрдЯ рд╣реИред
рд╣рдо рдирдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
1) рднрдВрдбрд╛рд░рдгред рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЖрдзрд╛рд░ рдПрдХ рдХрд╛рд▓рд╛рдиреБрдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдСрд░реНрдбрд░ рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рдкрддреНрд░рд┐рдХрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рджреЛрд╖ рд╕рд┐рджреНрдзрд┐ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ, рдмрд╕ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрднрд┐рдирдпред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВред рд▓реЗрдирджреЗрди / рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ / рд╢реЗрд╖ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рдордЬрдмреВрдд рдЙрддреНрддреЗрдЬрдХ рдмрдпрд╛рди, рдпрд╣ рдЬреАрд╡рди рдореЗрдВ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ
рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рд╣реИ )ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрдИ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВ:
{
"sys": {
"code": "partner.1", // - ,
"ts": 1578263624612, //
"id": "partner.1^1578263624612", // ID
"cache": 1 //
},
...
}
code ts , , тАФ .
cache, -, -,
id,
code.
, . () тАФ ,
ts. , - , ( , , ).
2) . id. ┬лsql foreign key┬╗ тАФ , , , ,
id . . , , ( тАФ , ).
3) . , (.. ) , , 2 тАФ
. , , . тАФ , . . тАФ , 1, .
, - тАФ , .
4) . тАФ , , , тАФ . - тАФ filter(), reduce(), get(), gettop(), . JOIN, , , , . , , ,
id / code, , ( ).
5) , . :
- cache, reduce() -, -;
- id / code, ;
- reduce() , , .
, - ┬л┬╗ , , , . , , ,
filter() ,
reduce() тАФ . .
6) 3- . тАФ . ,
reduce() , тАФ . тАФ , (.. ). -, . fullscan . тАФ , - , .
7) . -. тАФ - , ( ), тАФ .
, - . TypeScript ,
Deno тАФ TypeScript
WASM,
Rust API, ( ).
2- , JSON, "\
x01", . API 3- :
type Document = any
type Result = any
public async get(id: string): Promise<Document | undefined>
public async gettop(code: string): Promise<Document | undefined>
public async reduce(
filter: (result: Result, doc: Document) => Promise<boolean>,
reducer: (result: Result, doc: Document) => Promise<void>,
result: Result
): Promise<Result>
id,
code, , , .
filter().reduce(), , тАФ , тАФ .
reduce() , .
,
filter reducer, - . , ,
get() reduce(). ( ) (. ).
. , . , тАФ , .
{
"sys": {
"code": "partner.1",
"ts": 1578263624612,
"id": "partner.1^1578263624612",
"cache": 1
},
"type": "partner.retail",
"name": " "
}
{
"sys": {
"code": "invent.1",
"ts": 1578263624612,
"id": "invent.1^1578263624612",
"cache": 1
},
"type": "invent.material",
"name": " 20"
}
type тАФ , , .
code тАФ .
{
"sys": {
"code": "purch.1",
"ts": 1578263624613,
"id": "purch.1^1578263624613"
},
"type": "purch",
"date": "2020-01-07",
"partner": "partner.3^1578263624612",
"lines": [
{
"invent": "invent.0^1578263624612",
"qty": 2,
"price": 232.62838134273366
},
{
"invent": "invent.1^1578263624917",
"qty": 24,
"price": 174.0459600393788
}
]
}
(
purch | sale), c ( ).
, , .
import { FuncDB } from './FuncDB.ts'
const db = FuncDB.open('./sample_database/')
let res = await db.reduce(
async (_, doc) => doc.type == 'sale', //
async (result, doc) => {
result.doccou++
doc.lines.forEach(line => { //
result.linecou++
result.amount += line.price * line.qty
})
},
{amount: 0, doccou: 0, linecou: 0} //
)
console.log(`
amount total = ${res.amount}
amount per document = ${res.amount / res.doccou}
lines per document = ${res.linecou / res.doccou}`
)
, Map.
class ResultRow { //
invent_name = ''
partner_name = ''
debit_qty = 0
debit_amount = 0
credit_qty = 0
credit_amount = 0
}
let res = await db.reduce(
async (_, doc) => doc.type == 'purch' || doc.type == 'sale',
async (result, doc) => {
// await -
const promises = doc.lines.map(async (line) => {
const key = line.invent + doc.partner
let row = result.get(key)
if (row === undefined) {
row = new ResultRow()
// ( )
row.invent_name = (await db.get(line.invent))?.name ?? ' not found'
row.partner_name = (await db.get(doc.partner))?.name ?? ' not found'
result.set(key, row)
}
if (doc.type == 'purch') {
row.debit_qty += line.qty
row.debit_amount += line.qty * line.price
} else if (doc.type == 'sale') {
row.credit_qty += line.qty
row.credit_amount += line.qty * line.price
}
})
await Promise.all(promises)
},
new Map<string, ResultRow>() // ()
)
, . , , . , тАФ тАФ fullscan, .
:
тАГ
: 100 + 100 +
100 .тАГ
: 10 + 10 +
10 .Intel Celeron CPU N2830 @ 2.16 GHzтАФ , , . , 10 .
- 100 . 11.1 :file: database_immutable.json:
тАГ100200 docs parsed (0 errors)
тАГ50018 docs processed (0 errors)
тАГ11.098s elapsed
file: database_current.json:
тАГ10020 docs parsed (0 errors)
тАГ4987 docs processed (0 errors)
тАГ1.036s elapsed
amount total = 623422871.2641689
amount per document = 11389.839613851627
lines per document = 3.6682561432355896
file: database_current.json:
тАГ10021 docs parsed (0 errors)
тАГ4988 docs processed (0 errors)
тАГ1.034s elapsed
amount total = 623433860.2641689
amount per document = 11389.832290707558
lines per document = 3.6682073954983925
, . , :
тАГ
8.8s тАФ JSON, "\
x01"
тАГ
1.9s тАФ JSON
тАГ
0.4s тАФ +
Deno, , unicode, V8 - . , WASM/Rust , , JSON , тАФ . .
- , . 3 , , , , , fullscan. , :
- 100 . 13.3 :file: database_immutable.json:
тАГ100200 docs parsed (0 errors)
тАГ100000 docs processed (0 errors)
тАГ13.307s elapsed
file: database_current.json:
тАГ10020 docs parsed (0 errors)
тАГ10000 docs processed (0 errors)
тАГ1.296s elapsed
invent name | partner name | debet qty | debet amount | credit qty | credit amount | balance amount
===========================================================================
invent 92 | partner 50 | 164 | 34795.53690513125 | 338 | 64322.24591475369 | -29526.709009622435
invent 44 | partner 32 | 285 | 57382.115033253926 | 209 | 43572.164405352596 | 13809.95062790133
invent 95 | partner 32 | 340 | 73377.08274368728 | 205 | 42007.69685305944 | 31369.38589062784
invent 73 | partner 32 | 325 | 57874.269249290744 | 300 | 58047.56414301135 | -173.29489372060198
invent 39 | partner 32 | 333 | 69749.88883753444 | 415 | 86369.07805766111 | -16619.189220126675
invent 80 | partner 49 | 388 | 74965.03809449819 | 279 | 51438.03787960939 | 23527.0002148888
invent 99 | partner 49 | 337 | 69360.84770099446 | 292 | 58521.2605634746 | 10839.587137519862
invent 38 | partner 45 | 302 | 63933.21291162898 | 217 | 44866.95192796074 | 19066.26098366824
invent 34 | partner 45 | 343 | 69539.75051653324 | 205 | 41155.65340219566 | 28384.09711433758
invent 41 | partner 45 | 278 | 63474.209440233106 | 258 | 45246.446456763035 | 18227.76298347007
< tail skipped >
- , 2 , тАФ
2.6s. , , , .
, , , тАФ . , (
-,
EDI, - ), .
UPD1) ,
VolCh .
2) CouchDB,
apapacy .
PS