{"id":55011,"date":"2020-01-10T00:00:00","date_gmt":"2020-01-09T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/bd-messendzhera-ch-1-proektiruem-karkas-bazy"},"modified":"2020-02-18T14:03:05","modified_gmt":"2020-02-18T11:03:05","slug":"bd-messendzhera-ch-1-proektiruem-karkas-bazy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/bd-messendzhera-ch-1-proektiruem-karkas-bazy","title":{"rendered":"Mesaj bazas\u0131 (hiss\u0259 1): bazan\u0131n karkas\u0131n\u0131 layih\u0259l\u0259\u015fdirm\u0259k","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Biznes t\u0259l\u0259bl\u0259rini konkret m\u0259lumat strukturlar\u0131na nec\u0259 \u00e7evirm\u0259k olar, m\u0259s\u0259l\u0259n, mesaj bazas\u0131n\u0131 \u00abs\u0131f\u0131rdan\u00bb layih\u0259l\u0259\u015fdirm\u0259k.<\/p>\n<ul>\n<li>Hiss\u0259 1: Bazan\u0131n karkas\u0131n\u0131 layih\u0259l\u0259\u015fdiririk<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483170\/\">Hiss\u0259 2: \u00abCanl\u0131\u00bb b\u00f6lm\u0259<\/a><\/noindex><\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Mesaj bazas\u0131 (hiss\u0259 1): bazan\u0131n karkas\u0131n\u0131 layih\u0259l\u0259\u015fdirm\u0259k\" src=\"\/wp-content\/uploads\/2020\/01\/d4e85052405da3f6580e4e931c292079.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nBizim bazam\u0131z VKontakte-d\u0259 oldu\u011fu kimi geni\u015f v\u0259 paylanm\u0131\u015f olmayacaq, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/vk\/blog\/342570\/\">Badoo<\/a><\/noindex> v\u0259 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/340976\/\">, amma \u00ab\u00fcmumiyy\u0259tl\u0259 yax\u015f\u0131 olmas\u0131\u00bb \u00fc\u00e7\u00fcn \u2014 funksional, s\u00fcr\u0259tli v\u0259<\/a><\/noindex>bir serverd\u0259 yerl\u0259\u015fm\u0259si <b>PostgreSQL \u2014 bunu ayr\u0131 bir xidm\u0259t n\u00fcmun\u0259sini yerd\u0259, m\u0259s\u0259l\u0259n, i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn.<\/b> Buna g\u00f6r\u0259 d\u0259, \u015fardinq, replika v\u0259 co\u011frafi paylanm\u0131\u015f sisteml\u0259r m\u0259s\u0259l\u0259l\u0259rin\u0259 toxunmayaca\u011f\u0131q, lakin veril\u0259nl\u0259r bazas\u0131 i\u00e7ind\u0259ki sxem h\u0259ll\u0259rin\u0259 fokuslanaca\u011f\u0131q.<\/p>\n<p>Add\u0131m 1: Bir az biznes spesifikas\u0131<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Bizim mesajla\u015fmam\u0131z\u0131 abstrakt \u015f\u0259kild\u0259 layih\u0259l\u0259\u015fdirm\u0259kd\u0259ns\u0259, onu<\/h2>\n<p>\nkorporativ sosial \u015f\u0259b\u0259k\u0259 <noindex><a rel=\"nofollow\" href=\"https:\/\/sbis.ru\/help\/work_in\/sms\/\">m\u00fchitin\u0259 daxil ed\u0259c\u0259yik. Y\u0259ni insanlar \u00absad\u0259c\u0259 yaz\u0131\u015fm\u0131rlar\u00bb, m\u00fc\u0259yy\u0259n biznes m\u0259s\u0259l\u0259l\u0259rini h\u0259ll etm\u0259k kontekstind\u0259 bir-biri il\u0259 \u00fcnsiyy\u0259t qururlar.<\/a><\/noindex>Biznesin hans\u0131 tap\u015f\u0131r\u0131qlar\u0131 var? .. Vasiliy n\u00fcmun\u0259sind\u0259 baxaq \u2014 inki\u015faf departamentinin r\u0259hb\u0259ri.<\/p>\n<p>\u00abNikolay, bu tap\u015f\u0131r\u0131q \u00fc\u00e7\u00fcn patch art\u0131q bu g\u00fcn laz\u0131md\u0131r!\u00bb<\/p>\n<ul>\n<li><i>Dem\u0259li, yaz\u0131\u015fma m\u00fc\u0259yy\u0259n bir<\/i><br \/>\ns\u0259n\u0259d il\u0259 kontekstd\u0259 ola bil\u0259r <b>\u00abKolya, ax\u015fam doto \u00fc\u00e7\u00fcn get?\u00bb<\/b>.<\/li>\n<li><i>Y\u0259ni bir c\u00fct s\u00f6z\u00e7\u00fc aras\u0131nda \u00fcnsiyy\u0259t eyni zamanda<\/i><br \/>\nfarkl\u0131 m\u00f6vzular \u00fczr\u0259 ola bil\u0259r <b>\u00abPetr, Nikolay, \u0259lav\u0259 olunan yeni serverin qiym\u0259tin\u0259 bax\u0131n.\u00bb<\/b>.<\/li>\n<li><i>Bel\u0259likl\u0259, bir mesaj\u0131n<\/i><br \/>\nbir ne\u00e7\u0259 al\u0131c\u0131s\u0131 ola bil\u0259r. <b>Bu zamanda mesajda<\/b>priketlenmi\u015f fayllar <b>\u00abSemyon, s\u0259n d\u0259 bax.\u00bb<\/b>.<\/li>\n<li><i>V\u0259 m\u00f6vcud yaz\u0131\u015fmaya<\/i><br \/>\nyeni i\u015ftirak\u00e7\u0131 d\u0259v\u0259t etm\u0259 imkan\u0131 olmal\u0131d\u0131r. <b>Bu \u00abayd\u0131n\u00bb ehtiyaclar siyah\u0131s\u0131 il\u0259 h\u0259l\u0259lik dayanar\u0131q.<\/b>.<\/li>\n<\/ul>\n<p>\nT\u0259tbiqi tap\u015f\u0131r\u0131\u011f\u0131n spesifikas\u0131 v\u0259 ona qoyulan m\u0259hdudiyy\u0259tl\u0259r olmadan,<\/p>\n<blockquote><p>onun h\u0259lli \u00fc\u00e7\u00fcn effektiv <b>veril\u0259nl\u0259r bazas\u0131 sxemas\u0131n\u0131 layih\u0259l\u0259\u015fdirm\u0259k dem\u0259k olar ki, m\u00fcmk\u00fcn deyil.<\/b> Add\u0131m 2: Minimum m\u0259ntiqi sxema<\/p><\/blockquote>\n<p><\/p>\n<h2>Sxemc\u0259, haz\u0131rda h\u0259r \u015fey email yaz\u0131\u015fmas\u0131na \u00e7ox ox\u015far g\u00f6r\u00fcn\u00fcr \u2014 \u0259n\u0259n\u0259vi biznes al\u0259ti. B\u0259li, \u00abalqrimik\u00bb biznesin bir \u00e7ox v\u0259zif\u0259l\u0259ri ox\u015fard\u0131r, buna g\u00f6r\u0259 d\u0259 onlar\u0131n h\u0259lli \u00fc\u00e7\u00fcn al\u0259tl\u0259r struktural olaraq ox\u015far olacaq.<\/h2>\n<p>\nG\u0259lin art\u0131q \u0259ld\u0259 olunan m\u0259ntiqi varl\u0131q \u0259laq\u0259l\u0259ri sxemas\u0131n\u0131 sabitl\u0259\u015fdir\u0259k. Anlay\u0131\u015f\u0131m\u0131z \u00fc\u00e7\u00fcn modelimizi \u0259n primitiv g\u00f6r\u00fcnt\u00fc \u00fcsulundan istifad\u0259 ed\u0259r\u0259k<\/p>\n<p>ER-modeli <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/ER-%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C\">UML v\u0259 ya IDEF notasiyalar\u0131 il\u0259 \u00e7\u0259tinl\u0259\u015fdirm\u0259d\u0259n:<\/a><\/noindex> Bizim n\u00fcmun\u0259d\u0259 \u015f\u0259xs, s\u0259n\u0259d v\u0259 ikili \u00abfail\u0131n\u00bb \u00abb\u0259dii\u00bb hiss\u0259si \u2014 bunlar \u00abxarici\u00bb varl\u0131qlard\u0131r, onlar ayr\u0131ca olaraq bizim xidm\u0259timizsiz d\u0259 m\u00f6vcuddur. Buna g\u00f6r\u0259 d\u0259, onlar\u0131 daha sonra UUID \u0259sas\u0131nda \u00abn\u0259 is\u0259\u00bb kimi q\u0259bul ed\u0259c\u0259yik.<\/p>\n<p><img decoding=\"async\" alt=\"Mesaj bazas\u0131 (hiss\u0259 1): bazan\u0131n karkas\u0131n\u0131 layih\u0259l\u0259\u015fdirm\u0259k\" src=\"\/wp-content\/uploads\/2020\/01\/75d0b3cf9e5a44ae3e243449fa406fbc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC\u0259dv\u0259ll\u0259rin strukturunu m\u00fcmk\u00fcn q\u0259d\u0259r sad\u0259 \u00e7\u0259kin<\/p>\n<blockquote><p>\u2014 onlara baxanlar\u0131n \u0259ks\u0259riyy\u0259ti UML\/IDEF oxumaqda ekspert deyil. Amma \u2014 m\u00fctl\u0259q \u00e7\u0259kin. <b>Add\u0131m 3: C\u0259dv\u0259ll\u0259rin strukturunu ske\u00e7 edirik<\/b> \u2014 \u0259ks\u0259r hallarda onlar\u0131 g\u00f6st\u0259r\u0259c\u0259yiniz \u015f\u0259xsl\u0259r UML\/IDEF oxumaq \u00fczr\u0259 m\u00fct\u0259x\u0259ssis deyil. Lakin, m\u00fctl\u0259q \u00e7\u0259kin.<\/p><\/blockquote>\n<p><\/p>\n<h2>Add\u0131m 3: C\u0259dv\u0259l strukturunu t\u0259rtib edirik<\/h2>\n<p>\n<b class=\"spoiler_title\">C\u0259dv\u0259ll\u0259rin v\u0259 sah\u0259l\u0259rin adlar\u0131 haqq\u0131nda<\/b>\u00abRus\u00bb c\u0259dv\u0259l v\u0259 sah\u0259 adlar\u0131na f\u0259rqli yana\u015fmalar var, amma bu z\u00f6vqd\u0259n bir \u015feydir. \u00c7\u00fcnki <noindex><a rel=\"nofollow\" href=\"https:\/\/tensor.ru\/about\/career\/vacancies\">bizim \u00abTenzor\u00bbda<\/a><\/noindex> xarici proqram\u00e7\u0131lar yoxdur v\u0259 PostgreSQL biz\u0259 adlar\u0131 ist\u0259diyimiz kimi verm\u0259y\u0259 imkan tan\u0131y\u0131r, \u0259g\u0259r onlar <u>q\u00fcvv\u0259d\u0259 olan t\u0131rnaklarda<\/u>, ona g\u00f6r\u0259 d\u0259 biz obyektl\u0259ri birba\u015fa ba\u015fa d\u00fc\u015f\u00fcl\u0259n adlarla adland\u0131rma\u011f\u0131 \u00fcst\u00fcn tuturuq ki, h\u0259r hans\u0131 bir anla\u015f\u0131lmazl\u0131q yaranmas\u0131n.<br \/>\nBizd\u0259 x\u0259b\u0259rl\u0259ri \u00e7ox insan eyni anda yaz\u0131r, onlar\u0131n bir hiss\u0259si bunu <u>offline rejimd\u0259<\/u>, ona g\u00f6r\u0259 d\u0259 \u0259n sad\u0259 variant \u2014 <b>UUID-d\u0259n identifikatorlar kimi istifad\u0259 etm\u0259kdir<\/b> hem xarici varl\u0131qlar, hem d\u0259 xidm\u0259timizin daxilind\u0259ki b\u00fct\u00fcn obyektl\u0259r \u00fc\u00e7\u00fcn. H\u0259m\u00e7inin bunlar\u0131 m\u00fc\u015ft\u0259ri t\u0259r\u0259find\u0259 yaratmaq m\u00fcmk\u00fcnd\u00fcr \u2014 bu, veril\u0259nl\u0259r bazas\u0131 m\u00fcv\u0259qq\u0259ti z\u0259if olduqda mesajlar\u0131n g\u00f6nd\u0259rilm\u0259sini d\u0259st\u0259kl\u0259m\u0259y\u0259 k\u00f6m\u0259k ed\u0259c\u0259k, v\u0259 toqqu\u015fma ehtimal\u0131 son d\u0259r\u0259c\u0259 azd\u0131r.<\/p>\n<p>Bizim m\u0259lumat bazam\u0131zdak\u0131 c\u0259dv\u0259ll\u0259rin ilkin strukturu bel\u0259 olacaq:<br \/>\n<b class=\"spoiler_title\">C\u0259dv\u0259ll\u0259r: AZ<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE \"M\u00f6vzu\"(\n  \"M\u00f6vzu\"\n    uuid\n      PRIMARY KEY\n, \"S\u0259n\u0259d\"\n    uuid\n, \"Ba\u015fl\u0131q\"\n    text\n);\n\nCREATE TABLE \"X\u0259b\u0259r\"(\n  \"X\u0259b\u0259r\"\n    uuid\n      PRIMARY KEY\n, \"M\u00f6vzu\"\n    uuid\n, \"M\u00fc\u0259llif\"\n    uuid\n, \"TarixZaman\"\n    timestamp\n, \"M\u0259tni\"\n    text\n);\n\nCREATE TABLE \"Al\u0131c\u0131\"(\n  \"X\u0259b\u0259r\"\n    uuid\n, \"\u015e\u0259xs\"\n    uuid\n, PRIMARY KEY(\"X\u0259b\u0259r\", \"\u015e\u0259xs\")\n);\n\nCREATE TABLE \"Fayl\"(\n  \"Fayl\"\n    uuid\n      PRIMARY KEY\n, \"X\u0259b\u0259r\"\n    uuid\n, \"BLOB\"\n    uuid\n, \"Ad\u0131\"\n    text\n);<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">C\u0259dv\u0259ll\u0259r: EN<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE theme(\n  theme\n    uuid\n      PRIMARY KEY\n, document\n    uuid\n, title\n    text\n);\n\nCREATE TABLE message(\n  message\n    uuid\n      PRIMARY KEY\n, theme\n    uuid\n, author\n    uuid\n, dt\n    timestamp\n, body\n    text\n);\n\nCREATE TABLE message_addressee(\n  message\n    uuid\n, person\n    uuid\n, PRIMARY KEY(message, person)\n);\n\nCREATE TABLE message_file(\n  file\n    uuid\n      PRIMARY KEY\n, message\n    uuid\n, content\n    uuid\n, filename\n    text\n);<\/code><\/pre>\n<p><\/p>\n<blockquote><p>Format\u0131n t\u0259svirind\u0259 \u0259n asan yol \u2014 \u0259laq\u0259l\u0259r qraf\u0131n\u0131 \u00aba\u00e7ma\u011fa\u00bb ba\u015flamaqd\u0131r <b>c\u0259h\u0259tl\u0259ri olan c\u0259dv\u0259ll\u0259rd\u0259n ki, bunlar he\u00e7 kim\u0259 istinad etmir.<\/b> Add\u0131m 4: Ayd\u0131n olmayan ehtiyaclar\u0131 m\u00fc\u0259yy\u0259n edirik<\/p><\/blockquote>\n<p><\/p>\n<h2>Tamam, biz bazan\u0131 layih\u0259l\u0259\u015fdirdik ki, burada \u0259la yazmaq m\u00fcmk\u00fcnd\u00fcr<\/h2>\n<p>\nv\u0259 nec\u0259 <i><b>oxumaq.<\/b><\/i> G\u0259lin \u00f6z\u00fcm\u00fcz\u00fc xidm\u0259timizin istifad\u0259\u00e7isi yerin\u0259 qoyaq \u2014 onun k\u00f6m\u0259yi il\u0259 n\u0259 etm\u0259k ist\u0259y\u0259rik?<\/p>\n<p>Son x\u0259b\u0259rl\u0259r<\/p>\n<ul>\n<li><i>xronoloji olaraq s\u0131ralanm\u0131\u015f<\/i><br \/>\nBu <b>f\u0259rqli meyarlara g\u00f6r\u0259 m\u0259nim x\u0259b\u0259rl\u0259rim siyah\u0131s\u0131. Harada m\u0259n bir al\u0131c\u0131yam, harada m\u0259n m\u00fc\u0259llif\u0259m, harada m\u0259niml\u0259 yaz\u0131blar, amma m\u0259n cavab verm\u0259mi\u015f\u0259m, harada m\u0259n\u0259 cavab verm\u0259yibl\u0259r...<\/b> m\u00fcxt\u0259lif meyarlara g\u00f6r\u0259 \"m\u0259nim\" mesajlar\u0131m\u0131n reyestri. Harada m\u0259n bir adresatam, harada m\u0259n m\u00fc\u0259llif\u0259m, harada m\u0259n\u0259 yaz\u0131blar, amma m\u0259n cavab verm\u0259mi\u015f\u0259m, harada m\u0259n\u0259 cavab verm\u0259yibl\u0259r, \u2026<\/li>\n<li><i>Bu uzun-uzad\u0131 \u00e7atda kim i\u015ftirak edir?<\/i><br \/>\nBizim struktur h\u0259r iki problemi \u00ab\u00fcmumilikd\u0259\u00bb h\u0259ll ed\u0259 bilir, amma tez \u2014 m\u00fcmk\u00fcn deyil. Problem odur ki, ilk problem \u00e7\u0259r\u00e7iv\u0259sind\u0259 s\u0131ralama \u00fc\u00e7\u00fcn<\/li>\n<\/ul>\n<p>\nh\u0259r i\u015ftirak\u00e7\u0131 \u00fc\u00e7\u00fcn uy\u011fun bir indeks yaratmaq m\u00fcmk\u00fcn deyil <b>, bunun \u00fc\u00e7\u00fcn is\u0259 b\u00fct\u00fcn qeydl\u0259ri \u00e7\u0131xartmaq laz\u0131m olacaq, v\u0259 ikinci problemi h\u0259ll etm\u0259k \u00fc\u00e7\u00fcn<\/b>b\u00fct\u00fcn mesajlar\u0131 <b>m\u00f6vzu \u00fczr\u0259 \u00e7\u0131xartmaq laz\u0131md\u0131r.<\/b> \u0130stifad\u0259\u00e7inin qeyri-proyeksiyonlu tap\u015f\u0131r\u0131qlar\u0131 performansa b\u00f6y\u00fck bir<\/p>\n<blockquote><p>x\u0259tt \u00e7\u0259k\u0259 bil\u0259r <b>Add\u0131m 5: M\u0259lumatlar\u0131n m\u0259qs\u0259d\u0259uy\u011fun denormalizasiyas\u0131<\/b>.<\/p><\/blockquote>\n<p><\/p>\n<h2>H\u0259r iki problemin h\u0259llin\u0259 \u0259lav\u0259 c\u0259dv\u0259ll\u0259r k\u00f6m\u0259k ed\u0259 bil\u0259r, ki bunlara biz<\/h2>\n<p>\nb\u0259zi m\u0259lumatlar\u0131n sur\u0259tini \u00e7\u0131xaraca\u011f\u0131q. <b>m\u0259lumatlar\u0131n bir hiss\u0259sini t\u0259krarlamaq<\/b>, laz\u0131m olan indeksl\u0259ri formala\u015fd\u0131rmaq \u00fc\u00e7\u00fcn.<br \/>\n<img decoding=\"async\" alt=\"Mesaj bazas\u0131 (hiss\u0259 1): bazan\u0131n karkas\u0131n\u0131 layih\u0259l\u0259\u015fdirm\u0259k\" src=\"\/wp-content\/uploads\/2020\/01\/f136a9904518b05bca74cc2b9c2f01b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b class=\"spoiler_title\">C\u0259dv\u0259ll\u0259r: AZ<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE \"MesajlarReyestri\"(\n  \"Sahib\"\n    uuid\n, \"ReyestrN\u00f6v\u00fc\"\n    smallint\n, \"TarixSaat\"\n    timestamp\n, \"Mesaj\"\n    uuid\n, PRIMARY KEY(\"Sahib\", \"ReyestrN\u00f6v\u00fc\", \"Mesaj\")\n);\nCREATE INDEX ON \"MesajlarReyestri\"(\"Sahib\", \"ReyestrN\u00f6v\u00fc\", \"TarixSaat\" DESC);\n\nCREATE TABLE \"M\u00f6vzu\u0130\u015ftirak\u00e7\u0131s\u0131\"(\n  \"M\u00f6vzu\"\n    uuid\n, \"\u015e\u0259xs\"\n    uuid\n, PRIMARY KEY(\"M\u00f6vzu\", \"\u015e\u0259xs\")\n);<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">C\u0259dv\u0259ll\u0259r: EN<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE mesaj_reyestri(\n  sahib\n    uuid\n, reyestr\n    smallint\n, dt\n    timestamp\n, mesaj\n    uuid\n, PRIMARY KEY(sahib, reyestr, mesaj)\n);\nCREATE INDEX ON mesaj_reyestri(sahib, reyestr, dt DESC);\n\nCREATE TABLE movzu_ishtirakci(\n  movzu\n    uuid\n, shexs\n    uuid\n, PRIMARY KEY(movzu, shexs)\n);<\/code><\/pre>\n<p>\nBurada, \u0259lav\u0259 c\u0259dv\u0259ll\u0259r yaradark\u0259n n\u0259z\u0259r\u0259 al\u0131nan iki tipik yana\u015fman\u0131 t\u0259tbiq etdik:<\/p>\n<ul>\n<li><b>Qeydl\u0259rin \u00e7oxald\u0131lmas\u0131<\/b><br \/>\nBir orijinal mesaj qeydind\u0259n eyni anda bir ne\u00e7\u0259 n\u0259tic\u0259 qeydini m\u00fcxt\u0259lif reyestrl\u0259rd\u0259 m\u00fcxt\u0259lif sahibkarlara formala\u015fd\u0131r\u0131r\u0131q \u2014 h\u0259m g\u00f6nd\u0259r\u0259n, h\u0259m d\u0259 al\u0131c\u0131 \u00fc\u00e7\u00fcn. Bel\u0259likl\u0259, indi h\u0259r bir reyestr indeks\u0259 uy\u011fun g\u0259lir \u2014 \u00e7\u00fcnki tipik v\u0259ziyy\u0259td\u0259 yaln\u0131z ilk s\u0259hif\u0259ni g\u00f6rm\u0259k ist\u0259y\u0259c\u0259yik.<\/li>\n<li><b>Qeydlerin unikalla\u015fd\u0131r\u0131lmas\u0131<\/b><br \/>\nH\u0259r bir mesaj\u0131 m\u00fc\u0259yy\u0259n bir m\u00f6vzuda g\u00f6nd\u0259r\u0259rk\u0259n, art\u0131q bel\u0259 bir qeyd olub-olmad\u0131\u011f\u0131n\u0131 yoxlamaq kifay\u0259tdir. \u018fg\u0259r yoxdursa \u2014 onu \"s\u00f6zl\u00fcy\u00fcm\u00fcz\u0259\" \u0259lav\u0259 edirik.<\/li>\n<\/ul>\n<p>\nM\u0259qal\u0259nin n\u00f6vb\u0259ti hiss\u0259sind\u0259 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483170\/\">seqmentl\u0259\u015fdirm\u0259nin t\u0259tbiqi<\/a><\/noindex> veril\u0259nl\u0259r bazam\u0131z\u0131n strukturu.<br \/>\n<br \/>M\u0259nb\u0259: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483176\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u00ab\u0441 \u043d\u0443\u043b\u044f\u00bb \u0431\u0430\u0437\u044b \u0434\u043b\u044f \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430. \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 \u041d\u0430\u0448\u0430 \u0431\u0430\u0437\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u043e\u0439 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439, \u043a\u0430\u043a \u0443 \u0412\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u0438\u043b\u0438 Badoo, \u0430 \u00ab\u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e\u00bb, \u043d\u043e \u0431\u044b\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e, \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0443\u043c\u0435\u0449\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 PostgreSQL \u2014 \u0447\u0442\u043e\u0431\u044b [&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-55011","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u00ab\u0441 \u043d\u0443\u043b\u044f\u00bb \u0431\u0430\u0437\u044b \u0434\u043b\u044f \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430. \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\" \/>\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\/az\/blog\/administrirovanie\/bd-messendzhera-ch-1-proektiruem-karkas-bazy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"az_AZ\" \/>\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.1): \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u0430\u0440\u043a\u0430\u0441 \u0431\u0430\u0437\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u00ab\u0441 \u043d\u0443\u043b\u044f\u00bb \u0431\u0430\u0437\u044b \u0434\u043b\u044f \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/bd-messendzhera-ch-1-proektiruem-karkas-bazy\" \/>\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:05+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\udd47Mesajla\u015fma Baza (Hiss\u0259 1): bazan\u0131n \u00e7\u0259r\u00e7iv\u0259sini layih\u0259l\u0259ndiririk | ProHoster","description":"Biznes t\u0259l\u0259bl\u0259rini d\u0259qiq veril\u0259nl\u0259r strukturlar\u0131na \u00e7evirm\u0259yin yollar\u0131 \u2014 \"s\u0131f\u0131rdan\" mesajla\u015fma bazas\u0131 layih\u0259l\u0259ndirilm\u0259si n\u00fcmun\u0259sind\u0259. Hiss\u0259 1: bazan\u0131n \u00e7\u0259r\u00e7iv\u0259sini layih\u0259l\u0259ndiririk","canonical_url":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/bd-messendzhera-ch-1-proektiruem-karkas-bazy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"az_AZ","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.1): \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u0430\u0440\u043a\u0430\u0441 \u0431\u0430\u0437\u044b | ProHoster","og:description":"\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u00ab\u0441 \u043d\u0443\u043b\u044f\u00bb \u0431\u0430\u0437\u044b \u0434\u043b\u044f \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430. \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","og:url":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/bd-messendzhera-ch-1-proektiruem-karkas-bazy","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:05+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55011","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:30:15","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:27:13","updated":"2026-01-24 13:30:15","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts\/55011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/comments?post=55011"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts\/55011\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/media?parent=55011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/categories?post=55011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/tags?post=55011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}