{"id":99493,"date":"2025-02-28T19:11:48","date_gmt":"2025-02-28T15:41:48","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/"},"modified":"2025-02-28T19:11:48","modified_gmt":"2025-02-28T15:41:48","slug":"8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/","title":{"rendered":"8 \u067e\u0633\u0648\u0646\u062f Postgres \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u06cc\u062f"},"content":{"rendered":"<div data-article-id=\"2295988\" id=\"article-body\">\n<p><em>\u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0639\u0645\u06cc\u0642 \u062a\u0631 \u060c \u0628\u0647 \u0645\u0642\u0627\u0644\u0647 \u06a9\u0627\u0645\u0644 \u067e\u0631\u0634 \u06a9\u0646\u06cc\u062f.<\/em><\/p>\n<hr\/>\n<p>\u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc PostgreSQL \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u0627\u0632 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u067e\u0633\u0648\u0646\u062f \u0622\u0646 \u0646\u0627\u0634\u06cc \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0634\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0641\u0632\u0648\u062f\u0646\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0631\u0627 \u06a9\u0634\u0641 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627 \u062d\u062f\u0627\u0642\u0644 \u062a\u0646\u0638\u06cc\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u0646\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#1_%D9%BE%D8%B3_%D8%A7%D8%B2_%F0%9F%8C%8E\" >1 \u067e\u0633 \u0627\u0632 \ud83c\udf0e<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#2_pg_stat_statements_%F0%9F%93%8A\" >2 pg_stat_statements \ud83d\udcca<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#3_pgcrypto_%F0%9F%94%92\" >3 pgcrypto \ud83d\udd12<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#4_PG_PARTMAN_%F0%9F%93%91\" >4 PG_PARTMAN \ud83d\udcd1<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#5_postgres_fdw_%F0%9F%8C%89\" >5 postgres_fdw \ud83c\udf09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#6_PGVector_%F0%9F%94%8D\" >6 PGVector \ud83d\udd0d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#7_hstore\" >7. hstore<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#8_PGCRE_%F0%9F%93%9D\" >8. PGCRE \ud83d\udcdd<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#%D8%A2%DB%8C%D8%A7_TimescaledB_%D9%BE%D8%B3%D9%88%D9%86%D8%AF_postgreSQL_%D8%A7%D8%B3%D8%AA%D8%9F\" >\u0622\u06cc\u0627 TimescaledB \u067e\u0633\u0648\u0646\u062f postgreSQL \u0627\u0633\u062a\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/8-%d9%be%d8%b3%d9%88%d9%86%d8%af-postgres-%d8%b4%d9%85%d8%a7-%d8%a8%d8%a7%db%8c%d8%af-%d8%a8%d8%af%d8%a7%d9%86%db%8c%d8%af\/#%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\" >\u067e\u0627\u06cc\u0627\u0646<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"1_%D9%BE%D8%B3_%D8%A7%D8%B2_%F0%9F%8C%8E\"><\/span>\n<p>  1 <strong>\u067e\u0633 \u0627\u0632<\/strong> \ud83c\udf0e<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/strong> PostgreSQL \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0624\u062b\u0631 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u06a9\u0627\u0646\u06cc \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0645\u0627\u0646\u0646\u062f \u0647\u0646\u062f\u0633\u0647 \u060c \u062c\u063a\u0631\u0627\u0641\u06cc\u0627 \u060c \u0634\u0637\u0631\u0646\u062c \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0631\u0627 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u062a\u0648\u0627\u0628\u0639 \u060c \u0627\u067e\u0631\u0627\u062a\u0648\u0631\u0647\u0627 \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0646\u0645\u0627\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0627\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639 \u0645\u06a9\u0627\u0646\u06cc \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><strong>\u0627\u06cc\u062f\u0647 \u0622\u0644 \u0628\u0631\u0627\u06cc:<\/strong> \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc IoT \u060c \u062e\u062f\u0645\u0627\u062a \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0645\u06a9\u0627\u0646 \u0648 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc.<\/p>\n<p><strong>\u0646\u0635\u0628:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">EXTENSION<\/span> <span class=\"n\">postgis<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0646\u0645\u0648\u0646\u0647 postgis<\/strong>:<\/p>\n<p><strong>\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u062f\u0627\u0646\u06cc\u0645:<\/strong> &#8220;\u0686\u0646\u062f \u062a\u0627\u06a9\u0633\u06cc \u062f\u0631 \u0631\u0648\u0632 \u0633\u0627\u0644 \u0646\u0648 2016 \u0645\u0633\u0627\u0641\u0631 \u0631\u0627 \u062f\u0631 400 \u0645\u062a\u0631 \u0645\u06cc\u062f\u0627\u0646 \u062a\u0627\u06cc\u0645\u0632 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u061f&#8221;<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"c1\">-- How many taxis picked up rides within 400m of Times Square on New Years Day?<\/span>\n<span class=\"c1\">-- Times Square coordinates: (40.7589, -73.9851)<\/span>\n<span class=\"k\">SELECT<\/span> <span class=\"n\">time_bucket<\/span><span class=\"p\">(<\/span><span class=\"s1\">'30 minutes'<\/span><span class=\"p\">,<\/span> <span class=\"n\">pickup_datetime<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">thirty_min<\/span><span class=\"p\">,<\/span> <span class=\"k\">COUNT<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">near_times_sq<\/span>\n<span class=\"k\">FROM<\/span> <span class=\"n\">rides<\/span>\n<span class=\"k\">WHERE<\/span> <span class=\"n\">ST_Distance<\/span><span class=\"p\">(<\/span><span class=\"n\">pickup_geom<\/span><span class=\"p\">,<\/span> <span class=\"n\">ST_Transform<\/span><span class=\"p\">(<\/span><span class=\"n\">ST_SetSRID<\/span><span class=\"p\">(<\/span><span class=\"n\">ST_MakePoint<\/span><span class=\"p\">(<\/span><span class=\"o\">-<\/span><span class=\"mi\">73<\/span><span class=\"p\">.<\/span><span class=\"mi\">9851<\/span><span class=\"p\">,<\/span><span class=\"mi\">40<\/span><span class=\"p\">.<\/span><span class=\"mi\">7589<\/span><span class=\"p\">),<\/span><span class=\"mi\">4326<\/span><span class=\"p\">),<\/span><span class=\"mi\">2163<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">400<\/span>\n<span class=\"k\">AND<\/span> <span class=\"n\">pickup_datetime<\/span> <span class=\"o\">&lt;<\/span> <span class=\"s1\">'2016-01-01 14:00'<\/span>\n<span class=\"k\">GROUP<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">thirty_min<\/span> <span class=\"k\">ORDER<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">thirty_min<\/span>\n<span class=\"k\">LIMIT<\/span> <span class=\"mi\">5<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0641\u0648\u0642 \u0646\u062a\u0627\u06cc\u062c \u0632\u06cc\u0631 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">1<\/span> <span class=\"p\">]<\/span><span class=\"o\">-+<\/span><span class=\"c1\">--------------------<\/span>\n<span class=\"n\">thirty_min<\/span>    <span class=\"o\">|<\/span> <span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span> <span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span>\n<span class=\"n\">near_times_sq<\/span> <span class=\"o\">|<\/span> <span class=\"mi\">74<\/span>\n<span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">2<\/span> <span class=\"p\">]<\/span><span class=\"o\">-+<\/span><span class=\"c1\">--------------------<\/span>\n<span class=\"n\">thirty_min<\/span>    <span class=\"o\">|<\/span> <span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span> <span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">30<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span>\n<span class=\"n\">near_times_sq<\/span> <span class=\"o\">|<\/span> <span class=\"mi\">102<\/span>\n<span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">3<\/span> <span class=\"p\">]<\/span><span class=\"o\">-+<\/span><span class=\"c1\">--------------------<\/span>\n<span class=\"n\">thirty_min<\/span>    <span class=\"o\">|<\/span> <span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span> <span class=\"mi\">01<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span>\n<span class=\"n\">near_times_sq<\/span> <span class=\"o\">|<\/span> <span class=\"mi\">120<\/span>\n<span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">4<\/span> <span class=\"p\">]<\/span><span class=\"o\">-+<\/span><span class=\"c1\">--------------------<\/span>\n<span class=\"n\">thirty_min<\/span>    <span class=\"o\">|<\/span> <span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span> <span class=\"mi\">01<\/span><span class=\"p\">:<\/span><span class=\"mi\">30<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span>\n<span class=\"n\">near_times_sq<\/span> <span class=\"o\">|<\/span> <span class=\"mi\">98<\/span>\n<span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">5<\/span> <span class=\"p\">]<\/span><span class=\"o\">-+<\/span><span class=\"c1\">--------------------<\/span>\n<span class=\"n\">thirty_min<\/span>    <span class=\"o\">|<\/span> <span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span><span class=\"o\">-<\/span><span class=\"mi\">01<\/span> <span class=\"mi\">02<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span>\n<span class=\"n\">near_times_sq<\/span> <span class=\"o\">|<\/span> <span class=\"mi\">112<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"2_pg_stat_statements_%F0%9F%93%8A\"><\/span>\n<p>  2 <strong>pg_stat_statements<\/strong> \ud83d\udcca<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/strong> \u0622\u0645\u0627\u0631 \u0627\u062c\u0631\u0627\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0644\u06cc\u0647 \u0633\u0624\u0627\u0644\u0627\u062a \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 Postgres \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0631\u0627 \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u06af\u0627\u0646 \u0622\u0647\u0633\u062a\u0647 \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0639\u0645\u06cc\u0642 \u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0627\u062c\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0634\u0645\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p><strong>\u0627\u06cc\u062f\u0647 \u0622\u0644 \u0628\u0631\u0627\u06cc:<\/strong> \u062a\u0646\u0638\u06cc\u0645 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0647\u0633\u062a\u0647.<\/p>\n<p><strong>\u0646\u0635\u0628:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">EXTENSION<\/span> <span class=\"n\">pg_stat_statements<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0646\u0645\u0648\u0646\u0647 PG_STAT_STATEMENS<\/strong><\/p>\n<p><strong>\u0645\u0627 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f\u06cc\u0645:<\/strong> &#8220;5 \u0646\u0645\u0627\u06cc\u0634\u06af\u0627\u0647 \u0628\u0631\u062a\u0631 \u0627\u0646\u062a\u062e\u0627\u0628\u06cc I\/O \u0686\u06cc\u0633\u062a\u061f&#8221;<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">SELECT<\/span> <span class=\"n\">query<\/span><span class=\"p\">,<\/span> <span class=\"n\">calls<\/span><span class=\"p\">,<\/span> <span class=\"n\">total_time<\/span><span class=\"p\">,<\/span> <span class=\"k\">rows<\/span><span class=\"p\">,<\/span> <span class=\"n\">shared_blks_hit<\/span><span class=\"p\">,<\/span> <span class=\"n\">shared_blks_read<\/span>\n<span class=\"k\">FROM<\/span> <span class=\"n\">pg_stat_statements<\/span>\n<span class=\"k\">WHERE<\/span> <span class=\"n\">query<\/span> <span class=\"k\">LIKE<\/span> <span class=\"s1\">'SELECT%'<\/span>\n<span class=\"k\">ORDER<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">shared_blks_read<\/span> <span class=\"k\">DESC<\/span><span class=\"p\">,<\/span> <span class=\"n\">calls<\/span> <span class=\"k\">DESC<\/span>\n<span class=\"k\">LIMIT<\/span> <span class=\"mi\">5<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062e\u0631\u0648\u062c\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code>\n<span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">1<\/span> <span class=\"p\">]<\/span><span class=\"c1\">--\u2014+---------------------------------------------------<\/span>\n<span class=\"n\">query<\/span>             <span class=\"o\">|<\/span> <span class=\"k\">SELECT<\/span> <span class=\"o\">*<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">customer_data<\/span> <span class=\"k\">WHERE<\/span> <span class=\"n\">created_at<\/span> <span class=\"o\">&gt;<\/span> <span class=\"err\">$<\/span><span class=\"mi\">1<\/span>\n<span class=\"n\">calls<\/span>             <span class=\"o\">|<\/span> <span class=\"mi\">500<\/span>\n<span class=\"n\">total_time<\/span>        <span class=\"o\">|<\/span> <span class=\"mi\">23000<\/span>\n<span class=\"k\">rows<\/span>              <span class=\"o\">|<\/span> <span class=\"mi\">500000<\/span>\n<span class=\"n\">shared_blks_hit<\/span>   <span class=\"o\">|<\/span> <span class=\"mi\">100000<\/span>\n<span class=\"n\">shared_blks_read<\/span>  <span class=\"o\">|<\/span> <span class=\"mi\">75000<\/span>\n<span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">2<\/span> <span class=\"p\">]<\/span><span class=\"c1\">-----+---------------------------------------------------<\/span>\n<span class=\"n\">query<\/span>             <span class=\"o\">|<\/span> <span class=\"k\">SELECT<\/span> <span class=\"n\">name<\/span><span class=\"p\">,<\/span> <span class=\"n\">address<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">orders<\/span> <span class=\"k\">WHERE<\/span> <span class=\"n\">status<\/span> <span class=\"o\">=<\/span> <span class=\"err\">$<\/span><span class=\"mi\">1<\/span>\n<span class=\"n\">calls<\/span>             <span class=\"o\">|<\/span> <span class=\"mi\">450<\/span>\n<span class=\"n\">total_time<\/span>        <span class=\"o\">|<\/span> <span class=\"mi\">15000<\/span>\n<span class=\"k\">rows<\/span>              <span class=\"o\">|<\/span> <span class=\"mi\">450000<\/span>\n<span class=\"n\">shared_blks_hit<\/span>   <span class=\"o\">|<\/span> <span class=\"mi\">95000<\/span>\n<span class=\"n\">shared_blks_read<\/span>  <span class=\"o\">|<\/span> <span class=\"mi\">55000<\/span>\n<span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">3<\/span> <span class=\"p\">]<\/span><span class=\"c1\">-----+---------------------------------------------------<\/span>\n<span class=\"n\">query<\/span>             <span class=\"o\">|<\/span> <span class=\"k\">SELECT<\/span> <span class=\"k\">COUNT<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">transactions<\/span> <span class=\"k\">WHERE<\/span> <span class=\"n\">amount<\/span> <span class=\"o\">&gt;<\/span> <span class=\"err\">$<\/span><span class=\"mi\">1<\/span>\n<span class=\"n\">calls<\/span>             <span class=\"o\">|<\/span> <span class=\"mi\">300<\/span>\n<span class=\"n\">total_time<\/span>        <span class=\"o\">|<\/span> <span class=\"mi\">12000<\/span>\n<span class=\"k\">rows<\/span>              <span class=\"o\">|<\/span> <span class=\"mi\">300000<\/span>\n<span class=\"n\">shared_blks_hit<\/span>   <span class=\"o\">|<\/span> <span class=\"mi\">85000<\/span>\n<span class=\"n\">shared_blks_read<\/span>  <span class=\"o\">|<\/span> <span class=\"mi\">50000<\/span>\n<span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">4<\/span> <span class=\"p\">]<\/span><span class=\"c1\">-----+---------------------------------------------------<\/span>\n<span class=\"n\">query<\/span>             <span class=\"o\">|<\/span> <span class=\"k\">SELECT<\/span> <span class=\"n\">product_id<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">inventory<\/span> <span class=\"k\">WHERE<\/span> <span class=\"n\">quantity<\/span> <span class=\"o\">&lt;<\/span> <span class=\"err\">$<\/span><span class=\"mi\">1<\/span>\n<span class=\"n\">calls<\/span>             <span class=\"o\">|<\/span> <span class=\"mi\">400<\/span>\n<span class=\"n\">total_time<\/span>        <span class=\"o\">|<\/span> <span class=\"mi\">16000<\/span>\n<span class=\"k\">rows<\/span>              <span class=\"o\">|<\/span> <span class=\"mi\">400000<\/span>\n<span class=\"n\">shared_blks_hit<\/span>   <span class=\"o\">|<\/span> <span class=\"mi\">80000<\/span>\n<span class=\"n\">shared_blks_read<\/span>  <span class=\"o\">|<\/span> <span class=\"mi\">45000<\/span>\n<span class=\"o\">-<\/span><span class=\"p\">[<\/span> <span class=\"n\">RECORD<\/span> <span class=\"mi\">5<\/span> <span class=\"p\">]<\/span><span class=\"c1\">-----+---------------------------------------------------<\/span>\n<span class=\"n\">query<\/span>             <span class=\"o\">|<\/span> <span class=\"k\">SELECT<\/span> <span class=\"o\">*<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">user_logs<\/span> <span class=\"k\">WHERE<\/span> <span class=\"n\">user_id<\/span> <span class=\"o\">=<\/span> <span class=\"err\">$<\/span><span class=\"mi\">1<\/span> <span class=\"k\">AND<\/span> <span class=\"n\">activity_date<\/span> <span class=\"o\">&gt;<\/span> <span class=\"err\">$<\/span><span class=\"mi\">2<\/span>\n<span class=\"n\">calls<\/span>             <span class=\"o\">|<\/span> <span class=\"mi\">350<\/span>\n<span class=\"n\">total_time<\/span>        <span class=\"o\">|<\/span> <span class=\"mi\">17500<\/span>\n<span class=\"k\">rows<\/span>              <span class=\"o\">|<\/span> <span class=\"mi\">350000<\/span>\n<span class=\"n\">shared_blks_hit<\/span>   <span class=\"o\">|<\/span> <span class=\"mi\">75000<\/span>\n<span class=\"n\">shared_blks_read<\/span>  <span class=\"o\">|<\/span> <span class=\"mi\">40000<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"3_pgcrypto_%F0%9F%94%92\"><\/span>\n<p>  3 <strong>pgcrypto<\/strong> \ud83d\udd12<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/strong> \u062a\u0648\u0627\u0628\u0639 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0631\u0627 \u0628\u0647 PostgreSQL \u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u060c \u0647\u0634 \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><strong>\u0627\u06cc\u062f\u0647 \u0622\u0644 \u0628\u0631\u0627\u06cc:<\/strong> \u0630\u062e\u06cc\u0631\u0647 \u0627\u06cc\u0645\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0645\u0632 \u0639\u0628\u0648\u0631.<\/p>\n<p><strong>\u0646\u0635\u0628:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">EXTENSION<\/span> <span class=\"n\">pgcrypto<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0646\u0645\u0648\u0646\u0647 pgcrypto<\/strong><\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 pgcrypto \u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u06af\u0648\u06cc\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u0628\u062a\u062f\u0627 \u0647\u0646\u06af\u0627\u0645 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0622\u0646 \u062f\u0631 \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u060c \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">INSERT<\/span> <span class=\"k\">INTO<\/span> <span class=\"n\">users<\/span> <span class=\"p\">(<\/span><span class=\"n\">username<\/span><span class=\"p\">,<\/span> <span class=\"n\">password<\/span><span class=\"p\">)<\/span> <span class=\"k\">VALUES<\/span> <span class=\"p\">(<\/span><span class=\"s1\">'john_doe'<\/span><span class=\"p\">,<\/span> <span class=\"n\">crypt<\/span><span class=\"p\">(<\/span><span class=\"s1\">'my_secure_password'<\/span><span class=\"p\">,<\/span> <span class=\"n\">gen_salt<\/span><span class=\"p\">(<\/span><span class=\"s1\">'bf'<\/span><span class=\"p\">)));<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u062c\u0645\u0644\u0647 \u060c <code>crypt<\/code> \u062a\u0627\u0628\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 pgcrypto \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 Blowfish \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f \u060c \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0622\u0646 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <code>gen_salt('bf')<\/code><\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u060c \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0647\u0648\u06cc\u062a \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u060c \u06cc\u06a9 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">SELECT<\/span> <span class=\"n\">username<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">users<\/span> <span class=\"k\">WHERE<\/span> <span class=\"n\">username<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">'john_doe'<\/span> <span class=\"k\">AND<\/span> <span class=\"n\">password<\/span> <span class=\"o\">=<\/span> <span class=\"n\">crypt<\/span><span class=\"p\">(<\/span><span class=\"s1\">'input_password'<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"4_PG_PARTMAN_%F0%9F%93%91\"><\/span>\n<p>  4 <strong>PG_PARTMAN<\/strong> \ud83d\udcd1<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/strong> \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0647\u0627\u06cc \u062c\u062f\u0648\u0644 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0628\u0646\u062f\u06cc \u06cc\u06a9 \u062a\u06a9\u0646\u06cc\u06a9 \u06a9\u0644\u06cc\u062f\u06cc \u0628\u0627\u0646\u06a9 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0627\u0645\u0644 \u062a\u0642\u0633\u06cc\u0645 \u06cc\u06a9 \u0645\u06cc\u0632 \u0628\u0632\u0631\u06af \u0628\u0647 \u0642\u0637\u0639\u0627\u062a \u06a9\u0648\u0686\u06a9\u062a\u0631 \u0648 \u0642\u0627\u0628\u0644 \u06a9\u0646\u062a\u0631\u0644 \u062a\u0631 \u0627\u0633\u062a \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06af\u0648\u06cc\u06cc \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u0627\u0633\u062a. <\/p>\n<p><strong>\u0627\u06cc\u062f\u0647 \u0622\u0644 \u0628\u0631\u0627\u06cc:<\/strong> \u0627\u06cc\u0646 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0628\u0631\u0627\u06cc \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0633\u0631\u06cc \u0628\u0632\u0631\u06af \u0648 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u0631\u0634\u062f \u06a9\u0646\u0646\u062f \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n<p><strong>\u0646\u0635\u0628:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">EXTENSION<\/span> <span class=\"n\">pg_partman<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0646\u0645\u0648\u0646\u0647 PG_PARTMAN<\/strong><\/p>\n<p>\u0633\u0646\u0627\u0631\u06cc\u0648\u06cc\u06cc \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u062c\u062f\u0648\u0644 \u0628\u0632\u0631\u06af\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 IoT \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0647 \u0631\u0648\u0632 \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062a\u0646\u0638\u06cc\u0645 \u06cc\u06a9 \u0637\u0631\u062d \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0631\u0648\u0632\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u0628\u0647 \u0646\u0627\u0645 \u062f\u0633\u062a\u06af\u0627\u0647_\u062f\u0627\u062a\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <code>pg_partman<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"c1\">-- Create a parent table<\/span>\n<span class=\"k\">CREATE<\/span> <span class=\"k\">TABLE<\/span> <span class=\"n\">device_data<\/span> <span class=\"p\">(<\/span>\n    <span class=\"nb\">time<\/span> <span class=\"n\">timestamptz<\/span> <span class=\"k\">NOT<\/span> <span class=\"k\">NULL<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">device_id<\/span> <span class=\"nb\">int<\/span> <span class=\"k\">NOT<\/span> <span class=\"k\">NULL<\/span><span class=\"p\">,<\/span>\n    <span class=\"k\">data<\/span> <span class=\"n\">jsonb<\/span> <span class=\"k\">NOT<\/span> <span class=\"k\">NULL<\/span>\n<span class=\"p\">);<\/span>\n\n<span class=\"c1\">-- Set up pg_partman to manage daily partitions of the device_data table<\/span>\n<span class=\"k\">SELECT<\/span> <span class=\"n\">partman<\/span><span class=\"p\">.<\/span><span class=\"n\">create_parent<\/span><span class=\"p\">(<\/span><span class=\"s1\">'public.device_data'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'time'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'partman'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'daily'<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645 \u060c Create_Parent \u062a\u0627\u0628\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 PG_PARTMAN \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0646\u0627\u0645 \u062c\u062f\u0648\u0644 \u0648\u0627\u0644\u062f\u06cc\u0646 \u0648 \u0633\u062a\u0648\u0646 \u0631\u0627 \u0628\u0647 \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u062f\u0631 (\u0632\u0645\u0627\u0646) \u0645\u06cc \u0628\u0631\u062f \u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 (Partman) \u0648 \u0641\u0627\u0635\u0644\u0647 \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 (\u0631\u0648\u0632\u0627\u0646\u0647).<\/p>\n<h2><span class=\"ez-toc-section\" id=\"5_postgres_fdw_%F0%9F%8C%89\"><\/span>\n<p>  5 <strong>postgres_fdw<\/strong> \ud83c\udf09<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/strong> \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0627\u0632 \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u062f\u0627\u062f\u0647 \u062e\u0627\u0631\u062c\u06cc \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062c\u062f\u0627\u0648\u0644 \u062f\u0631 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0627\u0632 \u0631\u0627\u0647 \u062f\u0648\u0631 Postgres \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f (\u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648 \u0646\u0627\u0645 &#8220;FDW&#8221;). \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0633\u0627\u06cc\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc Postgres \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0622\u0646\u0647\u0627 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06af\u0648\u06cc\u06cc \u0627\u0632 \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0641\u0639\u0644\u06cc \u0622\u0645\u062f\u0647 \u0627\u0646\u062f.<\/p>\n<p><strong>\u0627\u06cc\u062f\u0647 \u0622\u0644 \u0628\u0631\u0627\u06cc:<\/strong> \u0628\u0627\u0646\u06a9\u0647\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u062a\u0648\u0632\u06cc\u0639 \u0634\u062f\u0647 \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0686\u0646\u062f \u0633\u0631\u0648\u0631.<\/p>\n<p><strong>\u0646\u0635\u0628:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">EXTENSION<\/span> <span class=\"n\">postgres_fdw<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0646\u0645\u0648\u0646\u0647 postgres_fdw<\/strong><\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631 \u062e\u0627\u0631\u062c\u06cc \u062e\u0648\u062f \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">SERVER<\/span> <span class=\"n\">myserver<\/span> <span class=\"k\">FOREIGN<\/span> <span class=\"k\">DATA<\/span> <span class=\"n\">WRAPPER<\/span> <span class=\"n\">postgres_fdw<\/span> <span class=\"k\">OPTIONS<\/span> <span class=\"p\">(<\/span><span class=\"k\">host<\/span> <span class=\"s1\">'123.45.67.8'<\/span><span class=\"p\">,<\/span> <span class=\"n\">dbname<\/span> <span class=\"err\">\u2018<\/span><span class=\"n\">postgres<\/span><span class=\"err\">\u2019<\/span><span class=\"p\">,<\/span> <span class=\"n\">port<\/span> <span class=\"s1\">'5432'<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0628\u0647 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0622\u062f\u0631\u0633 IP 123.45.67.8 \u0628\u0627 \u0646\u0627\u0645 \u0648\u0635\u0644 \u0645\u06cc \u0634\u0648\u062f <code>postgres<\/code> \u062f\u0631 <code>port 5432<\/code>\u0628\u0634\u0631 \u0627\u06a9\u0646\u0648\u0646 \u060c \u06cc\u06a9 \u0646\u0642\u0634\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0634\u0645\u0627 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0633\u0631\u0648\u0631 \u062e\u0627\u0631\u062c\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"k\">USER<\/span> <span class=\"n\">MAPPING<\/span> <span class=\"k\">FOR<\/span> <span class=\"n\">postgres<\/span> \n<span class=\"n\">SERVER<\/span> <span class=\"n\">myserver<\/span> \n<span class=\"k\">OPTIONS<\/span> <span class=\"p\">(<\/span><span class=\"k\">user<\/span> <span class=\"s1\">'postgres'<\/span><span class=\"p\">,<\/span> <span class=\"n\">password<\/span> <span class=\"s1\">'password'<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"6_PGVector_%F0%9F%94%8D\"><\/span>\n<p>  6 <strong>PGVector<\/strong> \ud83d\udd0d<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/strong> \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0631\u062f\u0627\u0631 \u062f\u0631 Postgres \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f-\u0627\u0645\u06a9\u0627\u0646 \u062c\u0633\u062a\u062c\u0648\u06cc \u0634\u0628\u0627\u0647\u062a \u060c \u062c\u0633\u062a\u062c\u0648\u06cc \u0646\u0632\u062f\u06cc\u06a9\u062a\u0631\u06cc\u0646 \u0647\u0645\u0633\u0627\u06cc\u0647 \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631. <\/p>\n<p><strong>\u0627\u06cc\u062f\u0647 \u0622\u0644 \u0628\u0631\u0627\u06cc:<\/strong> \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u062a\u0648\u0635\u06cc\u0647 \u060c \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0648 \u062c\u0633\u062a\u062c\u0648\u06cc \u0645\u0639\u0646\u0627\u06cc\u06cc.<\/p>\n<p><strong>\u0646\u0635\u0628:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">EXTENSION<\/span> <span class=\"n\">vector<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0646\u0645\u0648\u0646\u0647 PGVECTOR<\/strong><br \/>\u0628\u06af\u0648\u06cc\u06cc\u062f \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u0634\u0627\u0628\u0647 \u062a\u0631\u06cc\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0627 \u06cc\u06a9 \u0628\u0631\u062f\u0627\u0631 \u0648\u06cc\u0698\u06af\u06cc \u062e\u0627\u0635 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PGVECTOR \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u06cc\u06a9 \u062c\u0633\u062a\u062c\u0648\u06cc \u0646\u0632\u062f\u06cc\u06a9\u062a\u0631\u06cc\u0646 \u0647\u0645\u0633\u0627\u06cc\u0647 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"c1\">-- Assuming we have a table with image features stored as vectors<\/span>\n<span class=\"c1\">-- Table: image_features<\/span>\n<span class=\"c1\">-- Columns: id (integer), features (vector)<\/span>\n\n<span class=\"c1\">-- Given a query vector, find the 5 most similar images<\/span>\n<span class=\"k\">SELECT<\/span> <span class=\"n\">id<\/span><span class=\"p\">,<\/span> <span class=\"n\">features<\/span>\n<span class=\"k\">FROM<\/span> <span class=\"n\">image_features<\/span>\n<span class=\"k\">ORDER<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">features<\/span> <span class=\"o\">&lt;-&gt;<\/span> <span class=\"s1\">'query_vector'<\/span><span class=\"p\">::<\/span><span class=\"n\">vector<\/span>\n<span class=\"k\">LIMIT<\/span> <span class=\"mi\">5<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0646\u062a\u0627\u06cc\u062c \u0631\u0627 \u0628\u0627 \u0641\u0627\u0635\u0644\u0647 \u0628\u06cc\u0646 query_veector \u0648 \u0633\u062a\u0648\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627 \u0633\u0641\u0627\u0631\u0634 \u0645\u06cc \u062f\u0647\u062f \u060c \u0648 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631\u06cc \u0646\u0632\u062f\u06cc\u06a9\u062a\u0631\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f<\/p>\n<h2><span class=\"ez-toc-section\" id=\"7_hstore\"><\/span>\n<p>  7. hstore<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/strong> \u06cc\u06a9 \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0628\u0627 \u0627\u0631\u0632\u0634 \u06a9\u0644\u06cc\u062f\u06cc \u062f\u0631 Postgres \u060c \u06a9\u0647 \u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u062c\u0641\u062a \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\/\u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0646\u0648\u0639 \u062f\u0627\u062f\u0647 Postgres \u0648\u0627\u062d\u062f \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f. <\/p>\n<p><strong>\u0627\u06cc\u062f\u0647 \u0622\u0644 \u0628\u0631\u0627\u06cc:<\/strong> \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u06cc\u0645\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u06cc\u0627\u0641\u062a\u0647 \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0633\u0631\u06cc\u0639 \u0648 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0627\u06cc \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631 \u0648 \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062c\u062f\u0648\u0644 \u062f\u0627\u0631\u0646\u062f.<\/p>\n<p><strong>\u0646\u0635\u0628:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">EXTENSION<\/span> <span class=\"n\">hstore<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0646\u0645\u0648\u0646\u0647 HSTORE<\/strong><br \/>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 HSTORE \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0648 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u062d\u0635\u0648\u0644 \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"c1\">-- Create a table with an hstore column for storing product attributes<\/span>\n<span class=\"k\">CREATE<\/span> <span class=\"k\">TABLE<\/span> <span class=\"n\">products<\/span> <span class=\"p\">(<\/span>\n    <span class=\"n\">id<\/span> <span class=\"nb\">serial<\/span> <span class=\"k\">PRIMARY<\/span> <span class=\"k\">KEY<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">name<\/span> <span class=\"nb\">text<\/span> <span class=\"k\">NOT<\/span> <span class=\"k\">NULL<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">attributes<\/span> <span class=\"n\">hstore<\/span>\n<span class=\"p\">);<\/span>\n\n<span class=\"c1\">-- Insert a product with attributes into the table<\/span>\n<span class=\"k\">INSERT<\/span> <span class=\"k\">INTO<\/span> <span class=\"n\">products<\/span> <span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">,<\/span> <span class=\"n\">attributes<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">VALUES<\/span> <span class=\"p\">(<\/span><span class=\"s1\">'Smartphone'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'color =&gt; \"black\", storage =&gt; \"64GB\", battery =&gt; \"3000mAh\"'<\/span><span class=\"p\">);<\/span>\n\n<span class=\"c1\">-- Query to find products with a specific attribute<\/span>\n<span class=\"k\">SELECT<\/span> <span class=\"n\">name<\/span>\n<span class=\"k\">FROM<\/span> <span class=\"n\">products<\/span>\n<span class=\"k\">WHERE<\/span> <span class=\"n\">attributes<\/span> <span class=\"o\">@&gt;<\/span> <span class=\"s1\">'storage =&gt; \"64GB\"'<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"8_PGCRE_%F0%9F%93%9D\"><\/span>\n<p>  <strong>8. PGCRE<\/strong> \ud83d\udcdd<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/strong> \u0639\u0628\u0627\u0631\u0627\u062a \u0645\u0646\u0638\u0645 \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 Perl (PCRE) \u0631\u0627 \u062f\u0631 PostgreSQL \u0627\u062f\u063a\u0627\u0645 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0648 \u0639\u0645\u0644\u06a9\u0631\u062f \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u062a\u0637\u0628\u06cc\u0642 \u0631\u0634\u062a\u0647 \u0631\u0627 \u0641\u0631\u0627\u062a\u0631 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc REGEX \u062f\u0627\u062e\u0644\u06cc PostgreSQL \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f. <\/p>\n<p><strong>\u0627\u06cc\u062f\u0647 \u0622\u0644 \u0628\u0631\u0627\u06cc:<\/strong> \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0645\u062a\u0646 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0644\u06af\u0648\u06cc \u0645\u0627\u0646\u0646\u062f \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0633\u06cc\u0627\u0647\u0647\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u060c \u062c\u0633\u062a\u062c\u0648\u06cc \u0645\u062a\u0646 \u06cc\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0642\u0627\u0644\u0628 \u0647\u0627\u06cc \u0631\u0634\u062a\u0647 \u0627\u06cc \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 Regex \u062f\u0627\u0631\u0646\u062f. <\/p>\n<p><strong>\u0646\u0635\u0628<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">EXTENSION<\/span> <span class=\"n\">pgpcre<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0646\u0645\u0648\u0646\u0647 PGPCRE<\/strong><br \/>\u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0622\u062f\u0631\u0633 \u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u0633\u062a\u0648\u0646\u06cc \u0627\u0632 \u0645\u062a\u0646 \u0628\u062f\u0648\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u062c\u0633\u062a\u062c\u0648 \u06a9\u0646\u06cc\u062f \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc PCRE \u0628\u0631\u0627\u06cc \u062a\u0637\u0628\u06cc\u0642 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0634\u0631\u062d \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"c1\">-- Assuming we have a table named messages with a column named content<\/span>\n<span class=\"c1\">-- Table: messages<\/span>\n<span class=\"c1\">-- Column: content (text)<\/span>\n<span class=\"c1\">-- Use pgpcre to match email addresses within the content<\/span>\n<span class=\"k\">SELECT<\/span> <span class=\"n\">content<\/span><span class=\"p\">,<\/span> <span class=\"n\">pcre_match<\/span><span class=\"p\">(<\/span><span class=\"s1\">'^<\/span><span class=\"se\">\\S<\/span><span class=\"s1\">+@<\/span><span class=\"se\">\\S<\/span><span class=\"s1\">+$'<\/span><span class=\"p\">,<\/span> <span class=\"n\">content<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">email<\/span>\n<span class=\"k\">FROM<\/span> <span class=\"n\">messages<\/span>\n<span class=\"k\">WHERE<\/span> <span class=\"n\">pcre_match<\/span><span class=\"p\">(<\/span><span class=\"s1\">'^<\/span><span class=\"se\">\\S<\/span><span class=\"s1\">+@<\/span><span class=\"se\">\\S<\/span><span class=\"s1\">+$'<\/span><span class=\"p\">,<\/span> <span class=\"n\">content<\/span><span class=\"p\">)<\/span> <span class=\"k\">IS<\/span> <span class=\"k\">NOT<\/span> <span class=\"k\">NULL<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A2%DB%8C%D8%A7_TimescaledB_%D9%BE%D8%B3%D9%88%D9%86%D8%AF_postgreSQL_%D8%A7%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  \u0622\u06cc\u0627 TimescaledB \u067e\u0633\u0648\u0646\u062f postgreSQL \u0627\u0633\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0644\u0647 TimescaledB \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646\u06cc \u0628\u0631\u062a\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062f\u0627\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06cc\u06a9 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0628\u0646\u062f\u06cc \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9 \u060c \u067e\u06cc\u0634\u0631\u0641\u062a \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u06cc\u0632 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u060c \u0646\u0645\u0627\u0647\u0627\u06cc \u0628\u0647\u0628\u0648\u062f \u06cc\u0627\u0641\u062a\u0647 \u060c \u0641\u0634\u0631\u062f\u0647 \u0633\u0627\u0632\u06cc \u0633\u062a\u0648\u0646\u06cc \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0628\u0647 Postgres \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><strong>\u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/strong> Postgres \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0627\u0631 \u06a9\u0627\u0631\u06cc \u0633\u0631\u06cc \u0632\u0645\u0627\u0646\u06cc \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0622\u0645\u062f \u062a\u0642\u0648\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><strong>\u0627\u06cc\u062f\u0647 \u0622\u0644 \u0628\u0631\u0627\u06cc:<\/strong> \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0633\u0631\u06cc \u0632\u0645\u0627\u0646\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0647 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639\u062a\u0631 \u060c \u0631\u0627\u0646\u062f\u0645\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0628\u0647\u062a\u0631 \u0648 \u062a\u062c\u0645\u0639 \u0645\u062f\u0627\u0648\u0645 \u0633\u0627\u062f\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f \u060c \u0627\u062f\u0627\u0631\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p><strong>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0645\u062b\u0627\u0644 TimeScaledB<\/strong><br \/>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u0645\u0627 \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u062f\u0627\u062f\u0647 \u0633\u0646\u0633\u0648\u0631 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0647\u0631 \u062f\u0642\u06cc\u0642\u0647 \u062e\u0648\u0627\u0646\u0634 \u062f\u0645\u0627 \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0645\u06cc\u0627\u0646\u06af\u06cc\u0646 \u062f\u0645\u0627 \u062f\u0631 \u0633\u0627\u0639\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062f\u0633\u062a\u06af\u0627\u0647 \u062e\u0627\u0635 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u0686\u0646\u06cc\u0646 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 TimescaledB \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"c1\">-- Assuming we have a hypertable named sensor_readings with columns time, device_id, and temperature<\/span>\n<span class=\"c1\">-- Table: sensor_readings<\/span>\n<span class=\"c1\">-- Columns: time (TIMESTAMP WITH TIME ZONE), device_id (INT), temperature (DOUBLE PRECISION)<\/span>\n\n<span class=\"c1\">-- Calculate the average temperature per hour for device with ID 1<\/span>\n<span class=\"k\">SELECT<\/span> <span class=\"n\">time_bucket<\/span><span class=\"p\">(<\/span><span class=\"s1\">'1 hour'<\/span><span class=\"p\">,<\/span> <span class=\"nb\">time<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">one_hour_bucket<\/span><span class=\"p\">,<\/span> \n       <span class=\"k\">AVG<\/span><span class=\"p\">(<\/span><span class=\"n\">temperature<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">avg_temperature<\/span>\n<span class=\"k\">FROM<\/span> <span class=\"n\">sensor_readings<\/span>\n<span class=\"k\">WHERE<\/span> <span class=\"n\">device_id<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span>\n<span class=\"k\">GROUP<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">one_hour_bucket<\/span>\n<span class=\"k\">ORDER<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">one_hour_bucket<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\"><\/span>\n<p>  \u067e\u0627\u06cc\u0627\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u067e\u0633\u0648\u0646\u062f\u0647\u0627\u06cc PostgreSQL \u0639\u0645\u0644\u06a9\u0631\u062f \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0627\u06cc \u0631\u0627 \u0628\u0627 \u062d\u062f\u0627\u0642\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f. \u0628\u06cc\u0634\u062a\u0631 \u0622\u0646\u0647\u0627 \u0641\u0642\u0637 \u0628\u0647 \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0648\u0627\u062d\u062f \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f \u060c \u0627\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0686\u0634\u0645\u06af\u06cc\u0631\u06cc \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f \u060c \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f.<\/p>\n<p>\u067e\u0633\u0648\u0646\u062f PostgreSQL \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0634\u0645\u0627 \u0686\u06cc\u0633\u062a\u061f \u0622\u06cc\u0627 \u0634\u0645\u0627 \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u061f \u062f\u0631 \u0646\u0638\u0631\u0627\u062a \u0628\u0647 \u0645\u0646 \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u062f!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0639\u0645\u06cc\u0642 \u062a\u0631 \u060c \u0628\u0647 \u0645\u0642\u0627\u0644\u0647 \u06a9\u0627\u0645\u0644 \u067e\u0631\u0634 \u06a9\u0646\u06cc\u062f. \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc PostgreSQL \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u0627\u0632 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u067e\u0633\u0648\u0646\u062f \u0622\u0646 \u0646\u0627\u0634\u06cc \u0645\u06cc \u0634\u0648\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0634\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0641\u0632\u0648\u062f\u0646\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0631\u0627 \u06a9\u0634\u0641 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627 \u062d\u062f\u0627\u0642\u0644 \u062a\u0646\u0638\u06cc\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u0646\u062f. 1 \u067e\u0633 \u0627\u0632 \ud83c\udf0e \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f: &hellip;<\/p>\n","protected":false},"author":2,"featured_media":99494,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiy6m37zt9kz1wd1bej7u.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-99493","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/99493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=99493"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/99493\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/99494"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=99493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=99493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=99493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}