
рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛ рдЬрдм рд╣реЗрдбрд▓рд╛рдЗрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рддреА рд╣реИ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдж рдЯреЗрдХреНрд╕рд╛рд╕ рдЪреЗрдиреНрд╕реЙ рдирд░рд╕рдВрд╣рд╛рд░ред" рдЗрд╕рд▓рд┐рдП, рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ DBMS рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдирд┐рдХ рдЦреЛрдЬ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдерд╛ред
рдкреГрд╖реНрдарднреВрдорд┐рдЪрд▓реЛ рд╕реНрдерд╛рдирд┐рдХ рдЦреЛрдЬ рдХреЗ рдорд╣рддреНрд╡ рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рдкрд░ рдХрд┐ рдПрдХ рдПрдХреАрдХреГрдд рд╕реНрдерд╛рдирд┐рдХ рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рдЦреБрд▓рд╛ DBMS рд▓реЗрдирд╛ рдХреНрдпреЛрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рддреЛ рдЙрддреНрддрд░ рд╣реЛрдЧрд╛: "рдпрджрд┐ рдЖрдк рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░реЗрдВ" (C)ред рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рд╣рдо рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реНрдерд╛рдирд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдУрд╡рд░рд╡реЙрд▓реНрдЯреЗрдЬ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд▓рд╛рдЧрддреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдзрд╛рд░рдг рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ DBMS рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо
OpenLink Virtuoso рдХреЗ рдЦреБрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рд╕рд╢реБрд▓реНрдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╕реНрдерд╛рдирд┐рдХ рдЕрдиреБрдХреНрд░рдордг рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред рдХреНрдпреЛрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ DBMS? рд▓реЗрдЦрдХ рдЙрд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рддреЗрдЬ, рдЖрд╕рд╛рди, рд╢рдХреНрддрд┐рд╢рд╛рд▓реАред рдХреЙрдкреА-рд░рди-рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд рдЙрдкрдХрд░рдг, рдХреЛрдИ рд╕реА-рдкреНрд▓рдЧ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреЗрд╡рд▓ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рдкрд╛рда рд╕рдВрдкрд╛рджрдХред
рд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рдХрд╛рд░рд╣рдо рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓-рдХреЛрдб (рдмреНрд▓реЙрдХ) рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрдХреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВрдЧреЗред
рдкрд┐рдХреНрд╕реЗрд▓-рдХреЛрдб рдЗрдВрдбреЗрдХреНрд╕ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рд╡реНрдпрд╛рдкрдХ рд╡рдХреНрд░ рдХрд╛ рдПрдХ рд╕рдордЭреМрддрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ 2-рдЖрдпрд╛рдореА рдЦреЛрдЬ рд╕реНрдерд╛рди рдореЗрдВ рдЧрд▓рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВ:
- рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЦреЛрдЬ рд╕реНрдерд╛рди рдХреЛ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ
- рд╕рднреА рдмреНрд▓реЙрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
- рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдмреНрд▓реЙрдХ рд╕рдВрдЦреНрдпрд╛ рджреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╕реНрдерд┐рдд рд╣реИ
- рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп, рд╕реАрдорд╛ рдХреЛ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдпрд╛ рдПрдХ рдирд┐рдпрдорд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рд╕реВрдЪрдХрд╛рдВрдХ (рдмреА-рдЯреНрд░реА) рд╕реЗ рдмреНрд▓реЙрдХреЛрдВ рдХреА рдПрдХ рд╕рддрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП, рдЙрди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрдирдХреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ:
- рд╕реАрдорд┐рдд рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ рдЗрдЧреНрд▓реВ (рдпрд╛ рдЕрдиреНрдп рд╡реНрдпрд╛рдкрдХ рд╡рдХреНрд░ )ред рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЛ рдПрдХ рдЬрд╛рд▓реА рд╕реЗ рдХрд╛рдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЪрд░рдг (рдЖрдорддреМрд░ рдкрд░) рдЕрдиреБрдХреНрд░рдорд┐рдд рд╡рд╕реНрддреБ рдХрд╛ рдЪрд╛рд░рд┐рддреНрд░рд┐рдХ рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ X ... xY ... yZ ... z ... рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕реЗрд▓ рдирдВрдмрд░ рдХреЛ gluing рджреНрд╡рд╛рд░рд╛ред
- HEALPix ред рдпрд╣ рдирд╛рдо рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╕рдорд╛рди рдХреНрд╖реЗрддреНрд░ iso-Latitude Pixelisation рд╕реЗ рдЖрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдЧреЛрд▓рд╛рдХрд╛рд░ рд╕рддрд╣ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ рддрд╛рдХрд┐ рдЗрдЧреНрд▓реВ рдХреЗ рдореБрдЦреНрдп рджреЛрд╖ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП - рд╡рд┐рднрд┐рдиреНрди рдЕрдХреНрд╖рд╛рдВрд╢реЛрдВ рдкрд░ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рддрд╣рдд рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВред рдЧреЛрд▓реЗ рдХреЛ 12 рд╕рдорд╛рди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЖрдЧреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ 4 рдЙрдк-рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░рдг рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рд╣реИред
- рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рддреНрд░рд┐рдХреЛрдгреАрдп рдЬрд╛рд▓ ( HTM )ред рдпрд╣ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рддреНрд░рд┐рднреБрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЧреЛрд▓реЗ рдХреЗ рдкрд╛рд╕ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ, рдЬреЛ 8 рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ 4 рдЙрдк рддреНрд░рд┐рдХреЛрдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред

- рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдмреНрд▓реЙрдХ рдЗрдВрдбреЗрдХреНрд╕ рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬреАрдЖрд░рдЖрдИрдбреА рд╣реИред рд╕реНрдерд╛рдирд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдмрд╣реБрдЖрдпрд╛рдореА рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ:
- рдЧреНрд░рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЛ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдкрд░рд┐рдгрд╛рдореА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдПрдХ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рдиреЛрдВ рдХреЛ "рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реЗрд▓ рдирдВрдмрд░ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ
- рдпрджрд┐ "рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛" рдмрдбрд╝реА рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрддрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдПрдХ рд▓рд╛ рдЯреНрд░реА
- рдмрджрд▓рддреЗ рд╕рдордп, рдЬрд╛рд▓реА рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдпрд╛ рд╕реНрддрдВрднреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдпрд╛ рд╡рд┐рд▓рдп рдХрд░ рд╕рдХрддреА рд╣реИ
Z-рдСрд░реНрдбрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд 3-рд╕реНрддрд░реАрдп GRID рдХрд╛ рдЙрдкрдпреЛрдЧ DB2 рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ 4-рд╕реНрддрд░ GRID рдЬреЛ рд╣рд┐рд▓реНрдмрд░реНрдЯ рд╡рдХреНрд░ рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ MS SQLServer 2008 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╕рднреА minuses рдХреЗ рд╕рд╛рде, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдореБрдЦреНрдп рдПрдХ, рд╢рд╛рдпрдж, рдЧреИрд░-рдЕрдиреБрдХреВрд▓рди рдХреНрд╖рдорддрд╛ рд╣реИ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмреНрд▓реЙрдХ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдкреНрд▓рд╕рд╕ рд╣реИрдВ: рд╕рд╛рджрдЧреА рдФрд░ рд╕рд░реНрд╡рд╛рд╣рд╛рд░реАред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреЗрдбрд╝ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред рдЬрдм рд╣рдо рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдЕрдВрдХреЛрдВ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╣рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдорд┐рд▓рддреА рд╣реИред
рдЗрд╕ рдкрддреНрд░ рдореЗрдВ, рд╣рдо рдЗрд╕рдХреА рд╕рд░рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреИрди (+1
ystein ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ PL / SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╕реНрддреЗ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реА-рдкреНрд▓рдЧ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдЪрдЯреАрдПрдо рдпрд╛ рд╣рд┐рд▓реНрдмрд░реНрдЯ рд╡рдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рдбреЙрдЯреНрд╕ рдХреНрдпреЛрдВ? рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмреНрд▓реЙрдХ рдЗрдВрдбреЗрдХреНрд╕ рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рдЕрдВрдХ рдХреЗ рд▓рд┐рдП рд░реЗрдЦрд╛рдкреБрдВрдЬ рддреБрдЪреНрдЫ рд╣реИ, рдФрд░ рдмрд╣реБрднреБрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рд╡рд┐рд╖рдп рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛,
- рд╣рдо рд╢реБрд░реБрдЖрдд (0,0) рдФрд░ рдЪрд░рдг 1 рдХреЗ рд╕рд╛рде рдЬрд╛рд▓реА 4000X4000 рдХреЗ рдиреЛрдбреНрд╕ рдкрд░ рдЕрдВрдХ рдбрд╛рд▓рддреЗ рд╣реИрдВред
- рд╣рдореЗрдВ 16 рдорд┐рд▓рд┐рдпрди рдЕрдВрдХреЛрдВ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдорд┐рд▓рддрд╛ рд╣реИред
- 10X10 рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдЗрдВрдбреЗрдХреНрд╕ рд╕реЗрд▓ рд▓реЗрдВ,
- рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ 100 рдЕрдВрдХ рдореЗрдВ 400x400 рд╕реЗрд▓ рд╣реИрдВред
рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд▓рд┐рдП, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЕрдВрдХ рд╕реЗрд▓ рдХреЗ рдЕрдВрджрд░ рдХреИрд╕реЗ рд╕реНрдерд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реА рдирд┐рдпрдорд┐рддрддрд╛ рд╣рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧреАред
рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
AWK рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рдЗрд╕реЗ 'data.awk' рд╣реЛрдиреЗ рджреЗрдВ):
BEGIN { cnt = 1; sz = 4000;
рд╕рд░реНрд╡рд░- рдХрдВрдкрдиреА рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрд┐рд▓реНрдб рд▓реЗрдВред
рд▓реЗрдЦрдХ рдиреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 7.0.0 (x86_64) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдЖрдк рдХреЛрдИ рдЕрдиреНрдп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред - рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ Microsoft Visual C ++ 2010 Redistributable Package (x64)
- рд╣рдо рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреА 'рдбреЗрдЯрд╛рдмреЗрд╕' рд╕реЗ рд╕рдВрдЧреНрд░рд╣ 'рдмрд┐рди' рдФрд░ virtuoso.ini рд╕реЗ libeay32.dll, ssleay32.dll, isql.exe, virtuoso-t.exe рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред
- рд╕рд░реНрд╡рд░ рдХреЛ 'рд╕реНрдЯрд╛рд░реНрдЯ рдкреБрдгреНрдпреЛрд╕реЛ-t.exe + рдЕрдЧреНрд░рднреВрдорд┐' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рдкреЛрд░реНрдЯ рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
- рд╣рдо 'isql localhost: 1111 dba dba' рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВред '1 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ?' рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдЬреАрд╡рд┐рдд рд╣реИред
рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдВрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ, рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ:
create user "YYY"; create table "xxx"."YYY"."_POINTS" ( "oid_" integer, "x_" double precision, "y_" double precision, primary key ("oid_") );
рдЕрдм рдЦреБрдж рд╕реВрдЪрдХрд╛рдВрдХ:
create table "xxx"."YYY"."_POINTS_spx" ( "node_" integer, "oid_" integer references "xxx"."YYY"."_POINTS", primary key ("node_", "oid_") );
рдЬрд╣рд╛рдБ рдиреЛрдб_ рд╕реНрдкреЗрд╕ рд╕реЗрд▓ рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджреНрдпрдкрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдлрд╝реАрд▓реНрдб рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдПрдХ рдкреЗрдбрд╝ рдореЗрдВ рдкреИрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
registry_set ('__spx_startx', '0'); registry_set ('__spx_starty', '0'); registry_set ('__spx_nx', '4000'); registry_set ('__spx_ny', '4000'); registry_set ('__spx_stepx', '10'); registry_set ('__spx_stepy', '10');
рд░рдЬрд┐рд╕реНрдЯреНрд░реА_рд╕реЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо / рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдпрд╣ рдЙрдиреНрд╣реЗрдВ рд╕рд╣рд╛рдпрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ рдФрд░ рдЕрднреА рднреА рд▓реЗрдирджреЗрди рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдЯреНрд░рд┐рдЧрд░:
create trigger "xxx_YYY__POINTS_insert_trigger" after insert on "xxx"."YYY"."_POINTS" referencing new as n { declare nx, ny integer; nx := atoi (registry_get ('__spx_nx')); declare startx, starty double precision; startx := atof (registry_get ('__spx_startx')); starty := atof (registry_get ('__spx_starty')); declare stepx, stepy double precision; stepx := atof (registry_get ('__spx_stepx')); stepy := atof (registry_get ('__spx_stepy')); declare sx, sy integer; sx := floor ((n.x_ - startx)/stepx); sy := floor ((n.y_ - starty)/stepy); declare ixf integer; ixf := (nx / stepx) * sy + sx; insert into "xxx"."YYY"."_POINTS_spx" ("oid_","node_") values (n.oid_,ixf); };
рд╣рдо рдпрд╣ рд╕рдм, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 'sch.sql' рдФрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
isql.exe localhost:1111 dba dba <sch.sql
рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИрдпреЛрдЬрдирд╛ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдбреЗрдЯрд╛ рднрд░ рд╕рдХрддреЗ рд╣реИрдВред
gawk -f data.awk | isql.exe localhost:1111 dba dba >log 2>errlog
рдпрд╣ рдЗрдВрдЯреЗрд▓ i7-3612QM 2.1GHz рдкрд░ 45 рдорд┐рдирдЯ (~ 6000 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб) 8 рдЬреАрдмреА рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рд▓реЗрдЦрдХ рдХреЛ рд▓реЗ рдЧрдпрд╛ред
рдЗрд╕ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 1 рдЬреАрдмреА рдерд╛, рдбрд┐рд╕реНрдХ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЖрдХрд╛рд░ 540Mb рдерд╛, рдЕрд░реНрдерд╛рддред ~ 34 рдмрд╛рдЗрдЯреНрд╕ рдкреНрд░рддрд┐ рдмрд┐рдВрджреБ рдФрд░ рдЗрд╕рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХред
рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рд╕рд╣реА рд╣реИ, isql рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВ
select count(*) from "xxx"."YYY"."_POINTS"; select count(*) from "xxx"."YYY"."_POINTS_spx";
рджреЛрдиреЛрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ 16,000,000 рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдЧрд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк
рдпрд╣рд╛рдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ :

ред
рд╡реЗ PostgreSQL (Linux), 2.2GHz Xeon рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
рдПрдХ рдУрд░, рдбреЗрдЯрд╛ 9 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреВрд╕рд░реА рдУрд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрд┐рд╕реНрдХ рд╕рдВрдЪрд╛рд▓рди рдПрдХ рдЕрдбрд╝рдЪрди рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реА рдЕрд╡рдзрд┐ рдореЗрдВ рдбрд┐рд╕реНрдХ рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрднрд┐рдЧрдо рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдирд╣реАрдВ рдмрдврд╝рд╛ рд╣реИред
рдФрд░
рдпрд╣рд╛рдВ рд╣рдо рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рднрд░рдиреЗ рдХреЗ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдирд┐рдХ рдЕрдиреБрдХреНрд░рдордг рдХрд╛ рд╕рдордп рдХреНрдпрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдмрд╛рдж рдХреЗ рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рднрд░рдирд╛ (рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП) рдордХреНрдЦреА рдкрд░ рдЕрдиреБрдХреНрд░рдордг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдордХреНрдЦреА рдкрд░ рдЕрдиреБрдХреНрд░рдордг рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдерд╛рдирд┐рдХ рдбреАрдмреАрдПрдордПрд╕ рдПрдХ рд╕реНрдерд╛рдирд┐рдХ рдЦреЛрдЬ рдЗрдВрдЬрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
рдФрд░ рдлрд┐рд░ рднреА, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрдерд╛рдирд┐рдХ рдбреЗрдЯрд╛ рднрд░рддреЗ рд╕рдордп, рдЙрдирдХреЗ рднрд░рдиреЗ рдХрд╛ рдХреНрд░рдо рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдЗрд╕ рдХрд╛рдо рдореЗрдВ рдФрд░ рдкреВрд░реНрд╡реЛрдХреНрдд рдмрд┐рдВрджреБ рдореЗрдВ рджреЛрдиреЛрдВ рдЦрд┐рд▓рд╛ рдХреНрд░рдо рд╕реНрдерд╛рдирд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЖрджрд░реНрд╢ (рдпрд╛ рдЗрд╕рдХреЗ рдХрд░реАрдм) рдерд╛ред рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рдХрд╛рдлреА рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ рдЪрд╛рд╣реЗ рдЖрдк рдЬреЛ рднреА рдбреАрдмреАрдПрдордПрд╕ рдЪреБрдиреЗрдВред
рдпрджрд┐ рдбреЗрдЯрд╛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЖрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕реЙрдВрдк рдореЗрдВ рдЬрдорд╛ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЫрд╛рдБрдЯрддреЗ рд╣реБрдП рдЗрд╕реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рднрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рдЦреЛрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВрдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрджреНрднреБрдд рдлреАрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
create procedure "xxx"."YYY"."_POINTS_spx_enum_items_in_box" ( in minx double precision, in miny double precision, in maxx double precision, in maxy double precision) { declare nx, ny integer; nx := atoi (registry_get ('__spx_nx')); ny := atoi (registry_get ('__spx_ny')); declare startx, starty double precision; startx := atof (registry_get ('__spx_startx')); starty := atof (registry_get ('__spx_starty')); declare stepx, stepy double precision; stepx := atof (registry_get ('__spx_stepx')); stepy := atof (registry_get ('__spx_stepy')); declare sx, sy, fx, fy integer; sx := floor ((minx - startx)/stepx); fx := floor (1 + (maxx - startx - 1)/stepx); sy := floor ((miny - starty)/stepy); fy := floor (1 + (maxy - starty - 1)/stepy); declare mulx, muly integer; mulx := nx / stepx; muly := ny / stepy; declare res any; res := dict_new (); declare cnt integer; for (declare iy integer, iy := sy; iy < fy; iy := iy + 1) { declare ixf, ixt integer; ixf := mulx * iy + sx; ixt := mulx * iy + fx; for select "node_", "oid_" from "xxx"."YYY"."_POINTS_spx" where "node_" >= ixf and "node_" < ixt do { dict_put (res, "oid_", 0); cnt := cnt + 1; } } declare arr any; arr := dict_list_keys (res, 1); gvector_digit_sort (arr, 1, 0, 1); result_names(sx); foreach (integer oid in arr) do { result (oid); } }; create procedure view "xxx"."YYY"."v_POINTS_spx_enum_items_in_box" as "xxx"."YYY"."_POINTS_spx_enum_items_in_box" (minx, miny, maxx, maxy) ("oid" integer);
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдЦреЛрдЬ рд╕реАрдорд╛ рдореЗрдВ рдмреНрд▓реЙрдХ рдХреА рдХреМрди рд╕реА рдХреЛрд╢рд┐рдХрд╛рдПрдВ рдЦреЛрдЬ рд╕реАрдорд╛ рдореЗрдВ рдЖрддреА рд╣реИрдВ рдФрд░ рдЗрди рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдк-рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣реИрд╢ рдореИрдк рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рд╕реЗрдЯ рджреЗрддрд╛ рд╣реИред
рд╕реНрдерд╛рдирд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
select count(*), avg(x.x_), avg(x.y_) from "xxx"."YYY"."_POINTS" as x, "xxx"."YYY"."v_POINTS_spx_enum_items_in_box" as a where a.minx = 91. and a.miny = 228. and a.maxx = 139. and a.maxy = 295. and x."oid_" = a.oid and x.x_ >= 91. and x.x_ < 139. and x.y_ >= 228. and x.y_ < 295.;
рдпрд╣рд╛рдВ, рдЕрдВрдХреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдмреАрдЪ рдПрдХ рдЬреБрдбрд╝рд╛рд╡ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рджреГрд╢реНрдп рдПрдХ рдореЛрдЯреЗ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реЗрд▓ рдХреЛ рд╕рдЯреАрдХ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣рдордиреЗ рдПрдХ рдкрддрд▓рд╛ рдлрд┐рд▓реНрдЯрд░ рд▓рдЧрд╛рдпрд╛ред
рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо:
- рд╕рдВрдЦреНрдпрд╛: (139 - 91) * (295 - 228) = 3216
- рдПрдХреНрд╕-рдФрд╕рдд: (139 + 91 - 1) / 2 = 114.5 (-1 рдХреНрдпреЛрдВрдХрд┐ рд╕рд╣реА рд╕реАрдорд╛ рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ)
- Y рдФрд╕рдд: (295 + 228 - 1) / 2 = 261 (...)
рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╣реА рд▓реЗрди-рджреЗрди рдХреЗ рднреАрддрд░ рдПрдХ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдПрдХ рд╕реНрдерд╛рдирд┐рдХ рдЦреЛрдЬ рдХреАред
рдмреЗрдВрдЪрдорд╛рд░реНрдХрдЕрдиреБрд░реЛрдз рдкреНрд░рд╡рд╛рд╣ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд AWK рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
BEGIN { srand(); for (i=0; i < 100; i++) { for (j=0; j < 100; j++) { startx = int(rand() * 3900); finx = int(startx + rand() * 100); starty = int(rand() * 3900); finy = int(starty + rand() * 100); print "select count(*), avg(x.x_), avg(x.y_) from"; print "\"xxx\".\"YYY\".\"_POINTS\" as x, " print "\"xxx\".\"YYY\".\"v_POINTS_spx_enum_items_in_box\" as a" print "where a.minx = "startx". and a.miny = "starty"." print " and a.maxx = "finx". and a.maxy = "finy". and" print "x.\"oid_\" = a.oid and x.x_ >= "startx". and x.x_ < "finx"." print " and x.y_ >= "starty". and x.y_ < "finy".;" } } exit; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдХрд╛рд░ (0 ... 100) рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ 10,000 рдЕрдиреБрд░реЛрдз рдорд┐рд▓рддреЗ рд╣реИрдВред рд╣рдо 4 рдРрд╕реЗ рд╕реЗрдЯ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рддреАрди рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗ - рдПрдХ рдЗрд╕реНрдХреНрд▓ рдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде, 2 рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ 4 рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВред рдЖрда-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░, рдпрд╣ рдЕрдзрд┐рдХ рд╕рдорд╛рдВрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкреЗрдВред
- 1 рдзрд╛рдЧрд╛: 151 рд╕реЗрдХрдВрдб = ~ 66 рдЕрдиреБрд░реЛрдз рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкреНрд░рддрд┐ рдереНрд░реЗрдб
- 2 рд╕реВрддреНрд░: 159 рд╕реЗрдХрдВрдб = ~ 63 ...
- 4 рдзрд╛рдЧреЗ: 182 рд╕реЗрдХрдВрдб = ~ 55 ...
рдЖрдк рдЗрди рд╕рдордпреЛрдВ рдХреА рддреБрд▓рдирд╛ рд╕реЗрд░реЗрдмреНрд░реЛрд╕реНрдкрд╛рдЗрдирд▓ рдЯреНрд░реИрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рджреЛ рд╕рд╛рдзрд╛рд░рдг рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ - x_ & y_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдПрдХ рд╕рдорд╛рди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ
select count(*), avg(x.x_), avg(x.y_) from "xxx"."YYY"."_POINTS" as x where x.x_ >= 91. and x.x_ < 139. and x.y_ >= 228. and x.y_ < 295.;
рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ: 10,000 рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ 417 рд╕реЗрдХрдВрдб рдореЗрдВ рдкреВрд░реА рд╣реЛрддреА рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 24 рдкреНрд░рд╢реНрди рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖рдкреНрд░рд╕реНрддреБрдд рд╡рд┐рдзрд┐ рдореЗрдВ рдХрдИ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдореБрдЦреНрдп, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЙрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдерд╛рдирд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдШреБрдЯрдиреЗ рдкрд░ рд▓рд┐рдЦреЗ рдЧрдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдПрдХ рд╕рднреНрдп рдкреНрд░рджрд░реНрд╢рди рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИрдВ, рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рд╡реНрд╣рд┐рдЯрд░ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд▓реНрдЯреА-рдЯреЗрдмрд▓ рдЗрдВрдбреЗрдХреНрд╕, рдЬреЛ рдирд┐рдпрдорд┐рдд рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реА рдмрд╛рд░ рдХрд┐рд╕реА рддрд░рд╣ред