{"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\/ro\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu","title":{"rendered":"BD-ul messengerului (partea 2): sec\u021bion\u0103m \"\u00een direct\"","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Am proiectat cu succes structura bazei noastre de date PostgreSQL pentru stocarea coresponden\u021bei, a trecut un an, utilizatorii o umplu activ, iat\u0103 c\u0103 \u00een ea deja <b>sunt milioane de \u00eenregistr\u0103ri<\/b>, \u0219i\u2026 ceva \u00eencepe s\u0103 deraieze.<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483176\/\">Partea 1: proiect\u0103m structura bazei de date<\/a><\/noindex><\/li>\n<li>Partea 2: sec\u021bion\u0103m \u00ab\u00een timp real\u00bb<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"BD-ul messengerului (partea 2): sec\u021bion\u0103m &quot;\u00een direct&quot;\" src=\"\/wp-content\/uploads\/2020\/01\/7830da046d9c472af15330e42cbb05e0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSe \u00eent\u00e2mpl\u0103 c\u0103 <b>odat\u0103 cu cre\u0219terea volumului tabelului, \u00abad\u00e2ncimea\u00bb indicilor cre\u0219te<\/b> \u2014 de\u0219i logarithmic. Dar, \u00een timp, acest lucru for\u021beaz\u0103 serverul s\u0103 proceseze mult mai multe pagini de date <i>dec\u00e2t la \u00eenceput.<\/i>, ceea ce face ca sarcinile de citire\/scriere<\/p>\n<p>s\u0103 necesite din ce \u00een ce mai mult\u0103 capacitate. <b>Aici intervine<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nsepararea <b>Voi men\u021biona c\u0103 nu ne referim la sharding, adic\u0103 distribuirea datelor \u00eentre diferite baze de date sau servere. Pentru c\u0103, chiar \u0219i \u00eemp\u0103r\u021bind datele pe<\/b> mai multe<\/p>\n<p>servere, nu ve\u021bi sc\u0103pa de problema \u00abcre\u0219terii\u00bb indicilor \u00een timp. Este clar c\u0103, dac\u0103 v\u0103 pute\u021bi permite s\u0103 ad\u0103uga\u021bi un server nou \u00een fiecare zi, atunci problemele dvs. vor fi deja cu totul diferite fa\u021b\u0103 de o baz\u0103 de date specific\u0103.<\/p>\n<h2>Concept<\/h2>\n<p>\nNoi vom analiza nu scripturi specifice pentru implementarea separ\u0103rii \u00ab\u00een hardware\u00bb, ci abordarea \u00een sine \u2014 ce \u0219i cum ar trebui \u00abt\u0103iat \u00een felii\u00bb, \u0219i la ce duce acest deziderat.<\/p>\n<p>S\u0103 ne definim din nou obiectivul: vrem s\u0103 facem astfel \u00eenc\u00e2t ast\u0103zi, m\u00e2ine \u0219i peste un an cantitatea de date PostgreSQL citite \u00een timpul oric\u0103rei opera\u021biuni de citire\/scriere s\u0103 r\u0103m\u00e2n\u0103 aproximativ constant\u0103. <b>Pentru orice<\/b> (mesaje, documente, jurnale, arhive, &#8230;) alegerea natural\u0103 ca \u0219i cheie de sec\u021bionare este <b>(mesaje, documente, jurnal, arhive,\u2026) alegerea natural\u0103 a cheii de separare este<\/b>data\/ora evenimentului <u>. \u00cen cazul nostru, acest eveniment este<\/u>.<\/p>\n<p>momentul trimiterii mesajului <b>S\u0103 observ\u0103m c\u0103 utilizatorii lucreaz\u0103 aproape \u00eentotdeauna<\/b> doar cu aceste \u00abrecente\u00bb<\/p>\n<p>date \u2014 citesc ultimele mesaje, analizeaz\u0103 ultimele jurnale,... Nu, desigur, pot s\u0103 parcurg\u0103 \u0219i mai \u00een urm\u0103 \u00een timp, dar o fac foarte rar. <b>Dintre aceste restric\u021bii, devine evident c\u0103 solu\u021bia optim\u0103 pentru mesaje va fi<\/b> separa\u021bii \u00abzilnice\u00bb<\/p>\n<p>\u2014 c\u0103ci aproape \u00eentotdeauna utilizatorul nostru va citi ceea ce a primit \u00abast\u0103zi\u00bb sau \u00abieri\u00bb. <b>Dac\u0103 \u00een decursul zilei scriem \u0219i citim aproape exclusiv \u00eentr-o singur\u0103 sec\u021biune, aceasta ne ofer\u0103 \u0219i<\/b> o utilizare mai eficient\u0103 a memoriei \u0219i discului<\/p>\n<h2>\u2014 dat fiind c\u0103 toate indica\u021biile sec\u021biunii se \u00eencadreaz\u0103 cu u\u0219urin\u021b\u0103 \u00een RAM, spre deosebire de \u00abcele mari \u0219i greoaie\u00bb din \u00eentreaga tabel\u0103.<\/h2>\n<p>\n\u00cen general, tot ce s-a spus mai sus sun\u0103 ca un profit constant. \u0218i este realizabil, dar pentru asta va trebui s\u0103 muncim mult \u2014 pentru c\u0103 <u>decizia de a sec\u021biona una dintre entit\u0103\u021bi determin\u0103 necesitatea de a \u201et\u0103ia\u201d \u0219i entit\u0103\u021bile asociate<\/u>.<\/p>\n<h4>Mesajul, propriet\u0103\u021bile sale \u0219i proiec\u021biile<\/h4>\n<p>\nDac\u0103 am decis s\u0103 \u00eemp\u0103r\u021bim mesajele pe baza datelor, atunci \u0219i entit\u0103\u021bile-propriet\u0103\u021bi dependente de acestea (fi\u0219ierele ata\u0219ate, lista de destinatari) este logic s\u0103 le \u00eemp\u0103r\u021bim \u0219i <b>de asemenea, \u00een func\u021bie de data mesajului<\/b>.<\/p>\n<p>Deoarece una dintre sarcinile noastre tipice este tocmai vizualizarea registrelor de mesaje (necitite, \u00een curs, toate), este logic s\u0103 le \u201e\u00eencadr\u0103m\u201d \u0219i \u00een sec\u021bionarea pe baza datelor mesajelor.<\/p>\n<p><img decoding=\"async\" alt=\"BD-ul messengerului (partea 2): sec\u021bion\u0103m &quot;\u00een direct&quot;\" src=\"\/wp-content\/uploads\/2020\/01\/5ea615ca97a2b865de537777c401038c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Ad\u0103ug\u0103m cheia de sec\u021bionare (data mesajului) \u00een toate tabelele: destinatari, fi\u0219ier, registre. \u00cen mesajul \u00een sine nu este necesar s\u0103 ad\u0103ug\u0103m, ci s\u0103 utiliz\u0103m data \u0219i ora existent\u0103.<\/p><\/blockquote>\n<p><\/p>\n<h4>Subiecte<\/h4>\n<p>\nDeoarece subiectul se refer\u0103 la mai multe mesaje, nu \u00eel putem \u201et\u0103ia\u201d \u00een acela\u0219i model, trebuie s\u0103 ne baz\u0103m pe altceva. \u00cen cazul nostru, data primului mesaj \u00een coresponden\u021b\u0103 este perfect\u0103 <b>\u2014 adic\u0103 momentul cre\u0103rii, de fapt, a subiectului.<\/b> Ad\u0103ug\u0103m cheia de sec\u021bionare (data subiectului) \u00een toate tabelele: subiect, participant.<\/p>\n<p><img decoding=\"async\" alt=\"BD-ul messengerului (partea 2): sec\u021bion\u0103m &quot;\u00een direct&quot;\" src=\"\/wp-content\/uploads\/2020\/01\/4f1336a9e229221f1e25ee8d3c08fb5e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Dar acum avem imediat dou\u0103 probleme:<\/p><\/blockquote>\n<p>\n\u00een ce sec\u021biune c\u0103ut\u0103m mesajele pe subiect?<\/p>\n<ul>\n<li>\u00een ce sec\u021biune c\u0103ut\u0103m subiectul din mesaj?<\/li>\n<li>Desigur, putem continua s\u0103 c\u0103ut\u0103m \u00een toate sec\u021biunile, dar asta va fi foarte trist \u0219i va anula toate c\u00e2\u0219tigurile noastre. Prin urmare, pentru a \u0219ti exact unde s\u0103 c\u0103ut\u0103m, vom face linkuri logice\/indicii pe sec\u021biuni:<\/li>\n<\/ul>\n<p>\n\u00een mesaj vom ad\u0103uga<\/p>\n<ul>\n<li>un c\u00e2mp cu data subiectului <b>la subiect vom ad\u0103uga<\/b><\/li>\n<li>un set de date ale mesajelor <b>acelei coresponden\u021be (poate fi o tabel\u0103 separat\u0103 sau un array de date)<\/b> Deoarece modific\u0103rile listei de date ale mesajelor pentru fiecare coresponden\u021b\u0103 \u00een parte vor fi pu\u021bine (deoarece aproape toate mesajele apar \u00een 1-2 zile consecutive), m\u0103 voi opri exact la aceast\u0103 variant\u0103.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"BD-ul messengerului (partea 2): sec\u021bion\u0103m &quot;\u00een direct&quot;\" src=\"\/wp-content\/uploads\/2020\/01\/f7bfdc96c396ca37f46d876f185bf98e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen total, structura bazei noastre a luat urm\u0103toarea form\u0103 av\u00e2nd \u00een vedere sec\u021bionarea:<\/p>\n<p>Tabele: RU, celor care au aversiune fa\u021b\u0103 de chirilice \u00een numele tabelurilor\/c\u00e2mpurilor mai bine s\u0103 nu se uite<\/p>\n<p><b class=\"spoiler_title\">Tabele : RO, dac\u0103 ai aversiune fa\u021b\u0103 de chirilic\u0103 \u00een denumirile tabelelor\/c\u00e2mpurilor, mai bine s\u0103 nu te ui\u021bi.<\/b><\/p>\n<pre><code class=\"sql\">-- sec\u021biuni dup\u0103 data mesajului\nCREATE TABLE \"Mesaj_YYYYMMDD\"(\n  \"Mesaj\"\n    uuid\n      PRIMARY KEY\n, \"Subiect\"\n    uuid\n, \"DataSubiect\"\n    date\n, \"Autor\"\n    uuid\n, \"DataTimp\" -- utiliz\u0103m ca dat\u0103\n    timestamp\n, \"Text\"\n    text\n);\n\nCREATE TABLE \"Destinatar_YYYYMMDD\"(\n  \"DataMesajului\"\n    date\n, \"Mesaj\"\n    uuid\n, \"Persoan\u0103\"\n    uuid\n, PRIMARY KEY(\"Mesaj\", \"Persoan\u0103\")\n);\n\nCREATE TABLE \"Fi\u0219ier_YYYYMMDD\"(\n  \"DataMesajului\"\n    date\n, \"Fi\u0219ier\"\n    uuid\n      PRIMARY KEY\n, \"Mesaj\"\n    uuid\n, \"BLOB\"\n    uuid\n, \"Nume\"\n    text\n);\n\nCREATE TABLE \"RegistruMesaje_YYYYMMDD\"(\n  \"DataMesajului\"\n    date\n, \"Proprietar\"\n    uuid\n, \"TipRegistru\"\n    smallint\n, \"DataTimp\"\n    timestamp\n, \"Mesaj\"\n    uuid\n, PRIMARY KEY(\"Proprietar\", \"TipRegistru\", \"Mesaj\")\n);\nCREATE INDEX ON \"RegistruMesaje_YYYYMMDD\"(\"Proprietar\", \"TipRegistru\", \"DataTimp\" DESC);\n\n-- sec\u021biuni dup\u0103 data subiectului\nCREATE TABLE \"Subiect_YYYYMMDD\"(\n  \"DataSubiect\"\n    date\n, \"Subiect\"\n    uuid\n      PRIMARY KEY\n, \"Document\"\n    uuid\n, \"Denumire\"\n    text\n);\n\nCREATE TABLE \"ParticipantSubiect_YYYYMMDD\"(\n  \"DataSubiect\"\n    date\n, \"Subiect\"\n    uuid\n, \"Persoan\u0103\"\n    uuid\n, PRIMARY KEY(\"Subiect\", \"Persoan\u0103\")\n);\n\nCREATE TABLE \"DateMesajeSubiect_YYYYMMDD\"(\n  \"DataSubiect\"\n    date\n, \"Subiect\"\n    uuid\n      PRIMARY KEY\n, \"Data\"\n    date\n);\n<\/code><\/pre>\n<h2>Economisim o m\u0103sur\u0103<\/h2>\n<p>\nEi bine, dac\u0103 nu folosim <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/10\/ddl-partitioning\">varianta clasic\u0103 de sec\u021bionare<\/a><\/noindex> bazat\u0103 pe distribu\u021bia valorilor c\u00e2mpului (prin trigers \u0219i mo\u0219tenire sau PARTITION BY), ci \u00abmanual\u00bb la nivel de aplica\u021bie, se poate observa c\u0103 valoarea cheii de sec\u021bionare este deja p\u0103strat\u0103 \u00een numele acelei tabele.<\/p>\n<p>De aceea, dac\u0103 \u00ee\u021bi pas\u0103 at\u00e2t de mult <b>de volumul datelor stocate<\/b>, po\u021bi renun\u021ba la aceste \u201ec\u00e2mpuri \u00een plus\u201d \u0219i s\u0103 te adresezi direct unor tabele specifice. Totu\u0219i, toate selec\u021biile din mai multe sec\u021biuni \u00een acest caz vor trebui mutate \u00een cadrul aplica\u021biei.<br \/>\n<br \/>Sursa: <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.2.1 - 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\/ro\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Baza de date a mesagerului (partea 2): sec\u021bion\u0103m \u201e\u00een timp real\u201d | ProHoster","description":"Am proiectat cu succes structura bazei noastre de date PostgreSQL pentru stocarea coresponden\u021bei, a trecut un an, utilizatorii o umplu activ, iar acum are milioane de \u00eenregistr\u0103ri \u0219i\u2026 ceva a \u00eenceput s\u0103 se blocheze.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/55027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=55027"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/55027\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=55027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=55027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=55027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}