{"id":277221,"date":"2016-03-29T18:03:02","date_gmt":"2016-03-29T14:03:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=277221"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=277221","title":{"rendered":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Apache Ignite \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 MyBatis \u043a\u044d\u0448 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (L2 cache)"},"content":{"rendered":"<p>       \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c apache ignite \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 2-\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u044d\u0448\u0430 \u0434\u043b\u044f MyBatis \u0438\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043a\u044d\u0448\u0430 \u0432 Apache Ignite.<br \/>  <a name=\"habracut\"><\/a><br \/>  <b>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Apache Ignite?<\/b> \u042d\u0442\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f, \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (In-memory) \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 In-memory data grid, \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 JSR 107 (Jcache)<\/li>\n<li>\u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438<\/li>\n<li>\u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438<\/li>\n<li>\u0441 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0435\u043c (In-memory accelerator) \u0434\u043b\u044f Hadoop \u0438 Spark. <\/li>\n<\/ul>\n<p>  <b>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e Apache Ignite?<\/b> \u041c\u044b \u0434\u043e\u043b\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 EhCache \u0438 Oracle Coherence, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 HazelCast \u0438\u0437-\u0437\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 HazelCast \u0441\u043d\u0438\u0437\u0438\u043b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 open source \u0432\u0435\u0440\u0441\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f spark \u0438 Hadoop. <\/p>\n<p>  <b>\u041f\u043e\u0447\u0435\u043c\u0443 MyBatis?<\/b> \u0412\u044b\u0431\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 Hibernate \u0438 MyBatis \u2013 \u044d\u0442\u043e \u043a\u0430\u043a \u0432\u044b\u0431\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u0431\u0440\u0435\u043d\u0434\u0430\u043c\u0438 BMW \u0438 Mercedes. \u0414\u043b\u044f \u043d\u0430\u0441 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Native SQL \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 SQL-\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 (\u043d\u0435 \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0432\u0441\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u0430\u043c), \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b. <\/p>\n<p>  \u041d\u0435\u0434\u0430\u0432\u043d\u043e Apache Ignite \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 MyBatis \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 2-\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u044d\u0448\u0430, \u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041b\u044e\u0431\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0442\u043e\u044f\u0442 \u0434\u043e\u0440\u043e\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u2013 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u0411\u0414: \u0442.\u0435. \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u044d\u0448. <br \/>  \u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<p>  T = t<sub>acq <\/sub> + t<sub>req<\/sub> + t<sub>exec<\/sub> + t<sub>res<\/sub><\/p>\n<p>  <i>\u0433\u0434\u0435:<\/p>\n<p>  t<sub>acq<\/sub> \u2013 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f<br \/>  t<sub>req<\/sub> \u2013 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a \u0411\u0414<br \/>  t<sub>exec<\/sub> \u2013 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0411\u0414<br \/>  t<sub>res<\/sub> \u2013 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0411\u0414<\/i><\/p>\n<p>  \u0414\u043b\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442 20 \u0434\u043e 150 \u043c\u0441.<\/p>\n<p>  \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 MyBatis \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 2 \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u044d\u0448\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<ul>\n<li>\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 Local cache (\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)<\/li>\n<li>\u043a\u044d\u0448 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f 2<sup>nd<\/sup> level<\/li>\n<\/ul>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/169\/71c\/04b\/16971c04be1103ea6d32cee2d2badc26.png\" \/><\/div>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e MyBatis \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (L1 Cache), \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 2-\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c: \u0432 \u043d\u0435\u043c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0435\u0441\u0441\u0438\u0439. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0432\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 L2 \u043a\u044d\u0448-\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  MyBatis 2<sup>nd<\/sup> level \u043a\u044d\u0448 \u0445\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 (entitiy data), \u0430 \u043d\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u0430\u043a \u0432 hibernate. \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u043a\u044d\u0448\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u2018Serialized\u2019 \u2013 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0433\u0434\u0435 \u043a\u043b\u044e\u0447 \u2013 \u044d\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2013 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. <\/p>\n<p>  \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043a\u044d\u0448 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 apache ignite \u0434\u043b\u044f MyBatis 2<sup>nd<\/sup> level cache.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/987\/8f1\/699\/9878f16998f804fd7740d73c6522418b.png\"\/> <\/p>\n<p>  \u0413\u0434\u0435:<\/p>\n<p>  <i><b>cache key:<\/b> <code>[idHash=1499858, hash=2019660929, checksum=800710994, count=6, multiplier=37,hashcode=2019660929, updateList=[com.blu.ignite.mapper.UserMapper.getUserObject, 0, 2147483647, SELECT * FROM all_objects t where t.OBJECT_TYPE='TABLE' and t.object_name=?, USERS, SqlSessionFactoryBean]]<\/code><br \/>  <b>Value class:<\/b> <code>java.util.ArrayList<\/code><br \/>  <b>Cache value:<\/b> <code>[UserObject [idHash=243119413, hash=1658511469, owner=C##DONOTDELETE, object_type=TABLE, object_id=94087, created=Mon Feb 15 13:59:41 MSK 2016, object_name=USERS]]<\/code><\/i><\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043b\u044e\u0447 \u2013 \u044d\u0442\u043e SQL \u0437\u0430\u043f\u0440\u043e\u0441 <code>&quot;SELECT * FROM all_objects t where t.OBJECT_TYPE='TABLE' and t.object_name=?&quot;<\/code><\/p>\n<p>  \u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440 \u044f \u0432\u0437\u044f\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u2018all_objects\u2019 \u0438\u0437 \u0421\u0423\u0411\u0414 Oracle \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b:<\/p>\n<pre><code>QUERY_1: SELECT * FROM all_objects t where t.OBJECT_TYPE='TABLE' and t.object_name='EMP'; QUERY_2: SELECT * FROM all_objects t where t.OBJECT_TYPE='TABLE'; QUERY_3: SELECT count(*) FROM all_objects;<\/code><\/pre>\n<p>  <b>\u0425\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 SandBox:<\/b>  <\/p>\n<table>\n<tr>\n<td>\u041a\u043b\u0430\u0441\u0442\u0435\u0440 Apache ignite  <\/td>\n<td>2 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u044b (VM Ware)  <\/td>\n<td>CPU: 2 <br \/>  <b>RAM<\/b>: 4 \u0413\u0412<br \/>  <b>Java HEAP<\/b>: 2 \u0413\u0412<br \/>  <b>OS<\/b>: Red Hat Santigo <br \/>  <b>JVM<\/b>: Oracle JVM 1.7_45<\/td>\n<\/tr>\n<tr>\n<td>Oracle 12c  <\/td>\n<td>\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 (VM Ware)  <\/td>\n<td><b>CPU<\/b>: 4<br \/>  <b>RAM<\/b>: 8 \u0413\u0412<br \/>  <b>OS<\/b>: Red Hat Santigo <\/td>\n<\/tr>\n<tr>\n<td>Standalone java app + SoapUI  <\/td>\n<td>MacBook Pro   <\/td>\n<td><b>CPU<\/b>: 4 <br \/>  <b>RAM<\/b>: 16 \u0413\u0412<br \/>  <b>JVM<\/b>: Oracle JVM 1.7_45  <\/td>\n<\/tr>\n<\/table>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u044b\u0448\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b (QUERY1-3) \u0447\u0435\u0440\u0435\u0437 SQL Developer, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430:  <\/p>\n<table>\n<tr>\n<td>\u2116  <\/td>\n<td>\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430  <\/td>\n<td>\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 (mc)  <\/td>\n<\/tr>\n<tr>\n<td>1  <\/td>\n<td><code>QUERY_1: SELECT * FROM all_objects t where t.OBJECT_TYPE='TABLE' and t.object_name='EMP';<\/code>  <\/td>\n<td>~660  <\/td>\n<\/tr>\n<tr>\n<td>2  <\/td>\n<td><code>QUERY_2: SELECT * FROM all_objects t where t.OBJECT_TYPE='TABLE';<\/code>  <\/td>\n<td>~378  <\/td>\n<\/tr>\n<tr>\n<td>3  <\/td>\n<td><code>QUERY_3: SELECT count(*) FROM all_objects;<\/code>   <\/td>\n<td>~700  <\/td>\n<\/tr>\n<\/table>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c apache ignite \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u044d\u0448\u0430 2-\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 apache ignite \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"http:\/\/frommyworkshop.blogspot.ru\/2016\/02\/quick-start-with-in-memory-data-grid.html\">\u043c\u043e\u0435\u043c \u0431\u043b\u043e\u0433\u0435<\/a>, \u0430 \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u2013 \u043d\u0430 <a href=\"https:\/\/github.com\/srecon\/ignite-startup\">github<\/a>.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c mybatis-ignite \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u041c\u0430\u0432\u0435\u043d\u0430:<\/p>\n<pre><code>&lt;dependency&gt; &lt;groupId&gt;org.mybatis.caches&lt;\/groupId&gt; &lt;artifactId&gt;mybatis-ignite&lt;\/artifactId&gt; &lt;version&gt;1.0.0-beta1&lt;\/version&gt; &lt;\/dependency&gt;<\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c MyBatis sql mapper <\/p>\n<pre><code>&lt;mapper namespace=&quot;com.blu.ignite.mapper.UserMapper&quot;&gt; &lt;cache type=&quot;org.mybatis.caches.ignite.IgniteCacheAdapter&quot; \/&gt; &lt;select id=&quot;getUserObject&quot; parameterType=&quot;String&quot; resultType=&quot;com.blu.ignite.dto.UserObject&quot; useCache=&quot;true&quot;&gt; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SELECT * FROM all_objects t where t.OBJECT_TYPE='TABLE' and t.object_name=#{objectName} &lt;\/select&gt; &lt;select id=&quot;getAllObjectsTypeByGroup&quot; parameterType=&quot;String&quot; resultType=&quot;com.blu.ignite.dto.UobjectGroupBy&quot; useCache=&quot;true&quot;&gt; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SELECT t.object_type, count(*) as cnt FROM all_objects t group by t.OBJECT_TYPE &lt;\/select&gt;\u00a0 &lt;select id=&quot;allObjectCount&quot; parameterType=&quot;String&quot; resultType=&quot;String&quot; useCache=&quot;true&quot;&gt; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SELECT count(*) FROM all_objects &lt;\/select&gt; &lt;\/mapper&gt;<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043c\u044b:  <\/p>\n<ul>\n<li>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u044d\u0448-\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043d\u0430 IgniteCacheAdapter<\/li>\n<li>\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c useCache=\u00abtrue\u00bb, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c ignite spring \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/p>\n<pre><code>&lt;bean id=&quot;ignite.cfg&quot; class=&quot;org.apache.ignite.configuration.IgniteConfiguration&quot;&gt; &lt;property name=&quot;gridName&quot; value=&quot;TestGrid&quot;\/&gt;  &lt;property name=&quot;clientMode&quot; value=&quot;false&quot;\/&gt;  &lt;property name=&quot;cacheConfiguration&quot;&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;list&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;bean class=&quot;org.apache.ignite.configuration.CacheConfiguration&quot;&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;property name=&quot;name&quot; value=&quot;myBatisCache&quot;\/&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;property name=&quot;cacheMode&quot; value=&quot;PARTITIONED&quot;\/&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;property name=&quot;backups&quot; value=&quot;1&quot;\/&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;property name=&quot;statisticsEnabled&quot; value=&quot;true&quot; \/&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;property name=&quot;writeSynchronizationMode&quot; value=&quot;FULL_SYNC&quot;\/&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/bean&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/list&gt;  \u00a0\u00a0\u00a0&lt;\/property&gt;  \u00a0\u00a0\u00a0&lt;property name=&quot;discoverySpi&quot;&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;bean class=&quot;org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi&quot;&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;property name=&quot;ipFinder&quot;&gt; &lt;bean class=&quot;org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder&quot;&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;property name=&quot;addresses&quot;&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;list&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;value&gt;IP_ADDRESS_IGNITE_NODE&lt;\/value&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;value&gt;IP_ADDRESS_IGNITE_NODE&lt;\/value&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/list&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/property&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/bean&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/property&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/bean&gt;  \u00a0\u00a0\u00a0&lt;\/property&gt; &lt;\/bean&gt; <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u2018clientMode\u2019 \u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c false. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c cacheMode = Partitioned, \u0433\u0434\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 (Partitioned) \u043a\u044d\u0448 \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u044d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e (Replicated) \u0440\u0435\u0436\u0438\u043c\u0430, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0443\u0437\u043b\u0430\u043c\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  <code>statisticsEnabled = true<\/code>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u044d\u0448: hit count \u0438.\u0442.\u0434<\/p>\n<p>  <code>writeSynchronizationMode= FULL_SYNC<\/code>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c\u0438 \u0443\u0437\u043b\u0430\u043c\u0438.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 Java-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441:<\/p>\n<pre><code>public interface UserMapper {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0User getUser( String id); List&lt;string&gt; getUniqueJob(); UserObject getUserObject(String objectName); String allObjectCount(); List&lt;uobjectgroupby&gt; getAllObjectsTypeByGroup(); }<\/code><\/pre>\n<p>  \u0410 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 soap-\u0441\u0435\u0440\u0432\u0438\u0441<\/p>\n<pre><code>@WebService(name = &quot;IgniteTestServices&quot;,  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0serviceName=&quot; IgniteTestServices &quot;,  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0targetNamespace = &quot;http:\/\/com.blu.rules\/services&quot;) public class WebServices {  \u00a0\u00a0\u00a0private UserServices userServices;    \u00a0\u00a0\u00a0@WebMethod(operationName = &quot;getUserName&quot;)  \u00a0\u00a0\u00a0public String getUserName(String userId){  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0User user = userServices.getUser(userId);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return user.getuName();  \u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0@WebMethod(operationName = &quot;getUserObject&quot;)  \u00a0\u00a0\u00a0public UserObject getUserObject(String objectName){  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return userServices.getUserObject(objectName);  \u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0@WebMethod(operationName = &quot;getUniqueJobs&quot;)  \u00a0\u00a0\u00a0public List&lt;string&gt; getUniqueJobs(){  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return userServices.getUniqueJobs();  \u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0@WebMethod(exclude = true)  \u00a0\u00a0\u00a0public void setDao(UserServices userServices){  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.userServices = userServices;  \u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0@WebMethod(operationName = &quot;allObjectCount&quot;)  \u00a0\u00a0\u00a0public String allObjectCount(){  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return userServices.allObjectCount();  \u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0@WebMethod(operationName = &quot;getAllObjectsTypeCntByGroup&quot;)  \u00a0\u00a0\u00a0public List&lt;uobjectgroupby&gt; getAllObjectsTypeCntByGroup(){  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return userServices.getAllObjectCntbyGroup();  \u00a0\u00a0\u00a0}  } <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0432\u0435\u0431-\u043c\u0435\u0442\u043e\u0434 \u2018getAllObjectsTypeCntByGroup\u2019, \u0442\u043e \u0447\u0435\u0440\u0435\u0437 SoapUi \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u0434\u043e ~1600 \u043c\u0441 \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/fa2\/e00\/f0b\/fa2e00f0b8ea42a65f2d96a6efd5a4b3.png\"\/><\/p>\n<p>  \u0421\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043d\u0438\u0437\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043a\u044d\u0448 apache ignite, \u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0411\u0414 \u043d\u0435 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/4e9\/55f\/971\/4e955f971ba3306daa7e3e0420d6ed7c.png\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u0435\u0431-\u043c\u0435\u0442\u043e\u0434\u0430, \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0437\u0430\u0439\u043c\u0435\u0442 \u043e\u0442 5-6 \u043c\u0441.<\/p>\n<p>  \u0412 apache ignite \u0437\u0430\u043f\u0438\u0441\u044c \u043a\u044d\u0448 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e78\/ab2\/81f\/e78ab281ffeee12fa797365f074961df.png\"\/><\/p>\n<p>  <b>cache key:<\/b> <code>[idHash=46158416, hash=1558187086, checksum=2921583030, count=5, multiplier=37, hashcode=1558187086, updateList=[com.blu.ignite.mapper.UserMapper.getAllObjectsTypeByGroup, 0, 2147483647, SELECT t.object_type, count(*) as cnt FROM all_objects t group by t.OBJECT_TYPE, SqlSessionFactoryBean]]<\/code><br \/>  <b>Value class:<\/b> <code>java.util.ArrayList<\/code><br \/>  <b>Cache value:<\/b> <code>[UobjectGroupBy [idHash=2103707742, hash=1378996400, cnt=1, object_type=EDITION], UobjectGroupBy [idHash=333378159, hash=872886462, cnt=444, object_type=INDEX PARTITION], UobjectGroupBy [idHash=756814918, hash=1462794064, cnt=32, object_type=TABLE SUBPARTITION], UobjectGroupBy [idHash=931078572, hash=953621437, cnt=2, object_type=CONSUMER GROUP], UobjectGroupBy [idHash=1778706917, hash=1681913927, cnt=256, object_type=SEQUENCE], UobjectGroupBy [idHash=246231872, hash=1764800190, cnt=519, object_type=TABLE PARTITION], UobjectGroupBy [idHash=1138665719, hash=1030673983, cnt=4, object_type=SCHEDULE], UobjectGroupBy [idHash=232948577, hash=1038362844, cnt=1, object_type=RULE], UobjectGroupBy [idHash=1080301817, hash=646054631, cnt=310, object_type=JAVA DATA], UobjectGroupBy [idHash=657724550, hash=1248576975, cnt=201, object_type=PROCEDURE], UobjectGroupBy [idHash=295410055, hash=33504659, cnt=54, object_type=OPERATOR], UobjectGroupBy [idHash=150727006, hash=499210168, cnt=2, object_type=DESTINATION], UobjectGroupBy [idHash=1865360077, hash=727903197, cnt=9, object_type=WINDOW], UobjectGroupBy [idHash=582342926, hash=1060308675, cnt=4, object_type=SCHEDULER GROUP], UobjectGroupBy [idHash=1968399647, hash=1205380883, cnt=1306, object_type=PACKAGE], UobjectGroupBy [idHash=1495061270, hash=1345537223, cnt=1245, object_type=PACKAGE BODY], UobjectGroupBy [idHash=1328790450, hash=1823695135, cnt=228, object_type=LIBRARY], UobjectGroupBy [idHash=1128429299, hash=1267824468, cnt=10, object_type=PROGRAM], UobjectGroupBy [idHash=760711193, hash=1240703242, cnt=17, object_type=RULE SET], UobjectGroupBy [idHash=317487814, hash=61657487, cnt=10, object_type=CONTEXT], UobjectGroupBy [idHash=1079028994, hash=1960895356, cnt=229, object_type=TYPE BODY], UobjectGroupBy [idHash=276147733, hash=873140579, cnt=44, object_type=XML SCHEMA], UobjectGroupBy [idHash=24378178, hash=1621363993, cnt=1014, object_type=JAVA RESOURCE], UobjectGroupBy [idHash=1891142624, hash=90282027, cnt=10, object_type=DIRECTORY], UobjectGroupBy [idHash=902107208, hash=1995006200, cnt=593, object_type=TRIGGER], UobjectGroupBy [idHash=142411235, hash=444983119, cnt=14, object_type=JOB CLASS], UobjectGroupBy [idHash=373966405, hash=1518992835, cnt=3494, object_type=INDEX], UobjectGroupBy [idHash=580466919, hash=1394644601, cnt=2422, object_type=TABLE], UobjectGroupBy [idHash=1061370796, hash=1861472837, cnt=37082, object_type=SYNONYM], UobjectGroupBy [idHash=1609659322, hash=1543110475, cnt=6487, object_type=VIEW], UobjectGroupBy [idHash=458063471, hash=1317758482, cnt=346, object_type=FUNCTION], UobjectGroupBy [idHash=1886921697, hash=424653540, cnt=7, object_type=INDEXTYPE], UobjectGroupBy [idHash=1455482905, hash=1776171634, cnt=30816, object_type=JAVA CLASS], UobjectGroupBy [idHash=49819096, hash=2110362533, cnt=2, object_type=JAVA SOURCE], UobjectGroupBy [idHash=1916179950, hash=1760023032, cnt=10, object_type=CLUSTER], UobjectGroupBy [idHash=1138808674, hash=215713426, cnt=2536, object_type=TYPE], UobjectGroupBy [idHash=305229607, hash=340664529, cnt=23, object_type=JOB], UobjectGroupBy [idHash=1365509716, hash=623631686, cnt=12, object_type=EVALUATION CONTEXT]]<\/code><\/p>\n<p>  <b>\u041e\u0446\u0435\u043d\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438:<\/b><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/59e\/f74\/ae5\/59ef74ae55564d66e16c5842b0be2516.png\" \/><\/div>\n<p>  \u0425\u043e\u0442\u044f \u043d\u0430\u0448\u0438 \u0442\u0435\u0441\u0442\u044b \u043d\u0435 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 connection pool, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b), \u043e\u043d\u0438 \u0432\u0441\u0435 \u0436\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<p>  \u041f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 = \u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0431\u0435\u0437 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c = 1589\/6 \u0447\u0442\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 265 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438\u043b\u0438 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 = ((\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0431\u0435\u0437 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f- \u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c)\/ \u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c * 100) \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 26 383% \u0431\u044b\u0441\u0442\u0440\u0435\u0435. <\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u044d\u0448 2-\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c \u0432 \u0441\u043e\u0442\u043d\u044e \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u044d\u0448\u0430.               <\/p>\n<div class=\"clear\"><\/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:\/\/habrahabr.ru\/post\/280452\/\"> https:\/\/habrahabr.ru\/post\/280452\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c apache ignite \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 2-\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u044d\u0448\u0430 \u0434\u043b\u044f MyBatis \u0438\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043a\u044d\u0448\u0430 \u0432 Apache Ignite.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-277221","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/277221","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=277221"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/277221\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=277221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=277221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=277221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}