{"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\/de\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu","title":{"rendered":"DB des Messengers (Teil 2): 'live' partitionieren","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Wir haben die Struktur unserer PostgreSQL-Datenbank zum Speichern von Korrespondenz erfolgreich entworfen. Ein Jahr ist vergangen, und die Benutzer f\u00fcllen sie aktiv \u2013 inzwischen gibt es <b>Millionen von Eintr\u00e4gen<\/b>, und\u2026 alles hat angefangen, ein wenig zu stocken.<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483176\/\">Teil 1: Gestalten des Datenbankger\u00fcsts<\/a><\/noindex><\/li>\n<li>Teil 2: Sektionierung \u201elive\u201c<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"DB des Messengers (Teil 2): &#039;live&#039; partitionieren\" src=\"\/wp-content\/uploads\/2020\/01\/7830da046d9c472af15330e42cbb05e0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDas Problem ist, dass <b>Mit dem Wachstum der Tabellengr\u00f6\u00dfe w\u00e4chst auch die \u201eTiefe\u201c der Indizes<\/b> \u2013 auch wenn nur logarithmisch. Aber mit der Zeit zwingt es den Server dazu, f\u00fcr die gleichen Lese-\/Schreibaufgaben <i>deutlich mehr Datenbl\u00e4tter zu verarbeiten<\/i>, als zu Beginn.<\/p>\n<p>Hier kommt <b>die Partitionierung<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nin Hilfe, wobei ich anmerken m\u00f6chte, dass es nicht um Sharding geht, also um die Verteilung von Daten auf verschiedene Datenbanken oder Server. Denn selbst wenn Sie die Daten auf <b>mehrere<\/b> Server aufteilen, werden Sie das Problem der \u201eAufbl\u00e4hung\u201c der Indizes im Laufe der Zeit nicht los. Es ist klar, dass, wenn Sie sich t\u00e4glich einen neuen Server leisten k\u00f6nnen, Ihre Probleme bereits auf einer ganz anderen Ebene liegen werden.<\/p>\n<p>Wir werden nicht spezifische Skripte f\u00fcr die Implementierung der Partitionierung \u201ein der Hardware\u201c betrachten, sondern den Ansatz selbst \u2013 was und wie man \u201ein Scheiben schneiden\u201c sollte und worauf dieses Verlangen hinausl\u00e4uft.<\/p>\n<h2>Konzept<\/h2>\n<p>\nLassen Sie uns unser Ziel noch einmal definieren: Wir wollen sicherstellen, dass die Menge der gelesenen PostgreSQL-Daten bei jeder Lese-\/Schreiboperation heute, morgen und in einem Jahr ungef\u00e4hr gleich bleibt.<\/p>\n<p>F\u00fcr alle <b>chronologisch gesammelten Daten<\/b> (Nachrichten, Dokumente, Protokolle, Archive, &#8230;) ist eine nat\u00fcrliche Wahl f\u00fcr den Partitionierungsschl\u00fcssel. <b>das Datum\/Uhrzeit des Ereignisses<\/b>. In unserem Fall ist ein solches Ereignis <u>der Zeitpunkt des Versendens einer Nachricht<\/u>.<\/p>\n<p>Wir stellen fest, dass die Benutzer praktisch immer <b>nur mit den \u201eneueren\u201c<\/b> solchen Daten arbeiten \u2013 sie lesen die letzten Nachrichten, analysieren die letzten Protokolle,\u2026 Sicher, sie k\u00f6nnen auch weiter in der Zeit zur\u00fcckbl\u00e4ttern, aber das tun sie sehr selten.<\/p>\n<p>Aus diesen Einschr\u00e4nkungen wird offensichtlich, dass die optimale L\u00f6sung f\u00fcr Nachrichten sein wird, <b>\u201et\u00e4gliche\u201c Partitionen<\/b> \u2013 denn fast immer wird unser Benutzer das lesen, was ihm \u201eheute\u201c oder \u201egestern\u201c zugegangen ist.<\/p>\n<p>Wenn wir im Laufe des Tages praktisch nur in einer Partition schreiben und lesen, f\u00fchrt dies auch zu <b>einer effizienteren Nutzung von Speicher und Festplatte<\/b> \u2013 da alle Indizes der Partition leicht in den Arbeitsspeicher passen, im Gegensatz zu \u201egro\u00dfen und fetten\u201c \u00fcber die gesamte Tabelle.<\/p>\n<h2>Schritt-f\u00fcr-Schritt<\/h2>\n<p>\nInsgesamt klingt alles, was oben gesagt wurde, wie ein einziger gro\u00dfer Gewinn. Und er ist erreichbar, aber daf\u00fcr m\u00fcssen wir uns anstrengen \u2013 denn <u>die Entscheidung, eine der Entit\u00e4ten zu sektionieren, f\u00fchrt zum Bedarf, auch die damit verbundenen<\/u>.<\/p>\n<h4>Nachrichten, ihre Eigenschaften und Projektionen<\/h4>\n<p>\nDa wir uns entschieden haben, Nachrichten nach Datumsangaben zu schneiden, ist es auch sinnvoll, die davon abh\u00e4ngigen Entit\u00e4ten-Eigenschaften (Anh\u00e4nge, Adressatenliste) ebenfalls zu trennen, und <b>zwar nach dem Datum der Nachricht<\/b>.<\/p>\n<p>Da eine unserer typischen Aufgaben gerade die Ansicht der Nachrichteregister (ungelesene, eingehende, alle) ist, macht es auch Sinn, diese in die Datumssektionierung der Nachrichten einzubeziehen.<\/p>\n<p><img decoding=\"async\" alt=\"DB des Messengers (Teil 2): &#039;live&#039; partitionieren\" src=\"\/wp-content\/uploads\/2020\/01\/5ea615ca97a2b865de537777c401038c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Wir f\u00fcgen den Sektionierungsschl\u00fcssel (das Datum der Nachricht) in alle Tabellen ein: Adressaten, Datei, Register. In der Nachricht selbst kann man diesen nicht hinzuf\u00fcgen, sondern das bestehende Datum und die Uhrzeit verwenden.<\/p><\/blockquote>\n<p><\/p>\n<h4>Themen<\/h4>\n<p>\nDa das Thema \u00fcber mehrere Nachrichten hinweg geht, kann man es in diesem Modell nicht einfach teilen, wir m\u00fcssen uns auf etwas anderes st\u00fctzen. In unserem Fall passt <b>das Datum der ersten Nachricht in der Korrespondenz<\/b> also der Zeitpunkt der Erstellung des eigentlichen Themas.<\/p>\n<p><img decoding=\"async\" alt=\"DB des Messengers (Teil 2): &#039;live&#039; partitionieren\" src=\"\/wp-content\/uploads\/2020\/01\/4f1336a9e229221f1e25ee8d3c08fb5e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Wir f\u00fcgen den Sektionierungsschl\u00fcssel (das Datum des Themas) in alle Tabellen ein: Thema, Teilnehmer.<\/p><\/blockquote>\n<p>\nAber nun stehen wir sofort vor zwei Problemen:<\/p>\n<ul>\n<li>In welcher Sektion soll man nach Nachrichten zum Thema suchen?<\/li>\n<li>In welcher Sektion soll man das Thema aus der Nachricht suchen?<\/li>\n<\/ul>\n<p>\nNat\u00fcrlich k\u00f6nnte man weiterhin in allen Sektionen suchen, aber das w\u00e4re sehr ungl\u00fccklich und w\u00fcrde all unsere Gewinne zunichte machen. Deshalb, um zu wissen, wo genau man suchen soll, erstellen wir logische Links\/Referenzen zu den Sektionen:<\/p>\n<ul>\n<li>Wir f\u00fcgen in der Nachricht hinzu <b>ein Feld mit dem Datum des Themas<\/b><\/li>\n<li>zu dem Thema f\u00fcgen wir hinzu <b>eine Reihe von Nachrichtendaten<\/b> dieser Korrespondenz (es kann eine separate Tabelle sein, oder auch ein Array von Daten)<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"DB des Messengers (Teil 2): &#039;live&#039; partitionieren\" src=\"\/wp-content\/uploads\/2020\/01\/f7bfdc96c396ca37f46d876f185bf98e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDa es nur wenige Modifikationen der Liste von Nachrichtendaten f\u00fcr jede einzelne Korrespondenz geben wird (denn fast alle Nachrichten fallen in 1-2 benachbarte Tage), werde ich mich genau auf diese Variante konzentrieren.<\/p>\n<p>Insgesamt hat die Struktur unserer Datenbank unter Ber\u00fccksichtigung der Sektionierung folgende Form angenommen:<\/p>\n<p><b class=\"spoiler_title\">Tabellen: RU, bei Abneigung gegen Kyrillisch in den Namen von Tabellen\/Feldern besser nicht schauen<\/b><\/p>\n<pre><code class=\"sql\">-- Abschnitte nach dem Datum der Nachricht\nCREATE TABLE \"Nachricht_YYYYMMDD\"(\n  \"Nachricht\"\n    uuid\n      PRIMARY KEY\n, \"Thema\"\n    uuid\n, \"DatumThema\"\n    date\n, \"Autor\"\n    uuid\n, \"DatumUhrzeit\" -- nutzen wir als Datum\n    timestamp\n, \"Text\"\n    text\n);\n\nCREATE TABLE \"Empf\u00e4nger_YYYYMMDD\"(\n  \"DatumNachricht\"\n    date\n, \"Nachricht\"\n    uuid\n, \"Person\"\n    uuid\n, PRIMARY KEY(\"Nachricht\", \"Person\")\n);\n\nCREATE TABLE \"Datei_YYYYMMDD\"(\n  \"DatumNachricht\"\n    date\n, \"Datei\"\n    uuid\n      PRIMARY KEY\n, \"Nachricht\"\n    uuid\n, \"BLOB\"\n    uuid\n, \"Name\"\n    text\n);\n\nCREATE TABLE \"RegisterNachrichten_YYYYMMDD\"(\n  \"DatumNachricht\"\n    date\n, \"Inhaber\"\n    uuid\n, \"TypRegister\"\n    smallint\n, \"DatumUhrzeit\"\n    timestamp\n, \"Nachricht\"\n    uuid\n, PRIMARY KEY(\"Inhaber\", \"TypRegister\", \"Nachricht\")\n);\nCREATE INDEX ON \"RegisterNachrichten_YYYYMMDD\"(\"Inhaber\", \"TypRegister\", \"DatumUhrzeit\" DESC);\n\n-- Abschnitte nach dem Datum des Themas\nCREATE TABLE \"Thema_YYYYMMDD\"(\n  \"DatumThema\"\n    date\n, \"Thema\"\n    uuid\n      PRIMARY KEY\n, \"Dokument\"\n    uuid\n, \"Titel\"\n    text\n);\n\nCREATE TABLE \"TeilnehmerThema_YYYYMMDD\"(\n  \"DatumThema\"\n    date\n, \"Thema\"\n    uuid\n, \"Person\"\n    uuid\n, PRIMARY KEY(\"Thema\", \"Person\")\n);\n\nCREATE TABLE \"DatenNachrichtenThema_YYYYMMDD\"(\n  \"DatumThema\"\n    date\n, \"Thema\"\n    uuid\n      PRIMARY KEY\n, \"Datum\"\n    date\n);\n<\/code><\/pre>\n<h2>Wir sparen ein wenig Geld<\/h2>\n<p>\nNun, was ist, wenn wir nicht <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/10\/ddl-partitioning\">die klassische Variante der Partitionierung<\/a><\/noindex> basierend auf der Verteilung der Feldwerte (\u00fcber Trigger und Vererbung oder PARTITION BY) verwenden, sondern \u201emanuell\u201c auf Anwendungsseite, dann kann man feststellen, dass der Wert des Partitionierungsschl\u00fcssels bereits im Namen der Tabelle selbst gespeichert ist.<\/p>\n<p>Deshalb, wenn Sie so sehr <b>besorgt sind \u00fcber das Volumen der gespeicherten Daten<\/b>, dann kann man sich von diesen \u201e\u00fcberfl\u00fcssigen\u201c Feldern befreien und direkt auf bestimmte Tabellen zugreifen. Allerdings m\u00fcssen in diesem Fall alle Abfragen \u00fcber mehrere Partitionen auf die Anwendungsseite ausgelagert werden.<br \/>\n<br \/>Quelle: <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.1.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\/de\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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 des Messengers (Teil 2): Live-Partitionierung | ProHoster","description":"Wir haben die Struktur unserer PostgreSQL-Datenbank f\u00fcr die Speicherung von Korrespondenz erfolgreich entworfen, ein Jahr ist vergangen, die Nutzer f\u00fcllen sie aktiv, es gibt bereits Millionen von Datens\u00e4tzen darin, und\u2026 irgendwie beginnt es, langsam zu werden.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/bd-messendzhera-ch-2-sektsioniruem-nazhivuyu","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/55027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=55027"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/55027\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=55027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=55027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=55027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}