{"id":55027,"date":"2020-01-10T00:00:00","date_gmt":"2020-01-09T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu"},"modified":"2020-02-18T14:03:06","modified_gmt":"2020-02-18T11:03:06","slug":"bd-messendzhera-ch-2-sektsioniruem-nazhivuyu","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu","title":{"rendered":"DB messengeru (\u010d. 2): sekcionujeme \"na\u017eivo\"","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00dasp\u011b\u0161n\u011b jsme navrhli strukturu na\u0161\u00ed datab\u00e1ze PostgreSQL pro uchov\u00e1v\u00e1n\u00ed komunikace, uplynul rok, u\u017eivatel\u00e9 ji aktivn\u011b zapl\u0148uj\u00ed, a u\u017e v n\u00ed je <b>miliony z\u00e1znam\u016f<\/b>, a\u2026 n\u011bco za\u010dalo pomalu fungovat.<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483176\/\">\u010c\u00e1st 1: navrhujeme r\u00e1mec datab\u00e1ze<\/a><\/noindex><\/li>\n<li>\u010c\u00e1st 2: sekciujeme \"na\u017eivo\"<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"DB messengeru (\u010d. 2): sekcionujeme &quot;na\u017eivo&quot;\" src=\"\/wp-content\/uploads\/2020\/01\/7830da046d9c472af15330e42cbb05e0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nV\u011bc se m\u00e1 tak, \u017ee <b>s rostouc\u00edm objemem tabulky roste tak\u00e9 \"hloubka\" index\u016f<\/b> \u2014 i kdy\u017e logaritmicky. Ale \u010dasem to nut\u00ed server, aby pro prov\u00e1d\u011bn\u00ed stejn\u00fdch \u00faloh \u010dten\u00ed\/z\u00e1pisu <i>zpracov\u00e1val mnohem v\u00edce str\u00e1nek dat<\/i>, ne\u017e tomu bylo na za\u010d\u00e1tku.<\/p>\n<p>Tady pr\u00e1v\u011b p\u0159ich\u00e1z\u00ed na pomoc <b>particionov\u00e1n\u00ed<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPoznamen\u00e1m, \u017ee se nejedn\u00e1 o shardov\u00e1n\u00ed, tedy rozd\u011blen\u00ed dat mezi r\u016fzn\u00e9 datab\u00e1ze nebo servery. Proto\u017ee i kdy\u017e rozd\u011bl\u00edte data na <b>n\u011bkolik<\/b> servery, nijak se nezbav\u00edte probl\u00e9mu \"zv\u011bt\u0161ov\u00e1n\u00ed\" index\u016f \u010dasem. Je jasn\u00e9, \u017ee pokud si m\u016f\u017eete dovolit ka\u017ed\u00fd den uv\u00e9st do provozu nov\u00fd server, va\u0161e probl\u00e9my ji\u017e nebudou le\u017eet pouze v rovin\u011b konkr\u00e9tn\u00ed datab\u00e1ze.<\/p>\n<p>My se v\u0161ak nebudeme zab\u00fdvat konkr\u00e9tn\u00edmi skripty pro implementaci partitioning \"v hardwaru\", ale samotn\u00fdm p\u0159\u00edstupem \u2014 co a jak by m\u011blo b\u00fdt \"nakr\u00e1jeno na kousky\", a k \u010demu vede takov\u00e1 snaha.<\/p>\n<h2>Koncept<\/h2>\n<p>\nJe\u0161t\u011b jednou si vyjasn\u00edme n\u00e1\u0161 c\u00edl: chceme zajistit, aby jak dnes, tak z\u00edtra, tak i za rok z\u016fstalo mno\u017estv\u00ed \u010diteln\u00fdch dat PostgreSQL p\u0159i jak\u00e9koli operaci \u010dten\u00ed\/z\u00e1pisu p\u0159ibli\u017en\u011b stejn\u00e9.<\/p>\n<p>Pro jak\u00e1koliv <b>chronologicky shroma\u017e\u010fovan\u00e1 data<\/b> (zpr\u00e1vy, dokumenty, logy, archivy, &#8230;) p\u0159irozenou volbou jako kl\u00ed\u010de pro sektionov\u00e1n\u00ed je <b>datum\/\u010das ud\u00e1losti<\/b>. V na\u0161em p\u0159\u00edpad\u011b takovou ud\u00e1lost\u00ed je <u>moment odesl\u00e1n\u00ed zpr\u00e1vy<\/u>.<\/p>\n<p>V\u0161imneme si, \u017ee u\u017eivatel\u00e9 prakticky v\u017edy <b>pracuj\u00ed pouze s \"nejnov\u011bj\u0161\u00edmi\"<\/b> t\u011bmito daty \u2014 \u010dtou posledn\u00ed zpr\u00e1vy, analyzuj\u00ed posledn\u00ed logy,\u2026 Ne, samoz\u0159ejm\u011b, mohou se pod\u00edvat i d\u00e1l zp\u011bt v \u010dase, ale d\u011blaj\u00ed to velmi z\u0159\u00eddka.<\/p>\n<p>Z t\u011bchto omezen\u00ed se st\u00e1v\u00e1 z\u0159ejm\u00e9, \u017ee optim\u00e1ln\u00edm \u0159e\u0161en\u00edm pro zpr\u00e1vy budou <b>\"denn\u00ed\" sekce<\/b> \u2014 v\u017edy\u0165 t\u00e9m\u011b\u0159 v\u017edy n\u00e1\u0161 u\u017eivatel \u010dte to, co mu p\u0159i\u0161lo \"dnes\" nebo \"v\u010dera\".<\/p>\n<p>Pokud b\u011bhem dne p\u00ed\u0161eme a \u010dteme prakticky pouze v jedn\u00e9 sekci, d\u00e1v\u00e1 n\u00e1m to tak\u00e9 <b>efektivn\u011bj\u0161\u00ed vyu\u017eit\u00ed pam\u011bti a disku<\/b> \u2014 proto\u017ee v\u0161echny indexy sekce se snadno vejdou do pam\u011bti, na rozd\u00edl od \"velk\u00fdch a tlust\u00fdch\" po cel\u00e9 tabulce.<\/p>\n<h2>postupn\u011b<\/h2>\n<p>\nCelkov\u011b to, co bylo \u0159e\u010deno v\u00fd\u0161e, vypad\u00e1 jako solidn\u00ed zisk. Je to dosa\u017eiteln\u00e9, ale abychom toho dos\u00e1hli, budeme se muset opravdu sna\u017eit \u2014 proto\u017ee <u>rozhodnut\u00ed sektorizovat jednu z entit vy\u017eaduje \"rozd\u011blit\" tak\u00e9 souvisej\u00edc\u00ed<\/u>.<\/p>\n<h4>Zpr\u00e1va, jej\u00ed vlastnosti a projekce<\/h4>\n<p>\nPokud jsme se rozhodli rozd\u011blit zpr\u00e1vy podle dat, m\u00e1 smysl rozd\u011blit i z\u00e1visl\u00e9 entity-vlastnosti (p\u0159\u00edlohy, seznam p\u0159\u00edjemc\u016f) a <b>tak\u00e9 podle data zpr\u00e1vy<\/b>.<\/p>\n<p>Jeliko\u017e jedn\u00edm z na\u0161ich standardn\u00edch \u00fakol\u016f je pr\u00e1v\u011b prohl\u00ed\u017een\u00ed registr\u016f zpr\u00e1v (nep\u0159e\u010dten\u00e9, p\u0159\u00edchoz\u00ed, v\u0161echny), je logick\u00e9 \"zapojit\" je tak\u00e9 do sektorov\u00e1n\u00ed podle dat zpr\u00e1v.<\/p>\n<p><img decoding=\"async\" alt=\"DB messengeru (\u010d. 2): sekcionujeme &quot;na\u017eivo&quot;\" src=\"\/wp-content\/uploads\/2020\/01\/5ea615ca97a2b865de537777c401038c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>P\u0159id\u00e1v\u00e1me kl\u00ed\u010d sektorizace (datum zpr\u00e1vy) do v\u0161ech tabulek: p\u0159\u00edjemci, soubor, registry. Do samotn\u00e9 zpr\u00e1vy jej nemus\u00edme p\u0159id\u00e1vat, m\u016f\u017eeme pou\u017e\u00edt existuj\u00edc\u00ed Datum\u010cas.<\/p><\/blockquote>\n<p><\/p>\n<h4>T\u00e9mata<\/h4>\n<p>\nJeliko\u017e je t\u00e9ma jedno na n\u011bkolik zpr\u00e1v, nelze ho \"rozd\u011blit\" v t\u00e9\u017ee struktu\u0159e, mus\u00edme se spolehnout na n\u011bco jin\u00e9ho. V na\u0161em p\u0159\u00edpad\u011b je ide\u00e1ln\u00edm \u0159e\u0161en\u00edm <b>datum prvn\u00ed zpr\u00e1vy v konverzaci<\/b> \u2014 tedy moment vytvo\u0159en\u00ed, vlastn\u011b, t\u00e9matu.<\/p>\n<p><img decoding=\"async\" alt=\"DB messengeru (\u010d. 2): sekcionujeme &quot;na\u017eivo&quot;\" src=\"\/wp-content\/uploads\/2020\/01\/4f1336a9e229221f1e25ee8d3c08fb5e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>P\u0159id\u00e1v\u00e1me kl\u00ed\u010d sektorizace (datum t\u00e9matu) do v\u0161ech tabulek: t\u00e9ma, \u00fa\u010dastn\u00edk.<\/p><\/blockquote>\n<p>\nAle nyn\u00ed se n\u00e1m objevuj\u00ed hned dva probl\u00e9my:<\/p>\n<ul>\n<li>ve kter\u00e9 sekci hledat zpr\u00e1vy podle t\u00e9matu?<\/li>\n<li>ve kter\u00e9 sekci hledat t\u00e9ma od zpr\u00e1vy?<\/li>\n<\/ul>\n<p>\nSamoz\u0159ejm\u011b, \u017ee m\u016f\u017eeme pokra\u010dovat v hled\u00e1n\u00ed ve v\u0161ech sekc\u00edch, ale to by bylo velmi smutn\u00e9 a anulovalo by to v\u0161echny na\u0161e zisky. Proto, abychom v\u011bd\u011bli, kde p\u0159esn\u011b hledat, vytvo\u0159\u00edme logick\u00e9 odkazy\/indik\u00e1tory na sekce:<\/p>\n<ul>\n<li>do zpr\u00e1vy p\u0159id\u00e1me <b>pole s datem t\u00e9matu<\/b><\/li>\n<li>k t\u00e9matu p\u0159id\u00e1me <b>sadu dat zpr\u00e1v<\/b> t\u00e9to konverzace (m\u016f\u017ee to b\u00fdt samostatn\u00e1 tabulka nebo pole dat)<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"DB messengeru (\u010d. 2): sekcionujeme &quot;na\u017eivo&quot;\" src=\"\/wp-content\/uploads\/2020\/01\/f7bfdc96c396ca37f46d876f185bf98e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJeliko\u017e modifikac\u00ed seznamu dat zpr\u00e1v pro ka\u017edou jednotlivou konverzaci bude jen n\u011bkolik (v\u0161echny zpr\u00e1vy t\u00e9m\u011b\u0159 obvykle spadaj\u00ed do 1-2 sousedn\u00edch dn\u016f), zastav\u00edm se pr\u00e1v\u011b na t\u00e9to variant\u011b.<\/p>\n<p>Ve zjednodu\u0161en\u00e9m shrnut\u00ed, struktura na\u0161\u00ed datab\u00e1ze nyn\u00ed vypad\u00e1 takto, s p\u0159ihl\u00e9dnut\u00edm k sektorizaci:<\/p>\n<p><b class=\"spoiler_title\">Tabulky: RU, pokud m\u00e1te averzi k cyrilici v n\u00e1zvech tabulek\/pol\u00edch, rad\u011bji se na to ned\u00edvejte.<\/b><\/p>\n<pre><code class=\"sql\">-- sekce podle data zpr\u00e1vy\nCREATE TABLE \"Zpr\u00e1va_YYYYMMDD\"(\n  \"Zpr\u00e1va\"\n    uuid\n      PRIMARY KEY\n, \"T\u00e9ma\"\n    uuid\n, \"DatumT\u00e9matu\"\n    date\n, \"Autor\"\n    uuid\n, \"Datum\u010casu\" -- pou\u017e\u00edv\u00e1me jako datum\n    timestamp\n, \"Text\"\n    text\n);\n\nCREATE TABLE \"Adres\u00e1t_YYYYMMDD\"(\n  \"DatumZpr\u00e1vy\"\n    date\n, \"Zpr\u00e1va\"\n    uuid\n, \"Osoba\"\n    uuid\n, PRIMARY KEY(\"Zpr\u00e1va\", \"Osoba\")\n);\n\nCREATE TABLE \"Soubor_YYYYMMDD\"(\n  \"DatumZpr\u00e1vy\"\n    date\n, \"Soubor\"\n    uuid\n      PRIMARY KEY\n, \"Zpr\u00e1va\"\n    uuid\n, \"BLOB\"\n    uuid\n, \"N\u00e1zev\"\n    text\n);\n\nCREATE TABLE \"Rejst\u0159\u00edkZpr\u00e1v_YYYYMMDD\"(\n  \"DatumZpr\u00e1vy\"\n    date\n, \"Majitel\"\n    uuid\n, \"TypRejst\u0159\u00edku\"\n    smallint\n, \"Datum\u010casu\"\n    timestamp\n, \"Zpr\u00e1va\"\n    uuid\n, PRIMARY KEY(\"Majitel\", \"TypRejst\u0159\u00edku\", \"Zpr\u00e1va\")\n);\nCREATE INDEX ON \"Rejst\u0159\u00edkZpr\u00e1v_YYYYMMDD\"(\"Majitel\", \"TypRejst\u0159\u00edku\", \"Datum\u010casu\" DESC);\n\n-- sekce podle data t\u00e9matu\nCREATE TABLE \"T\u00e9ma_YYYYMMDD\"(\n  \"DatumT\u00e9matu\"\n    date\n, \"T\u00e9ma\"\n    uuid\n      PRIMARY KEY\n, \"Dokument\"\n    uuid\n, \"N\u00e1zev\"\n    text\n);\n\nCREATE TABLE \"\u00da\u010dastn\u00edkT\u00e9matu_YYYYMMDD\"(\n  \"DatumT\u00e9matu\"\n    date\n, \"T\u00e9ma\"\n    uuid\n, \"Osoba\"\n    uuid\n, PRIMARY KEY(\"T\u00e9ma\", \"Osoba\")\n);\n\nCREATE TABLE \"D\u00e1taZpr\u00e1vT\u00e9matu_YYYYMMDD\"(\n  \"DatumT\u00e9matu\"\n    date\n, \"T\u00e9ma\"\n    uuid\n      PRIMARY KEY\n, \"Datum\"\n    date\n);\n<\/code><\/pre>\n<h2>\u0160et\u0159\u00edme korunu<\/h2>\n<p>\nA pokud nepou\u017eijeme <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/10\/ddl-partitioning\">klasickou variantu sekcionov\u00e1n\u00ed<\/a><\/noindex> na z\u00e1klad\u011b rozd\u011blen\u00ed hodnot pole (p\u0159es spou\u0161t\u011b\u010de a d\u011bdictv\u00ed nebo PARTITION BY), ale 'ru\u010dn\u011b' na \u00farovni aplikace, v\u0161imneme si, \u017ee hodnota kl\u00ed\u010de sekcionov\u00e1n\u00ed je u\u017e ulo\u017eena v n\u00e1zvu samotn\u00e9 tabulky.<\/p>\n<p>Proto\u017ee pokud jste tak <b>hodn\u011b znepokojeni objemem ukl\u00e1dan\u00fdch dat<\/b>, m\u016f\u017eete se t\u011bchto 'zbyte\u010dn\u00fdch' pol\u00ed zbavit a p\u0159istupovat p\u0159\u00edmo ke konkr\u00e9tn\u00edm tabulk\u00e1m. Pravda, v\u0161echny v\u00fdb\u011bry z n\u011bkolika sekc\u00ed budete muset v tomto p\u0159\u00edpad\u011b prov\u00e9st na stran\u011b aplikace.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483170\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u0443\u0434\u0430\u0447\u043d\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430\u0448\u0435\u0439 PostgreSQL-\u0431\u0430\u0437\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438, \u043f\u0440\u043e\u0448\u0435\u043b \u0433\u043e\u0434, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0435\u0435 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442, \u0432\u043e\u0442 \u0432 \u043d\u0435\u0439 \u0443\u0436\u0435 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0438\u2026 \u0447\u0442\u043e-\u0442\u043e \u0432\u0441\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u0434\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u0442\u044c. \u0427\u0430\u0441\u0442\u044c 1: \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u0430\u0440\u043a\u0430\u0441 \u0431\u0430\u0437\u044b \u0427\u0430\u0441\u0442\u044c 2: \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u00ab\u043d\u0430\u0436\u0438\u0432\u0443\u044e\u00bb \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441 \u0440\u043e\u0441\u0442\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0430\u0441\u0442\u0435\u0442 \u0438 \u00ab\u0433\u043b\u0443\u0431\u0438\u043d\u0430\u00bb \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u2014 \u0445\u043e\u0442\u044c \u0438 \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c\u0438\u0447\u0435\u0441\u043a\u0438. \u041d\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u044d\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55027","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u0443\u0434\u0430\u0447\u043d\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430\u0448\u0435\u0439 PostgreSQL-\u0431\u0430\u0437\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438, \u043f\u0440\u043e\u0448\u0435\u043b \u0433\u043e\u0434, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0435\u0435 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442, \u0432\u043e\u0442 \u0432 \u043d\u0435\u0439 \u0443\u0436\u0435 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0438\u2026 \u0447\u0442\u043e-\u0442\u043e \u0432\u0441\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u0434\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u0442\u044c. .\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0414 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430 (\u0447.2): \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u00ab\u043d\u0430\u0436\u0438\u0432\u0443\u044e\u00bb | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u0443\u0434\u0430\u0447\u043d\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430\u0448\u0435\u0439 PostgreSQL-\u0431\u0430\u0437\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438, \u043f\u0440\u043e\u0448\u0435\u043b \u0433\u043e\u0434, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0435\u0435 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442, \u0432\u043e\u0442 \u0432 \u043d\u0435\u0439 \u0443\u0436\u0435 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0438\u2026 \u0447\u0442\u043e-\u0442\u043e \u0432\u0441\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u0434\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u0442\u044c. .\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-09T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:06+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DB messengeru (\u010d.2): sekcionujeme 'na\u017eivo' | ProHoster","description":"\u00dasp\u011b\u0161n\u011b jsme navrhli strukturu na\u0161\u00ed datab\u00e1ze PostgreSQL pro ukl\u00e1d\u00e1n\u00ed korespondence, uplynul rok, u\u017eivatel\u00e9 ji aktivn\u011b vypl\u0148uj\u00ed, u\u017e m\u00e1 miliony z\u00e1znam\u016f, a... n\u011bco za\u010dalo zpomalovat.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0414 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430 (\u0447.2): \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u00ab\u043d\u0430\u0436\u0438\u0432\u0443\u044e\u00bb | ProHoster","og:description":"\u041c\u044b \u0443\u0434\u0430\u0447\u043d\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430\u0448\u0435\u0439 PostgreSQL-\u0431\u0430\u0437\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438, \u043f\u0440\u043e\u0448\u0435\u043b \u0433\u043e\u0434, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0435\u0435 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442, \u0432\u043e\u0442 \u0432 \u043d\u0435\u0439 \u0443\u0436\u0435 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0438\u2026 \u0447\u0442\u043e-\u0442\u043e \u0432\u0441\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u0434\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u0442\u044c. .","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-09T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:06+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55027","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 13:34:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:53:48","updated":"2026-01-24 13:34:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/55027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=55027"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/55027\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=55027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=55027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=55027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}