{"id":503246,"date":"2026-11-14T18:49:54","date_gmt":"2026-11-14T15:49:54","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=503246"},"modified":"2026-11-14T18:49:54","modified_gmt":"2026-11-14T15:49:54","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=503246","title":{"rendered":"\u0421\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u00a0\u0433\u043e\u0441\u043e\u0440\u0433\u0430\u043d\u0435: \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u2011\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0Python \u0438 MS SQL Server"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0421\u0442\u0430\u0442\u044c\u044f\u00a0\u2014 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u043f\u0440\u0438\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f\u00a0\u0433\u043e\u0441\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438: \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043e\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0441\u0442\u0440\u043e\u043a, Excel \u043a\u0430\u043a\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u2011\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0434\u0438\u043a\u0442\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0433\u043e\u0441\u0441\u043b\u0443\u0436\u0431\u044b. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c\u00a0\u2014 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u0441\u0432\u0435\u0436\u0438 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438. \u0412\u00a0\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u00a0\u2014 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043b\u0435\u043d\u0438\u0432\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430\u044f \u0438 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u041f\u041a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0443\u0433\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0437\u0430\u0439\u0434\u0451\u0442\u00a0\u2014 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435.<\/p>\n<\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c 1. \u0414\u043b\u044f\u00a0\u0447\u0435\u0433\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u0438? \u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/h2>\n<p>\u0412\u0432\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u043e\u0432 \u0432\u0435\u0434\u0443\u0442 \u0441\u0432\u043e\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u00a0Excel. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438\u0437\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432: \u043f\u043e\u0434\u043e\u0442\u0447\u0451\u0442\u043d\u044b\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u043e\u0434 100\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u043f\u043e\u0434\u0432\u0435\u0434\u043e\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439\u00a0\u2014 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u0432\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u00a0\u043f\u043e\u043b\u043d\u043e\u0439 \u043c\u0435\u0440\u0435: \u043f\u0440\u0438\u00a0\u0441\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u00ab\u0441\u0442\u043e\u043b\u0431\u0446\u044b\u00bb \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0432\u00a0\u043f\u043e\u043b\u044f\u0445 \u0433\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u0430\u0442\u0430 \u0438\u043b\u0438\u00a0\u0441\u0443\u043c\u043c\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0442\u0435\u043a\u0441\u0442 \u043f\u0440. \u0411\u043e\u0440\u044c\u0431\u0430 \u0437\u0430\u00a0\u0447\u0438\u0441\u0442\u043e\u0442\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0Excel\u00a0\u2014 \u0442\u0430 \u0435\u0449\u0451 \u0437\u0430\u0434\u0430\u0447\u0430.<\/p>\n<p>\u041a\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u00a0\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u0435 \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u0441\u0432\u043e\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u0430\u00a0\u043a\u00a0\u043d\u0435\u0439 \u0435\u0449\u0451 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430.<\/p>\n<p>\u0412\u00a0\u043e\u0431\u0449\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0446\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u043f\u043e\u00a0\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u0442\u0434\u0435\u043b\u043e\u0432 \u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0447\u0435\u043a \u0432\u00a0\u044d\u0442\u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u0430\u0445. \u0412\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043a\u0430\u043a\u00a0\u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u0442\u0430\u043a \u0438 \u0441\u00a0\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041b\u044e\u0431\u043e\u0439 \u0441\u0431\u043e\u0440 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043a\u00a0\u0441\u0440\u043e\u043a\u0443 (\u0430 \u0432\u00a0\u0433\u043e\u0441\u0441\u0435\u043a\u0442\u043e\u0440\u0435 \u0441\u0440\u043e\u043a\u0438 \u0436\u0451\u0441\u0442\u043a\u0438\u0435) \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0430\u00a0\u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432 (\u0438 \u044d\u0442\u043e \u0434\u043b\u044f\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u0441\u0442\u0430\u043b\u043e \u043d\u043e\u0440\u043c\u043e\u0439).<\/p>\n<p>\u0412\u00a0\u0446\u0435\u043b\u043e\u043c, \u044d\u0442\u043e \u0442\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0434\u043b\u044f\u00a0\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439.<\/p>\n<p>\u0412\u044b\u0445\u043e\u0434 \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0432\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f\u00a0\u0431\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u0441\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u0440\u0430\u0437\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u043b\u0430\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432.<\/p>\n<p>\u041d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u00a0\u0436\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u043e\u00a0\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u043e\u2011\u0434\u0440\u0443\u0433\u043e\u043c\u0443: \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0430\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0431\u044b\u043b\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u043f\u043e\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u044b\u043b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 (\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430) \u0438 \u043f\u0440.<\/p>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u00a0\u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u0430.<\/p>\n<p>\u0427\u0451\u0442\u043a\u043e\u0435 \u0422\u0417 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u0432\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 (\u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430\u00a0\u043d\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0433\u043e\u0434\u0430\u00a0\u2014 \u043c\u0438\u043d\u0438\u043c\u0443\u043c). \u0411\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441\u00a0\u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u0438 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e meta\u2011driven database\u2011centric \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0442\u043e \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u043b\u043e\u0433\u0438\u043a\u0430 \u0444\u043e\u0440\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0411\u0414, \u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430\u00a0\u2014 \u0432\u00a0\u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445 \u0411\u0414), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u00ab\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00bb \u043f\u043e\u0434\u00a0\u043d\u0443\u0436\u0434\u044b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u041f\u0440\u0438\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0438\u0442\u0430\u0435\u0442 \u044d\u0442\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u00ab\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u00bb \u0444\u043e\u0440\u043c\u0443 \u043d\u0430\u00a0\u043b\u0435\u0442\u0443.<\/p>\n<p>\u041d\u0430\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u0438\u043b\u0438 \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u00a0\u0434\u0432\u0443\u0445 \u043e\u0442\u0434\u0435\u043b\u0430\u0445 (\u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u0445\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a\u00a0\u0440\u0430\u0431\u043e\u0442\u0435), \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 100\u00a0\u0444\u043e\u0440\u043c.<\/p>\n<p>\u0421\u0440\u043e\u043a\u0438: 8\u00a0\u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, 2\u20133\u00a0\u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u00a0\u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u0435.<\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u00a0\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439, \u0442\u0430\u043a \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0441\u043f\u0435\u043a\u0442. \u041d\u0430\u0447\u043d\u0451\u043c \u0441\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438 \u043a\u00a0\u0437\u0430\u0434\u0430\u0447\u0435 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0442\u0435 \u0438\u043b\u0438\u00a0\u0438\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c 2. \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442<\/h2>\n<p>\u0412\u00a0\u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0443\u0442\u0438 \u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u00a0\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u0430\u043c\u0438 \u044d\u0442\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u043e, \u043d\u043e\u00a0\u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u043e\u0442\u00a0\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u0438\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 (\u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435) \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435.<\/p>\n<p>\u0427\u0442\u043e\u00a0\u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u043c\u0435\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430?<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439\u00a0\u2014 \u043d\u0443\u0436\u043d\u044b \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0442\u0430\u0431\u043b\u0438\u0446. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u00a0\u2014 \u0432\u00a0\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f\u00a0\u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0435\u0451 \u043d\u0435\u00a0\u0443\u043c\u0435\u0441\u0442\u0438\u0448\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043e\u043a \u043a\u00a0\u0441\u0442\u0440\u043e\u043a\u0430\u043c. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443, \u0430\u00a0\u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u00a0\u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f. <\/p>\n<p>\u0424\u043e\u0440\u043c \u0432\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u043d\u043e\u0433\u043e: \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442: \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0444\u043e\u0440\u043c\u043e\u0447\u043a\u0443 \u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0444\u043e\u0440\u043c\u044b \u00ab\u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f\u00bb \u0438\u0437\u00a0\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u043d\u0435\u0441\u0451\u043d\u043d\u044b\u0445 \u0432\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0438\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0444\u043e\u0440\u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0435\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435: \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0430\u00a0\u043d\u0438\u0445 (\u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0438, \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0438), \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0438 \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439, \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u043e\u0432&#8230; \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u0438\u0434\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0443\u0434\u043e\u0431\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0438\u0437\u00a0\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 (\u043c\u043d\u043e\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u044b \u043f\u043e\u0445\u043e\u0436\u0438 \u043f\u043e\u00a0\u043b\u043e\u0433\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c).<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a\u00a0\u2014 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u0435\u043c\u0443 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e: \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b, \u0430\u00a0\u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0445 \u043d\u0443\u0436\u043d\u044b\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e. \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u0430\u043c\u0430 \u0444\u043e\u0440\u043c\u0430 \u0438 \u0435\u0451 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b (+ \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u044b), \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u00a0\u0442\u0435\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0441\u0442\u044c \u0443\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u00a0\u0411\u0414. \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0444\u043e\u0440\u043c\u044b \u043f\u0440\u0438\u00a0\u0435\u0451 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437\u00a0\u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 (\u0430 \u043d\u0435\u00a0\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f). \u0414\u043b\u044f\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0443\u0434\u043e\u0431\u043d\u043e: \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u00a0\u0440\u043e\u043b\u0438 (\u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0435\u0441\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u043e\u043b\u0435\u0439 \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430) \u0438 \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 (\u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0441\u0447\u0438\u0442\u0430\u0435\u0442\u00bb \u0438\u0437\u00a0\u0431\u0430\u0437\u044b).<\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0432\u00a0Excel (MS Excel\u00a0\u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438) \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u043e\u0432. \u041e\u0442\u0447\u0451\u0442 \u043d\u0443\u0436\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u0444\u043e\u0440\u043c\u0430 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0443 \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e (\u0442\u0430\u043a\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e). \u0414\u043b\u044f\u00a0\u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432\u00a0Excel (\u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438\u0437\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u0438\u0441\u0442\u043e\u0432 \u0441\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u00ab\u0448\u0430\u043f\u043a\u043e\u0439\u00bb \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432) \u0438 \u0441\u043a\u0440\u0438\u043f\u0442 SQL \u0434\u043b\u044f\u00a0\u0435\u0451 \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u00ab\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0435 \u0433\u043b\u0430\u0437\u0443\u00bb \u043e\u0442\u0447\u0451\u0442\u044b, \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a\u00a0\u0432\u044b\u0432\u043e\u0434\u0443 \u043d\u0430\u00a0\u043f\u0435\u0447\u0430\u0442\u044c). \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u0438\u0441\u0442\u043e\u0432 \u0432\u00a0\u043e\u0434\u0438\u043d \u043e\u0442\u0447\u0451\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u00ab\u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c\u00bb \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u00ab\u0440\u0430\u0437\u0440\u0435\u0437\u0430\u0445\u00bb (\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c).<\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u0442\u0430\u0431\u043b\u0438\u0446 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0449\u0451\u043b\u043a\u0430\u0435\u0442 \u043c\u044b\u0448\u043a\u043e\u0439 \u043f\u043e\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u0432\u0438\u0434\u0438\u0442 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u00a0\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0443). \u0412\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a\u0430\u043a \u00ab\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u00bb \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u0442\u0430\u043a \u0438 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f\u00a0\u2014 \u0430\u0443\u0434\u0438\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b (\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u00a0\u043a\u0430\u043a\u0438\u0435 \u0444\u043e\u0440\u043c\u044b \u0437\u0430\u0445\u043e\u0434\u0438\u043b, \u043a\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u0431\u0438\u0440\u0430\u043b, \u0447\u0442\u043e\u00a0\u0438\u0437\u043c\u0435\u043d\u044f\u043b, \u043a\u0430\u043a\u0438\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b).<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u00a0Excel. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0443\u0434\u0435\u043b\u0435\u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u00ab\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435\u00bb \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u00a0\u0435\u0451 \u0448\u0430\u043f\u043a\u0435, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430. \u042d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a, \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0437\u0430\u00a0\u0440\u0430\u043c\u043a\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e\u00a0\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0441\u00a0\u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0422\u0430\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0438\u0431\u043a\u043e \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u00ab\u043e\u0431\u043e\u0433\u0430\u0449\u0435\u043d\u0438\u0435\u00bb \u0440\u0430\u043d\u0435\u0435 \u0432\u043d\u0435\u0441\u0451\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435\u00a0\u2014 \u043e\u0431\u044a\u0451\u043c\u044b. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u00a0\u2014 \u0434\u043e 100\u00a0\u0442\u044b\u0441. \u0441\u0442\u0440\u043e\u043a. \u041d\u043e\u00a0\u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u00ab\u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b\u00bb \u043e\u0431\u044a\u0451\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0442\u044c 20\u00a0\u043c\u043b\u043d. \u0441\u0442\u0440\u043e\u043a. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0447\u0435\u0440\u0435\u0437 <code>select * <\/code>\u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435\u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441: \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u00a0\u0432\u0437\u044f\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0435? \u041d\u0430\u00a0\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0447\u0438\u043d. \u0412\u043e\u2011\u043f\u0435\u0440\u0432\u044b\u0445, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432\u00a0\u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0443\u0442. \u0411\u044b\u043b\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0432\u0435\u043d\u0434\u043e\u0440\u0430. \u0412\u043e\u2011\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0435\u00a0\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0442\u00a0\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b (\u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430\u043c\u0438, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0431\u0438\u0437\u043d\u0435\u0441\u0443 \u044d\u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f: \u043d\u0435\u00a0\u0436\u0434\u0451\u043c, \u043f\u043e\u043a\u0430 \u0432\u0435\u043d\u0434\u043e\u0440 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442 \u043f\u0430\u0442\u0447, \u0438 \u043d\u0435\u00a0\u0438\u0449\u0435\u043c \u043e\u0431\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u00ab\u043a\u043e\u0441\u0442\u044b\u043b\u0438\u00bb). \u0418, \u0447\u0442\u043e\u00a0\u043d\u0435\u043c\u0430\u043b\u043e\u0432\u0430\u0436\u043d\u043e, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u0430\u044f \u0447\u0438\u0441\u0442\u043e\u0442\u0430.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 Python\u00a0\u2014 \u043c\u044b \u0433\u043e\u0441\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 (\u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u00a0\u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443), \u043d\u0430\u043c \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442 \u043f\u043e\u00a0Python \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0447\u0442\u043e\u00a0\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0433\u0440\u0443\u043f\u043f\u044b.<\/p>\n<p>Python \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432? \u0414\u0430, \u043d\u043e\u00a0\u043d\u0430\u00a0\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u00a0\u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u00ab\u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a\u00bb \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u00a0\u043d\u0430\u00a0\u0441\u0430\u043c\u044b\u0445 \u043b\u0443\u0447\u0448\u0438\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u0412\u0441\u0435 \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u043a\u00a0\u0442\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0443\u0436\u043d\u043e \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0438 \u0432\u00a0Excel\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043d\u0430\u0441 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u0435\u0435.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 low\u2011code meta\u2011driven? \u041f\u043e\u00a0\u0438\u0442\u043e\u0433\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043f\u0435\u0440\u0432\u044b\u043c \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0443\u00a0\u043d\u0430\u0441 \u0431\u044b\u043b\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0431\u043e\u043b\u0435\u0435 100\u00a0\u0444\u043e\u0440\u043c (\u0440\u0430\u0437\u043d\u044b\u0445: \u0441\u00a0\u043e\u0431\u0449\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0438 \u0441\u00a0\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u2026). \u0421\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e \u00ab\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u00bb \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0441\u0438\u043b\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u0437\u0430 8\u00a0\u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0435\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c. \u041d\u0435\u043c\u0430\u043b\u043e\u0432\u0430\u0436\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u044b \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e\u00a0\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. \u0412\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c database\u2011centric (\u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430 \u0432\u00a0\u0431\u0430\u0437\u0435)? \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f: \u043f\u0440\u0438\u00a0\u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432\u00a0\u0445\u0440\u0430\u043d\u0438\u043c\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u043d\u0430\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0411\u0414. \u0424\u043e\u0440\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0443\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u00a0\u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0431\u0435\u0437\u00a0\u043a\u0430\u043a\u0438\u0445\u2011\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0434\u0430 \u0432\u00a0\u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u0438\u00a0\u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u044f, \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0430\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435\u2011\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 (\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c). \u0422\u0430\u043a\u043e\u0435 \u043e\u043a\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0432\u0441\u0435\u043c \u0436\u0438\u0437\u043d\u044c.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0448\u043b\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u0430\u0445.<\/p>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a:<\/p>\n<ul>\n<li>\n<p>\u0418\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 (\u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u00a0\u043e\u0431\u0449\u0435\u043c, \u0430\u00a0\u0437\u0430\u0442\u0435\u043c \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f).<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441\u00a0\u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0439). \u0411\u0430\u043d\u0430\u043b\u044c\u043d\u043e, \u043d\u043e\u00a0\u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0438 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b (\u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0434\u0430\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u044b \u043d\u0435\u00a0\u0431\u0443\u0434\u0443\u0442).<\/p>\n<\/li>\n<li>\n<p>\u0418\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 (\u0438 \u0442\u0430\u043a \u0434\u043e\u00a0\u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u00a0\u0443\u0441\u0442\u0440\u043e\u0438\u0442 \u0432\u0441\u0435\u0445).<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0430 \u0432\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0445:<\/p>\n<ul>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b;<\/p>\n<\/li>\n<li>\n<p>100+ \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0445 \u0444\u043e\u0440\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u00a0Excel \u0441\u0432\u0435\u0434\u0435\u043d\u044b \u0432\u00a0\u0435\u0434\u0438\u043d\u0443\u044e \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a\u00a0\u043d\u0430\u00a0\u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u0442\u0430\u043a \u0438 \u043d\u0430\u00a0\u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430\u00a0\u0432\u043e\u043f\u0440\u043e\u0441\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u00a0\u0434\u0430\u043b\u044c\u0448\u0435:<\/p>\n<ul>\n<li>\n<p>\u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0442\u0434\u0435\u043b\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u00a0\u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439\u00a0\u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u00ab\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u00bb \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u043e\u0442\u0434\u0435\u043b \u00ab\u0432\u0438\u0434\u0438\u0442\u00bb \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u043e\u0432. \u042d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0451\u043c\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u043e\u043a, \u0435\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0436\u0435 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f\u00a0\u0438\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430\u00a0\u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u0437\u0430\u0447\u0435\u043c \u0438 \u043a\u0430\u043a\u00a0\u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438\u00bb. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c\u00a0\u2014 \u00ab\u0447\u0442\u043e \u043f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb.<\/p>\n<\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c 3. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f (\u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442)<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/17\/24\/c8\/1724c82400fc257f850a88ecbca250f8.png\" alt=\"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.\" title=\"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.\" width=\"973\" height=\"533\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/17\/24\/c8\/1724c82400fc257f850a88ecbca250f8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/17\/24\/c8\/1724c82400fc257f850a88ecbca250f8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/figcaption><\/div>\n<\/figure>\n<h3>Data\u2011Driven UI: \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043a\u0430\u043a\u00a0\u043c\u0435\u0442\u0430\u2011\u0434\u0430\u043d\u043d\u044b\u0435<\/h3>\n<p>\u0412\u00a0\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0435\u0442 \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u00a0\u0444\u043e\u0440\u043c\u0430\u043c\u0438. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0435\u0442\u0430\u2011\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439. \u041f\u0440\u0438\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0444\u043e\u0440\u043c\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437\u00a0\u0411\u0414 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b <code>x, y, width, height<\/code>, \u0431\u0430\u0437\u043e\u0432\u044b\u0439 SQL\u2011\u0437\u0430\u043f\u0440\u043e\u0441, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0448\u0440\u0438\u0444\u0442\u043e\u0432 \u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u043a) \u0441\u00a0\u0443\u0447\u0451\u0442\u043e\u043c \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0440\u043e\u0438\u0442 \u044d\u043a\u0440\u0430\u043d\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443.<\/p>\n<p>LazyTableModel\u00a0\u2014 \u044d\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a, \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u0431\u0438\u0437\u043d\u0435\u0441\u0443 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0432\u0442\u0440\u0430 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u0430\u00a0\u044d\u043a\u0440\u0430\u043d \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043d\u0430 5\u00a0\u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0441\u0442\u0440\u043e\u043a, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u044d\u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.<\/p>\n<h3>Excel ETL: \u041a\u0430\u043a\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/h3>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u00a0\u2014 Excel \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 (\u0432\u044b\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0438\u0437\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438\u043b\u0438\u00a0\u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e).<\/p>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043c\u0435\u0435\u0442 \u00ab\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c\u00bb \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432\u00a0\u0444\u0430\u0439\u043b\u0435 \u00ab\u043d\u0430 \u043b\u0435\u0442\u0443\u00bb (\u043f\u0443\u0442\u0451\u043c \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u00ab\u0448\u0430\u043f\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b\u00bb \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u00a0\u0431\u0430\u0437\u0435\u00a0\u2014 \u0432\u043d\u043e\u0441\u0438\u043c \u043f\u0440\u0438\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435). \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0432\u00a0\u0411\u0414, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f);<\/p>\n<\/li>\n<li>\n<p>\u00ab\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435\u00bb \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u043d\u0443\u0436\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0430\u00a0\u043f\u043e\u0441\u043b\u0435 \u0435\u0451 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043d\u043e\u0432\u044c \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0432\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u00a0\u044d\u0442\u0438\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c \u043f\u043e\u00a0\u0442\u0438\u043f\u0430\u043c (\u0432 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0435 \u0433\u0434\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0447\u0438\u0441\u043b\u0430, \u0433\u0434\u0435 \u0434\u0430\u0442\u044b\u00a0\u2014 \u0434\u0430\u0442\u044b \u2026).<\/p>\n<\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c 4. \u041b\u0435\u043d\u0438\u0432\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0441\u0442\u0440\u043e\u043a \u0432\u00a0PyQt5<\/h2>\n<p>\u0414\u043b\u044f\u00a0\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0451\u043c\u043e\u0432 \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u00a0\u0442\u0430\u0431\u043b\u0438\u0446 \u0411\u0414 (\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430) \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e.<\/p>\n<p>\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435:<\/p>\n<ul>\n<li>\n<p>\u041d\u0435\u00a0\u0433\u0440\u0443\u0437\u0438\u0442 \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0RAM.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u00a0\u043b\u044e\u0431\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u043e\u0439 (\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e\u00a0\u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e).<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u00a0\u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 SQL Server \u0442\u044b\u0441\u044f\u0447\u0430\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e \u043a\u0440\u0443\u0442\u0438\u0442 \u043a\u043e\u043b\u0435\u0441\u0438\u043a\u043e \u043c\u044b\u0448\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c eventual\u2011\u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0437\u043e\u0432, \u043f\u0440\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438\/\u0441\u0431\u0440\u043e\u0441\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043a\u044d\u0448 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u0426\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u043d\u0443\u044e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u043e\u00a0timestamp.<\/p>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0\u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438 \u0432\u00a0SQL Server\u00a0\u2014 OFFSET&#8230; FETCH NEXT. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u041d\u0430\u00a0\u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0421\u0423\u0411\u0414 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0438 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0441\u0442\u0440\u043e\u043a, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c. \u041d\u043e\u00a0\u0443\u00a0\u043d\u0430\u0441 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u00a0\u043b\u044e\u0431\u044b\u043c \u043f\u043e\u043b\u044f\u043c \u0432\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u0435. \u0410\u00a0\u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0434\u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438. \u0414\u043b\u044f\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u044d\u0442\u043e \u043d\u0435\u00a0\u0441\u0442\u043e\u043b\u044c \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0432\u0435\u0434\u044c \u043d\u0430 \u00ab\u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435\u00bb \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u00a0\u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0435 \u043e\u043d\u0438 \u043d\u0435\u00a0\u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0445\u043e\u0434\u044f\u0442.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u0430\u043c \u043f\u043e\u00a0\u0441\u0435\u0431\u0435 \u0442\u044f\u0436\u0451\u043b\u044b\u0439, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430\u00a0\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445: \u041c\u043e\u0434\u0435\u043b\u044c + LRU\u2011\u043a\u044d\u0448 + \u0422\u0440\u043e\u0442\u0442\u043b\u0435\u0440<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/95\/81\/dc\/9581dc8075f0348d0c937e2a3508b11d.png\" alt=\"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u041c\u043e\u0434\u0435\u043b\u044c + LRU\u2013\u043a\u044d\u0448 + \u0422\u0440\u043e\u0442\u0442\u043b\u0435\u0440\" title=\"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u041c\u043e\u0434\u0435\u043b\u044c + LRU\u2013\u043a\u044d\u0448 + \u0422\u0440\u043e\u0442\u0442\u043b\u0435\u0440\" width=\"465\" height=\"1517\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/95\/81\/dc\/9581dc8075f0348d0c937e2a3508b11d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/95\/81\/dc\/9581dc8075f0348d0c937e2a3508b11d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u041c\u043e\u0434\u0435\u043b\u044c + LRU\u2011\u043a\u044d\u0448 + \u0422\u0440\u043e\u0442\u0442\u043b\u0435\u0440<\/figcaption><\/div>\n<\/figure>\n<h3>\u0421\u043b\u043e\u0439 1\u00a0\u2014 2: \u041c\u043e\u0434\u0435\u043b\u044c<\/h3>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f: \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e\u00a0\u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u043d\u0430 \u0437\u043d\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043a\u044d\u0448. \u041a\u043e\u0433\u0434\u0430 Qt \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u044f\u0447\u0435\u0439\u043a\u0443, \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442, \u043d\u0430\u00a0\u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043e\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u0438 \u043b\u0438\u0431\u043e \u043e\u0442\u0434\u0430\u0451\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u00a0\u043a\u044d\u0448\u0430, \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u2011\u0437\u0430\u044f\u0432\u043a\u0443 \u00ab\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043c\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 N\u00bb.<\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0435\u0437\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>LRU\u2011\u043a\u044d\u0448: \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d?<\/p>\n<p>\u0412\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u043f\u043b\u044e\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u0435\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (\u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445). \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f\u00a0\u2014 \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u0442\u0430\u043d\u0438\u0446\u044b \u0432\u0441\u0451 \u0435\u0449\u0451 \u0432\u00a0\u043a\u044d\u0448\u0435 \u0438 \u043e\u0442\u0440\u0438\u0441\u0443\u044e\u0442\u0441\u044f \u0431\u0435\u0437\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a\u00a0\u0431\u0430\u0437\u0435.<\/p>\n<p>\u041f\u0440\u0438\u00a0\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 INSERT\/DELETE \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043d\u0430 1\u00a0\u0441\u0442\u0440\u043e\u043a\u0443.<\/p>\n<h3>\u0421\u043b\u043e\u0439 3: \u0422\u0440\u043e\u0442\u0442\u043b\u0435\u0440\u00a0\u2014 \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442\u00a0\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a\u00a0\u0431\u0430\u0437\u0435<\/h3>\n<p>\u0422\u0440\u043e\u0442\u0442\u043b\u0435\u0440 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043b\u0451\u0441\u0438\u043a\u0430 \u043c\u044b\u0448\u0438 \u043a\u00a0\u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u00ab\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0430\u0441\u044c\u00bb \u043b\u0430\u0432\u0438\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<p>\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b (\u043f\u0430\u0443\u0437\u0430 \u0441\u00a0\u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438) \u043f\u043e\u00a0\u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441 \u043a\u00a0\u0431\u0430\u0437\u0435 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043b\u0438 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c\u00a0\u2014 300\u00a0\u043c\u0441.<\/p>\n<p>\u041d\u043e\u00a0\u043f\u0440\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u043e\u0433\u0443\u0442 \u043d\u0435\u00a0\u0443\u0441\u043f\u0435\u0432\u0430\u0442\u044c \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c. \u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u043f\u0438\u0442\u0441\u044f \u00ab\u043e\u0447\u0435\u0440\u0435\u0434\u044c\u00bb. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c\u0438 \u043d\u0443\u0436\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043b 10\u00a0\u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f (\u0442\u0430, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430). \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0434\u043b\u0438\u043d \u00ab\u043e\u0447\u0435\u0440\u0435\u0434\u0438\u00bb \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430\u00a0\u2014 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u043d\u0435\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u00ab\u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f\u00bb.<\/p>\n<p>\u041f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f. \u0421\u043c\u0435\u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u043e\u043c\u0443, \u0447\u0442\u043e\u00a0\u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u00a0\u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u044b (\u043d\u043e \u043d\u0435\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043c\u0435\u043d\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430) \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043d\u0435\u00a0\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b. \u0417\u0430\u00a0\u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439 (_generation) \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 1\u00a0\u043f\u0440\u0438\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 (\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438). \u0412\u0441\u0435 QThread, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0451 \u043d\u0435\u00a0\u0443\u0441\u043f\u0435\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u0440\u0438\u00a0\u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u044d\u0442\u043e\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a. \u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0435\u00a0\u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442\u00a0\u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u00ab\u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f\u00bb. UI \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u00ab\u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435\u00bb \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u00a0\u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>\u00ab\u041a\u043b\u0430\u0434\u0431\u0438\u0449\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432\u00bb. QThread \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c\u00a0\u2014 C++ \u043e\u0431\u044a\u0435\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u0435\u0449\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f. \u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a (_graveyard), \u0438 \u0442\u0430\u0439\u043c\u0435\u0440 \u0440\u0430\u0437 \u0432\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u0445, \u0447\u044c\u0438 \u043f\u043e\u0442\u043e\u043a\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438\u0441\u044c.<\/p>\n<h3>\u0421\u043b\u043e\u0439 4: \u0412\u043e\u0440\u043a\u0435\u0440 \u043a\u0430\u043a\u00a0\u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0440\u0430\u0431\u043e\u0442\u044b<\/h3>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 DBWorker\u00a0\u2014 \u044d\u0442\u043e \u043e\u0434\u0438\u043d QThread \u0441\u00a0\u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439: \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0433\u043d\u0430\u043b. \u042d\u0442\u043e \u0435\u0433\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.<\/p>\n<p>DBWorker \u0431\u0435\u0440\u0451\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u00a0\u043f\u0443\u043b\u0430 (\u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u00a0\u0432\u0441\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u00a0\u2014 \u0434\u0435\u0440\u0436\u0438\u0442 5\u00a0\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 + 5\u00a0\u043f\u0440\u0438\u00a0\u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438), \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u00a0\u0431\u043e\u043b\u0435\u0435 2\u00a0DBWorker \u043d\u0430\u00a0\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f\u00a0\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b LazyTableModel.<\/p>\n<h4>\u0428\u0430\u0433 1. Qt \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c: \u00ab\u0447\u0442\u043e \u0432\u00a0\u044f\u0447\u0435\u0439\u043a\u0435?\u00bb<\/h4>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 150\u202f000) \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u00a0\u0432\u0438\u0434\u0438\u043c\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c, Qt (self.table) \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 data() self.model \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0438. \u041c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442, \u043d\u0430\u00a0\u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u044d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430, \u0438 \u0438\u0449\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u043a\u044d\u0448\u0435.<\/p>\n<pre><code class=\"python\">class LazyTableModel(QAbstractTableModel):\u00a0\u00a0\u00a0 request_load_page = pyqtSignal(int)\u00a0\u00a0\u00a0 \u2026\u00a0\u00a0\u00a0 def data(self, index, role=Qt.DisplayRole):\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if role not in [Qt.DisplayRole, Qt.EditRole]:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return QVariant()\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if not index.isValid():\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return QVariant()\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 page_idx = index.row() \/\/ self.table_inf.page_size\u00a0\u00a0\u00a0\u00a0\u00a0 # 150000 \/\/ 100 = 1500\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 row_in_page = index.row() % self.table_inf.page_size\u00a0\u00a0\u00a0 # 150000 %\u00a0 100 = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 page_data = self._cache.get(page_idx)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # \u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0410: \u0435\u0441\u0442\u044c \u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043a\u044d\u0448\u0435 \u0438 \u043d\u0435 \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 b_data_available = (\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 page_data is not None\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 and row_in_page &lt; len(page_data['data'])\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if not b_data_available and page_idx not in self._loading_pages:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 self.request_load_page.emit(int(page_idx))\u00a0# \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430\u0440\u0443\u0436\u0443                                                        #(\u0437\u0430\u043f\u0440\u043e\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return \"...\" # \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if b_data_available:            # \u043a\u043e\u043b\u043e\u043d\u043a\u0430 0 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f (\u0447\u0435\u043a\u0431\u043e\u043a\u0441\u044b \u0432\u044b\u0431\u043e\u0440\u0430),             # \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 1 (\u0442.\u0435. \u0441\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043d\u0430 1)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 val = page_data['data'][row_in_page][index.column() - 1] \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # \u2026 \u0423\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2026\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return str(val) if val is not None else \"\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return QVariant()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u00a0\u2014 self.request_load_page.emit(int(page_idx)). \u041c\u043e\u0434\u0435\u043b\u044c <strong>\u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442<\/strong> \u043f\u0440\u043e\u00a0\u0411\u0414, \u043f\u0440\u043e\u00a0\u043f\u043e\u0442\u043e\u043a\u0438, \u043f\u0440\u043e\u00a0\u0442\u0440\u043e\u0442\u0442\u043b\u0435\u0440. \u041e\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.<\/p>\n<h4>\u0428\u0430\u0433 2. \u041c\u043e\u0434\u0443\u043b\u044c \u0444\u043e\u0440\u043c\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u0442\u0440\u043e\u0442\u0442\u043b\u0435\u0440\u0430<\/h4>\n<p>\u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u00a0\u043c\u043e\u0434\u0443\u043b\u0435 \u0444\u043e\u0440\u043c\u044b:<\/p>\n<pre><code class=\"python\">self.model = LazyTableModel()self.table = Class_QTableView_modify()self.table.setModel(self.model)self.model.request_load_page.connect(self._on_page_requested)\u00a0def onpage_requested(self, page_index):  \u2026  # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b\u0437\u043e\u0432\u0430 \u0442\u0440\u043e\u0442\u0442\u043b\u0435\u0440\u0430 (\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430)  \u2026  self.page_throttler.request_page(      page_index=page_index,      sql_query=self.request_active__sql_query,      where_params=self.request_active__where_params,      select_order_by=self.request_active__order_by,      b_empty_result=self.request_active__b_empty_result,      immediate=(page_index == 0 and self._is_refreshing),  )<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><strong> <\/strong>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c) \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u00a0\u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 (where_params) \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f\u00a0\u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442\u00a0\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0439.<\/p>\n<h4>\u0428\u0430\u0433 3. \u0422\u0440\u043e\u0442\u0442\u043b\u0435\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u044f\u0432\u043a\u0443 \u0438 \u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u00a0\u2014 300\u00a0\u043c\u0441.<\/h4>\n<p>\u0412\u00a0\u0442\u0440\u043e\u0442\u0442\u043b\u0435\u0440\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0442\u0430\u0439\u043c\u0435\u0440\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 <em>flush<\/em>pending<\/p>\n<pre><code class=\"python\">self._debounce_timer = QTimer(self)self._debounce_timer.setSingleShot(True)self._debounce_timer.setInterval(debounce_ms)self._debounce_timer.timeout.connect(self._flush_pending)\u00a0...def request_page(self, page_index, sql_query, where_params,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 select_order_by, b_empty_result=False, immediate=False):\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"\"\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ---------\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 page_index : int\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0418\u043d\u0434\u0435\u043a\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sql_query : str\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SQL-\u0437\u0430\u043f\u0440\u043e\u0441 (SELECT ... FROM ...).\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 where_params : list (\u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0439)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f WHERE-\u0443\u0441\u043b\u043e\u0432\u0438\u044f.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 select_order_by : str\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ORDER BY \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 b_empty_result : bool\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 True = \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043f\u0443\u0441\u0442\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u0434\u043e\u0447\u0435\u0440\u043d\u044f\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0431\u0435\u0437 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f).\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 immediate : bool\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 True = \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u0431\u0435\u0437 debounce\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (\u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u0438 select_data).\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"\"\"\u00a0\u00a0\u00a0 self._last_request_time = time.monotonic() # \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0432\u0440\u0435\u043c\u044f,                                               # \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u00a0\u00a0\u00a0 request_data = {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'page_index':\u00a0\u00a0\u00a0\u00a0\u00a0 page_index,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'sql_query':\u00a0\u00a0\u00a0\u00a0\u00a0 sql_query,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'where_params':\u00a0\u00a0\u00a0 where_params,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'select_order_by': select_order_by,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'b_empty_result':\u00a0 b_empty_result,\u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0 # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 (\u0435\u0441\u043b\u0438 \u0431\u044b\u043b)\u00a0\u00a0\u00a0 self._pending = [r for r in self._pending if r['page_index'] != page_index]\u00a0\u00a0\u00a0 # \u0421\u0442\u0430\u0432\u0438\u043c \u0432 \u043a\u043e\u043d\u0435\u0446 \u043e\u0447\u0435\u0440\u0435\u0434\u0438\u00a0\u00a0\u00a0 self._pending.append(request_data)\u00a0\u00a0\u00a0 if page_index in self._active:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return\u00a0 # \u0443\u0436\u0435 \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u2014 \u043d\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u043c\u00a0    # \u041f\u0440\u0438 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440 (\u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d)     # \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443\u00a0\u00a0\u00a0 if immediate:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if self._debounce_timer.isActive():\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 self._debounce_timer.stop()\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 self._flush_pending()\u00a0\u00a0\u00a0 else:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 self._debounce_timer.start()\u00a0\u00a0 # \u0441\u0442\u0430\u0432\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 300 \u043c\u0441.                                        # (\u0437\u0430\u043f\u0443\u0441\u043a flushpending)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 time.monotonic(). time.monotonic (\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u00a0time.time)\u00a0\u2014 \u043c\u043e\u043d\u043e\u0442\u043e\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u044b \u0438\u0434\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043f\u0435\u0440\u0451\u0434 \u0438 \u043d\u0435\u00a0\u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u044b \u0441\u043a\u0430\u0447\u043a\u0430\u043c \u043f\u0440\u0438\u00a0\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u043b\u0438\u00a0\u0440\u0443\u0447\u043d\u043e\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0447\u0430\u0441\u043e\u0432. \u0412\u00a0\u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0434\u043b\u044f\u00a0\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<h4>\u0428\u0430\u0433 4. 300\u00a0\u043c\u0441 \u043f\u0440\u043e\u0448\u043b\u043e \u2026 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0443\u0436\u043d\u043e\u00a0\u043b\u0438 \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443<\/h4>\n<pre><code class=\"python\">def flushpending(self):    \"\"\"    Debounce-\u0442\u0430\u0439\u043c\u0435\u0440 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u2014 \u0441\u043a\u0440\u043e\u043b\u043b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f.    \u041b\u043e\u0433\u0438\u043a\u0430:    1. \u041d\u0435 \u0443\u0448\u0451\u043b \u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f    2. \u0423\u0441\u0435\u043a\u0430\u0435\u043c pending \u0434\u043e maxconcurrent (\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435)    3. \u0423\u0431\u0438\u0432\u0430\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 _pending    4. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0442\u043e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 pending, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435\u0442 \u0432 active    \"\"\"    # 1. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: \u043d\u0435 \u043f\u0440\u0438\u0448\u0451\u043b \u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0436\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f     elapsed = time.monotonic() - self._last_request_time    if elapsed &lt; self._debounce_ms \/ 1000.0:        # \u0417\u0430 \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441.        # \u0422\u0430\u0439\u043c\u0435\u0440 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0432 request_page() \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u043c.        # \u041f\u043e\u0434\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0430: \u0435\u0441\u043b\u0438 \u0442\u0430\u0439\u043c\u0435\u0440 \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u0435\u043d \u2014 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c.        if not self._debounce_timer.isActive():            self._debounce_timer.start()        return    # \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432 \u0441\u0435\u0439\u0447\u0430\u0441 \u0433\u0440\u0443\u0437\u044f\u0442 \u0434\u0430\u043d\u043d\u044b\u0435     # (\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 - len(self._active) + \u0442\u0435 \u0447\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u00ab\u043d\u0430 \u043a\u043b\u0430\u0434\u0431\u0438\u0449\u0435\u00bb -     # len(self._graveyard))    # \u0435\u0441\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c maxtotal_workers -     # \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 300 \u043c\u0441    # \u0438 \u0432\u044b\u0445\u043e\u0434\u0438\u043c - \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0431\u0430\u0437\u0443    if self._max_total_workers &lt;= len(self._active) + len(self._graveyard):        if not self._debounce_timer.isActive():            self._debounce_timer.start()        return    if self._debounce_timer.isActive():        self._debounce_timer.stop()    # \u043d\u0435\u0447\u0435\u0433\u043e \u0433\u0440\u0443\u0437\u0438\u0442\u044c - \u0432\u044b\u0445\u043e\u0434\u0438\u043c    if not self._pending:        return    # 2. \u0423\u0441\u0435\u043a\u0430\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u044c: \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e max_concurrent \u0441\u0430\u043c\u044b\u0445 \u0441\u0432\u0435\u0436\u0438\u0445    #\u00a0\u00a0\u00a0 \u041a\u043e\u043d\u0435\u0446 \u0441\u043f\u0438\u0441\u043a\u0430 = \u0441\u0430\u043c\u044b\u0435 \u043d\u043e\u0432\u044b\u0435 = \u0441\u0430\u043c\u044b\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e    if len(self._pending) &gt; self._max_concurrent:        discarded = self._pending[:-self._max_concurrent]        self._pending = self._pending[-self._max_concurrent:]        # \u0423\u0431\u0438\u0432\u0430\u0435\u043c \u0432\u043e\u0440\u043a\u0435\u0440\u044b \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446        discarded_pages = {r['page_index'] for r in discarded}        for page_index in list(self._active.keys()):            if page_index in discarded_pages:                # \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u043a\u043b\u0430\u0434\u0431\u0438\u0449\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432 (self._graveyard)                self._kill_worker(page_index)        for request in discarded:            if request['page_index'] not in discarded_pages &amp; set(self._active.keys()):                self.page_cancelled.emit(request['page_index'])    # 3. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u043a\u043b\u0430\u0434\u0431\u0438\u0449\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u041d\u0415\u0422 \u0432 \u0443\u0441\u0435\u0447\u0451\u043d\u043d\u043e\u043c _pending    #\u00a0\u00a0 (\u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u0435\u0441\u043b\u0438 _pending \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043c\u0435\u0436\u0434\u0443 flush-\u0430\u043c\u0438)    pending_pages = {r['page_index'] for r in self._pending}    stale = [p for p in self._active if p not in pending_pages]    for page_index in stale:        self._kill_worker(page_index)    # 4. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0442\u043e, \u0447\u0442\u043e \u0432 pending, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 active    for request in self._pending:        if request['page_index'] not in self._active:            self._start_worker(request)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h4>\u0428\u0430\u0433 5. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u043e\u0440\u043a\u0435\u0440, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u044b<\/h4>\n<pre><code class=\"python\">def startworker(self, request: dict):    \"\"\"\u0421\u043e\u0437\u0434\u0430\u0451\u0442 DBWorker \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0435\u0433\u043e.\"\"\"    generation = self._generation    worker = DBWorker(        page_index=page_index,        page_size=self._table_inf.page_size,        select_order_by=request['select_order_by'],        sql_query=request['sql_query'],        where_params=request['where_params'],        b_empty_result=request['b_empty_result'],        engine=self._engine,        arr_columns_description=self._arr_columns_description,    )    # \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432\u043e\u0440\u043a\u0435\u0440\u0430 \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c    worker.data_loaded.connect(        lambda pi, rows, headers, g=generation: self._on_worker_data(pi, rows, headers, g)    )    worker.error_occurred.connect(        lambda msg, pi=page_index, g=generation: self._on_worker_error(pi, msg, g)    )    worker.work_finished.connect(        lambda pi=page_index, g=generation: self._on_worker_finished(pi,g)    )    self._active[page_index] = worker    worker.start()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h4>\u0428\u0430\u0433 6. \u0412\u043e\u0440\u043a\u0435\u0440 \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 SELECT<\/h4>\n<pre><code class=\"python\">class DBWorker(QThread):\u00a0 \u00a0 data_loaded \u00a0 \u00a0= pyqtSignal(int, list, list)     # \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u043e\u0432 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f:    # page_index: \u043d\u043e\u043c\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (0, 1, 2...)    # rows: \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 (\u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u2014 \u043a\u043e\u0440\u0442\u0435\u0436 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439)    # headers: \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0451\u043d \u043a\u043e\u043b\u043e\u043d\u043e\u043a\u00a0 \u00a0 error_occurred = pyqtSignal(str)    # \u0422\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 (\u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u0441\u044c)\u00a0 \u00a0 work_finished \u00a0 \u00a0 \u00a0 = pyqtSignal()    # \u041f\u043e\u0442\u043e\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u2014 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 (\u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c)\u00a0 \u00a0 def run(self):\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 headers = [co.column_name for co in self.arr_columns_description] if self.arr_columns_description else []\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 - \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0430\u0451\u043c \u043f\u0443\u0441\u0442\u043e\u0442\u0443 \u0438 \u0432\u044b\u0445\u043e\u0434\u0438\u043c\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if self.b_empty_result:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 self.data_loaded.emit(int(self.page_index), [], headers)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435: \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 0 = 0 \u0441\u0442\u0440\u043e\u043a, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 1 = 100 \u0441\u0442\u0440\u043e\u043a, \u0438 \u0442.\u0434.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 offset = self.page_index * self.page_size\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0435\u043c \u043d\u0430 OFFSET ? ROWS FETCH NEXT ?            s_sql = f\"\"\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {self.sql_query}\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ORDER BY {self.select_order_by}\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 OFFSET ? ROWS FETCH NEXT ? ROWS ONLY\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"\"\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 params = list(self.where_params) + [offset, self.page_size]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 with self.connect_pool.get_connection() as conn:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 with conn.cursor() as cur:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cur.execute(s_sql, params)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 rows = cur.fetchall()\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if not self._cancelled:                # \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 self.data_loaded.emit(int(self.page_index), rows, headers) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 except Exception as e:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # \u041b\u044e\u0431\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0411\u0414 \u2192 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 UI \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # str(e) \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 self.error_occurred.emit(str(e))\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 finally:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 self.work_finished.emit()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b <code>data_loaded<\/code>.<\/p>\n<h4>\u0428\u0430\u0433 7. \u0422\u0440\u043e\u0442\u0442\u043b\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u041f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0435\u0433\u043e \u0432\u00a0\u043e\u043a\u043d\u043e<\/h4>\n<pre><code class=\"python\">def onworker_data(self, page_index: int, rows: list, headers: list, generation : int):\u00a0\u00a0\u00a0\u00a0\"\"\"\u0412\u043e\u0440\u043a\u0435\u0440 \u0432\u0435\u0440\u043d\u0443\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0440\u0443\u0436\u0443.\"\"\"\u00a0\u00a0\u00a0\u00a0if generation != self._generation:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return # \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c\u00a0\u00a0\u00a0\u00a0self.page_loaded.emit(page_index, rows, headers)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><code>_generation <\/code>\u2014 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435. \u041f\u0440\u0438\u00a0\u0441\u043c\u0435\u043d\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u041f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 1.<\/p>\n<h4>\u0428\u0430\u0433 8. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e (\u0441 \u0444\u043e\u0440\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b) <\/h4>\n<p>\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0438\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044c<\/p>\n<pre><code class=\"python\">def ondata_loaded(self, page_index, rows, headers):\u00a0\u00a0\u00a0\u00a0\"\"\"\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\"\"\"\u00a0\u00a0\u00a0 self.model.add_page_to_cache(page_index, rows, headers)\u00a0\u00a0\u00a0\u00a0self._update_status()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h4>\u0428\u0430\u0433 9. \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0430\u043d\u0438\u0446\u044b \u0432\u00a0\u043c\u043e\u0434\u0435\u043b\u0438<\/h4>\n<pre><code class=\"python\">def add_page_to_cache(self, page_index, rows, headers):    \"\"\"    \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043a\u044d\u0448.    \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:    - page_index: \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b    - rows: \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 (\u0438\u0437 \u0411\u0414)    - headers: \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0451\u043d \u043a\u043e\u043b\u043e\u043d\u043e\u043a    \u042d\u0442\u043e \u043c\u0435\u0442\u043e\u0434-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a: \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 DBWorker \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443.    \u041b\u043e\u0433\u0438\u043a\u0430:    1. \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u2014 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c (\u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b)    2. \u0420\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043a\u0438 (\u0434\u043b\u044f Optimistic Locking)    3. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 LRU-\u043a\u044d\u0448    4. \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \"\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445\"    5. \u0421\u043e\u043e\u0431\u0449\u0430\u0435\u043c Qt, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c (\u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u044f\u0447\u0435\u0435\u043a)    \"\"\"    # \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u2014 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c (\u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b)    if headers and not self._headers:        self.set_headers(headers)    if not rows:        return    data_rows = list(rows)    # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 LRU-\u043a\u044d\u0448    self._cache.put(page_index, {'data': data_rows})    # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \"\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445\" (\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438)    self._loading_pages.discard(page_index)     # \u0421\u043e\u043e\u0431\u0449\u0430\u0435\u043c Qt, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u0441\u0442\u0440\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c (\u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c)    # dataChanged.emit() \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Qt \u0432\u044b\u0437\u0432\u0430\u0442\u044c data() \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u044f\u0447\u0435\u0435\u043a \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430    start_row = page_index * self.table_inf.page_size  # \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441                                                        # \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435    end_row = start_row + len(rows)    self.dataChanged.emit(        self.index(start_row, 0), # \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 (\u0441\u0442\u0440\u043e\u043a\u0430, \u043a\u043e\u043b\u043e\u043d\u043a\u0430 0)        self.index(end_row - 1, self.columnCount() - 1), # \u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430        [Qt.DisplayRole] # \u041a\u0430\u043a\u0438\u0435 \u0440\u043e\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c (\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0441\u0442)    )<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h2>\u0427\u0442\u043e\u00a0\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c<\/h2>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043e 20\u00a0\u043c\u043b\u043d \u0441\u0442\u0440\u043e\u043a \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043a\u0440\u043e\u043b\u043b\u044f\u0442\u0441\u044f \u0431\u0435\u0437\u00a0\u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a. SQL Server \u043d\u0435\u00a0\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043b\u0430\u0432\u0438\u043d\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u0440\u0438\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u043c \u0441\u043a\u0440\u043e\u043b\u043b\u0435\u00a0\u2014 \u0442\u0440\u043e\u0442\u0442\u043b\u0435\u0440 \u0433\u0430\u0441\u0438\u0442 \u0432\u0441\u0451 \u0434\u043e 1-2-\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e\u00a0\u0411\u0414, \u043f\u043e\u0442\u043e\u043a\u0438 \u043d\u0435\u00a0\u0437\u043d\u0430\u044e\u0442 \u043f\u0440\u043e\u00a0UI\u00a0\u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e.<\/p>\n<h2>\u0427\u0442\u043e\u00a0\u043d\u0435\u00a0\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e<\/h2>\n<p>Python \u0434\u043b\u044f\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0441\u0430\u043c \u043f\u043e\u00a0\u0441\u0435\u0431\u0435 \u043d\u0435\u00a0\u0438\u0434\u0435\u0430\u043b\u0435\u043d\u00a0\u2014 \u043d\u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043d\u0435\u043f\u043b\u043e\u0445\u043e. OFFSET \u043d\u0430\u00a0\u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 (\u043c\u0438\u043b\u043b\u0438\u043e\u043d+) \u043f\u0440\u0438\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u0435\u0442\u00a0\u2014 \u044d\u0442\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043a\u0430\u043a\u00a0\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441 \u0440\u0430\u0434\u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<p>\u0417\u0430\u00a0\u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b QThread, \u043e\u043f\u0442\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0440\u0438\u00a0\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, Excel ETL\u2011\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d, Data\u2011Driven \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0444\u043e\u0440\u043c. \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u00a0\u2014 \u0440\u0430\u0441\u043f\u0438\u0448\u0443 \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043c\u0435\u0442\u043a\u0430\u0445.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1107894\/\">https:\/\/habr.com\/ru\/articles\/1107894\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u0442\u0430\u0442\u044c\u044f\u00a0\u2014 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u043f\u0440\u0438\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f\u00a0\u0433\u043e\u0441\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438: \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043e\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0441\u0442\u0440\u043e\u043a, Excel \u043a\u0430\u043a\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445.\u0418\u043d\u0442\u0435\u0440\u0435\u0441 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u2011\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0434\u0438\u043a\u0442\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0433\u043e\u0441\u0441\u043b\u0443\u0436\u0431\u044b. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c\u00a0\u2014 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u0441\u0432\u0435\u0436\u0438 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438. \u0412\u00a0\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u00a0\u2014 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043b\u0435\u043d\u0438\u0432\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430\u044f \u0438 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u041f\u041a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0443\u0433\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0437\u0430\u0439\u0434\u0451\u0442\u00a0\u2014 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u0427\u0430\u0441\u0442\u044c 1. \u0414\u043b\u044f\u00a0\u0447\u0435\u0433\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u0438? \u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u0412\u0432\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u043e\u0432 \u0432\u0435\u0434\u0443\u0442 \u0441\u0432\u043e\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u00a0Excel. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438\u0437\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432: \u043f\u043e\u0434\u043e\u0442\u0447\u0451\u0442\u043d\u044b\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u043e\u0434 100\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u043f\u043e\u0434\u0432\u0435\u0434\u043e\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439\u00a0\u2014 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u0432\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u00a0\u043f\u043e\u043b\u043d\u043e\u0439 \u043c\u0435\u0440\u0435: \u043f\u0440\u0438\u00a0\u0441\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u00ab\u0441\u0442\u043e\u043b\u0431\u0446\u044b\u00bb \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0432\u00a0\u043f\u043e\u043b\u044f\u0445 \u0433\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u0430\u0442\u0430 \u0438\u043b\u0438\u00a0\u0441\u0443\u043c\u043c\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0442\u0435\u043a\u0441\u0442 \u043f\u0440. \u0411\u043e\u0440\u044c\u0431\u0430 \u0437\u0430\u00a0\u0447\u0438\u0441\u0442\u043e\u0442\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0Excel\u00a0\u2014 \u0442\u0430 \u0435\u0449\u0451 \u0437\u0430\u0434\u0430\u0447\u0430.\u041a\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u00a0\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u0435 \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u0441\u0432\u043e\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u0430\u00a0\u043a\u00a0\u043d\u0435\u0439 \u0435\u0449\u0451 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430.\u0412\u00a0\u043e\u0431\u0449\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0446\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u043f\u043e\u00a0\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u0442\u0434\u0435\u043b\u043e\u0432 \u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0447\u0435\u043a \u0432\u00a0\u044d\u0442\u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u0430\u0445. \u0412\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043a\u0430\u043a\u00a0\u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u0442\u0430\u043a \u0438 \u0441\u00a0\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041b\u044e\u0431\u043e\u0439 \u0441\u0431\u043e\u0440 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043a\u00a0\u0441\u0440\u043e\u043a\u0443 (\u0430 \u0432\u00a0\u0433\u043e\u0441\u0441\u0435\u043a\u0442\u043e\u0440\u0435 \u0441\u0440\u043e\u043a\u0438 \u0436\u0451\u0441\u0442\u043a\u0438\u0435) \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0430\u00a0\u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432 (\u0438 \u044d\u0442\u043e \u0434\u043b\u044f\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u0441\u0442\u0430\u043b\u043e \u043d\u043e\u0440\u043c\u043e\u0439).\u0412\u00a0\u0446\u0435\u043b\u043e\u043c, \u044d\u0442\u043e \u0442\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0434\u043b\u044f\u00a0\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439.\u0412\u044b\u0445\u043e\u0434 \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0432\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f\u00a0\u0431\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u0441\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u0440\u0430\u0437\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u043b\u0430\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432.\u041d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u00a0\u0436\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u043e\u00a0\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u043e\u2011\u0434\u0440\u0443\u0433\u043e\u043c\u0443: \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0430\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0431\u044b\u043b\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u043f\u043e\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u044b\u043b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 (\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430) \u0438 \u043f\u0440.\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u00a0\u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u0430.\u0427\u0451\u0442\u043a\u043e\u0435 \u0422\u0417 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u0432\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 (\u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430\u00a0\u043d\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0433\u043e\u0434\u0430\u00a0\u2014 \u043c\u0438\u043d\u0438\u043c\u0443\u043c). \u0411\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441\u00a0\u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u043e\u0432.\u0414\u043b\u044f\u00a0\u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u0438 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e meta\u2011driven database\u2011centric \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0442\u043e \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u043b\u043e\u0433\u0438\u043a\u0430 \u0444\u043e\u0440\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0411\u0414, \u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430\u00a0\u2014 \u0432\u00a0\u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445 \u0411\u0414), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u00ab\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00bb \u043f\u043e\u0434\u00a0\u043d\u0443\u0436\u0434\u044b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u041f\u0440\u0438\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0438\u0442\u0430\u0435\u0442 \u044d\u0442\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u00ab\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u00bb \u0444\u043e\u0440\u043c\u0443 \u043d\u0430\u00a0\u043b\u0435\u0442\u0443.\u041d\u0430\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u0438\u043b\u0438 \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u00a0\u0434\u0432\u0443\u0445 \u043e\u0442\u0434\u0435\u043b\u0430\u0445 (\u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u0445\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a\u00a0\u0440\u0430\u0431\u043e\u0442\u0435), \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 100\u00a0\u0444\u043e\u0440\u043c.\u0421\u0440\u043e\u043a\u0438: 8\u00a0\u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, 2\u20133\u00a0\u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u00a0\u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u0435.\u0421\u0442\u0430\u0442\u044c\u044f \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u00a0\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439, \u0442\u0430\u043a \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0441\u043f\u0435\u043a\u0442. \u041d\u0430\u0447\u043d\u0451\u043c \u0441\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438 \u043a\u00a0\u0437\u0430\u0434\u0430\u0447\u0435 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0442\u0435 \u0438\u043b\u0438\u00a0\u0438\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.\u0427\u0430\u0441\u0442\u044c 2. \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442\u0412\u00a0\u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0443\u0442\u0438 \u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u00a0\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u0430\u043c\u0438 \u044d\u0442\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u043e, \u043d\u043e\u00a0\u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u043e\u0442\u00a0\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u0438\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 (\u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435) \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435.\u0427\u0442\u043e\u00a0\u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u043c\u0435\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430?\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439\u00a0\u2014 \u043d\u0443\u0436\u043d\u044b \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0442\u0430\u0431\u043b\u0438\u0446. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u00a0\u2014 \u0432\u00a0\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f\u00a0\u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0435\u0451 \u043d\u0435\u00a0\u0443\u043c\u0435\u0441\u0442\u0438\u0448\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043e\u043a \u043a\u00a0\u0441\u0442\u0440\u043e\u043a\u0430\u043c. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443, \u0430\u00a0\u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u00a0\u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f. \u0424\u043e\u0440\u043c \u0432\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u043d\u043e\u0433\u043e: \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442: \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0444\u043e\u0440\u043c\u043e\u0447\u043a\u0443 \u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0444\u043e\u0440\u043c\u044b \u00ab\u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f\u00bb \u0438\u0437\u00a0\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u043d\u0435\u0441\u0451\u043d\u043d\u044b\u0445 \u0432\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0438\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0444\u043e\u0440\u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0435\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435: \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0430\u00a0\u043d\u0438\u0445 (\u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0438, \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0438), \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0438 \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439, \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u043e\u0432&#8230; \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u0438\u0434\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0443\u0434\u043e\u0431\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0438\u0437\u00a0\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 (\u043c\u043d\u043e\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u044b \u043f\u043e\u0445\u043e\u0436\u0438 \u043f\u043e\u00a0\u043b\u043e\u0433\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c).\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a\u00a0\u2014 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u0435\u043c\u0443 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e: \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b, \u0430\u00a0\u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0445 \u043d\u0443\u0436\u043d\u044b\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e. \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u0430\u043c\u0430 \u0444\u043e\u0440\u043c\u0430 \u0438 \u0435\u0451 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b (+ \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u044b), \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u00a0\u0442\u0435\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0441\u0442\u044c \u0443\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u00a0\u0411\u0414. \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0444\u043e\u0440\u043c\u044b \u043f\u0440\u0438\u00a0\u0435\u0451 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437\u00a0\u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 (\u0430 \u043d\u0435\u00a0\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f). \u0414\u043b\u044f\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0443\u0434\u043e\u0431\u043d\u043e: \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u00a0\u0440\u043e\u043b\u0438 (\u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0435\u0441\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u043e\u043b\u0435\u0439 \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430) \u0438 \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 (\u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0441\u0447\u0438\u0442\u0430\u0435\u0442\u00bb \u0438\u0437\u00a0\u0431\u0430\u0437\u044b).\u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0432\u00a0Excel (MS Excel\u00a0\u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438) \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u043e\u0432. \u041e\u0442\u0447\u0451\u0442 \u043d\u0443\u0436\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u0444\u043e\u0440\u043c\u0430 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0443 \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e (\u0442\u0430\u043a\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e). \u0414\u043b\u044f\u00a0\u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432\u00a0Excel (\u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438\u0437\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u0438\u0441\u0442\u043e\u0432 \u0441\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u00ab\u0448\u0430\u043f\u043a\u043e\u0439\u00bb \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432) \u0438 \u0441\u043a\u0440\u0438\u043f\u0442 SQL \u0434\u043b\u044f\u00a0\u0435\u0451 \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u00ab\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0435 \u0433\u043b\u0430\u0437\u0443\u00bb \u043e\u0442\u0447\u0451\u0442\u044b, \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a\u00a0\u0432\u044b\u0432\u043e\u0434\u0443 \u043d\u0430\u00a0\u043f\u0435\u0447\u0430\u0442\u044c). \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u0438\u0441\u0442\u043e\u0432 \u0432\u00a0\u043e\u0434\u0438\u043d \u043e\u0442\u0447\u0451\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u00ab\u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c\u00bb \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u00ab\u0440\u0430\u0437\u0440\u0435\u0437\u0430\u0445\u00bb (\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c).\u041f\u043e\u043c\u0438\u043c\u043e \u0442\u0430\u0431\u043b\u0438\u0446 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0449\u0451\u043b\u043a\u0430\u0435\u0442 \u043c\u044b\u0448\u043a\u043e\u0439 \u043f\u043e\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u0432\u0438\u0434\u0438\u0442 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u00a0\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0443). \u0412\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a\u0430\u043a \u00ab\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u00bb \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u0442\u0430\u043a \u0438 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439.\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f\u00a0\u2014 \u0430\u0443\u0434\u0438\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b (\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u00a0\u043a\u0430\u043a\u0438\u0435 \u0444\u043e\u0440\u043c\u044b \u0437\u0430\u0445\u043e\u0434\u0438\u043b, \u043a\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u0431\u0438\u0440\u0430\u043b, \u0447\u0442\u043e\u00a0\u0438\u0437\u043c\u0435\u043d\u044f\u043b, \u043a\u0430\u043a\u0438\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b).\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u00a0Excel. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0443\u0434\u0435\u043b\u0435\u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u00ab\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435\u00bb \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u00a0\u0435\u0451 \u0448\u0430\u043f\u043a\u0435, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430. \u042d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a, \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0437\u0430\u00a0\u0440\u0430\u043c\u043a\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e\u00a0\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0441\u00a0\u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0422\u0430\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0438\u0431\u043a\u043e \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u00ab\u043e\u0431\u043e\u0433\u0430\u0449\u0435\u043d\u0438\u0435\u00bb \u0440\u0430\u043d\u0435\u0435 \u0432\u043d\u0435\u0441\u0451\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435\u00a0\u2014 \u043e\u0431\u044a\u0451\u043c\u044b. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u00a0\u2014 \u0434\u043e 100\u00a0\u0442\u044b\u0441. \u0441\u0442\u0440\u043e\u043a. \u041d\u043e\u00a0\u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u00ab\u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b\u00bb \u043e\u0431\u044a\u0451\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0442\u044c 20\u00a0\u043c\u043b\u043d. \u0441\u0442\u0440\u043e\u043a. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0447\u0435\u0440\u0435\u0437 select * \u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435\u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438.\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441: \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u00a0\u0432\u0437\u044f\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0435? \u041d\u0430\u00a0\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0447\u0438\u043d. \u0412\u043e\u2011\u043f\u0435\u0440\u0432\u044b\u0445, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432\u00a0\u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0443\u0442. \u0411\u044b\u043b\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0432\u0435\u043d\u0434\u043e\u0440\u0430. \u0412\u043e\u2011\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0435\u00a0\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0442\u00a0\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b (\u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430\u043c\u0438, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0431\u0438\u0437\u043d\u0435\u0441\u0443 \u044d\u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f: \u043d\u0435\u00a0\u0436\u0434\u0451\u043c, \u043f\u043e\u043a\u0430 \u0432\u0435\u043d\u0434\u043e\u0440 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442 \u043f\u0430\u0442\u0447, \u0438 \u043d\u0435\u00a0\u0438\u0449\u0435\u043c \u043e\u0431\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u00ab\u043a\u043e\u0441\u0442\u044b\u043b\u0438\u00bb). \u0418, \u0447\u0442\u043e\u00a0\u043d\u0435\u043c\u0430\u043b\u043e\u0432\u0430\u0436\u043d\u043e, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u0430\u044f \u0447\u0438\u0441\u0442\u043e\u0442\u0430.\u041f\u043e\u0447\u0435\u043c\u0443 Python\u00a0\u2014 \u043c\u044b \u0433\u043e\u0441\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 (\u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u00a0\u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443), \u043d\u0430\u043c \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442 \u043f\u043e\u00a0Python \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0447\u0442\u043e\u00a0\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0433\u0440\u0443\u043f\u043f\u044b.Python \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432? \u0414\u0430, \u043d\u043e\u00a0\u043d\u0430\u00a0\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u00a0\u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u00ab\u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a\u00bb \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u00a0\u043d\u0430\u00a0\u0441\u0430\u043c\u044b\u0445 \u043b\u0443\u0447\u0448\u0438\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438.\u041f\u043e\u0447\u0435\u043c\u0443 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u0412\u0441\u0435 \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u043a\u00a0\u0442\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0443\u0436\u043d\u043e \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0438 \u0432\u00a0Excel\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043d\u0430\u0441 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u0435\u0435.\u041f\u043e\u0447\u0435\u043c\u0443 low\u2011code meta\u2011driven? \u041f\u043e\u00a0\u0438\u0442\u043e\u0433\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043f\u0435\u0440\u0432\u044b\u043c \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0443\u00a0\u043d\u0430\u0441 \u0431\u044b\u043b\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0431\u043e\u043b\u0435\u0435 100\u00a0\u0444\u043e\u0440\u043c (\u0440\u0430\u0437\u043d\u044b\u0445: \u0441\u00a0\u043e\u0431\u0449\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0438 \u0441\u00a0\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u2026). \u0421\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e \u00ab\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u00bb \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0441\u0438\u043b\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u0437\u0430 8\u00a0\u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0435\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c. \u041d\u0435\u043c\u0430\u043b\u043e\u0432\u0430\u0436\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u044b \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e\u00a0\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. \u0412\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.\u0417\u0430\u0447\u0435\u043c database\u2011centric (\u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0430 \u0432\u00a0\u0431\u0430\u0437\u0435)? \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f: \u043f\u0440\u0438\u00a0\u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432\u00a0\u0445\u0440\u0430\u043d\u0438\u043c\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u043d\u0430\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0411\u0414. \u0424\u043e\u0440\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0443\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u00a0\u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0431\u0435\u0437\u00a0\u043a\u0430\u043a\u0438\u0445\u2011\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0434\u0430 \u0432\u00a0\u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u0438\u00a0\u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u044f, \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0430\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435\u2011\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 (\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c). \u0422\u0430\u043a\u043e\u0435 \u043e\u043a\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0432\u0441\u0435\u043c \u0436\u0438\u0437\u043d\u044c.\u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0448\u043b\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u0430\u0445.\u041f\u043e\u0440\u044f\u0434\u043e\u043a:\u0418\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 (\u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u00a0\u043e\u0431\u0449\u0435\u043c, \u0430\u00a0\u0437\u0430\u0442\u0435\u043c \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f).\u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441\u00a0\u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0439). \u0411\u0430\u043d\u0430\u043b\u044c\u043d\u043e, \u043d\u043e\u00a0\u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0438 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b (\u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0434\u0430\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u044b \u043d\u0435\u00a0\u0431\u0443\u0434\u0443\u0442).\u0418\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.\u0414\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 (\u0438 \u0442\u0430\u043a \u0434\u043e\u00a0\u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-503246","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/503246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=503246"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/503246\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=503246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=503246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=503246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}