{"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\/sq\/blog\/administrirovanie\/bd-messendzhera-ch-1-proektiruem-karkas-bazy","title":{"rendered":"DB e mesazhereve (pjesa 1): projektimi i struktur\u00ebs s\u00eb baz\u00ebs","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Si si mund t\u00eb p\u00ebrkthesh k\u00ebrkesat e biznesit n\u00eb struktura t\u00eb dh\u00ebnash konkrete duke e ilustruar me projektimin e nj\u00eb baze p\u00ebr nj\u00eb mesazher nga fillimi.<\/p>\n<ul>\n<li>Pjesa 1: projektimi i korniz\u00ebs s\u00eb baz\u00ebs<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483170\/\">Pjesa 2: sekcionimi \"n\u00eb koh\u00eb reale\"<\/a><\/noindex><\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"DB e mesazhereve (pjesa 1): projektimi i struktur\u00ebs s\u00eb baz\u00ebs\" src=\"\/wp-content\/uploads\/2020\/01\/d4e85052405da3f6580e4e931c292079.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nBaza jon\u00eb nuk do t\u00eb jet\u00eb aq masive dhe e shp\u00ebrndar\u00eb, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/vk\/blog\/342570\/\">si ajo e VKontakte<\/a><\/noindex> ose <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/340976\/\">Badoo<\/a><\/noindex>, por \u00abp\u00ebr t\u00eb qen\u00eb\u00bb, por e mir\u00eb \u2013 funksionale, e shpejt\u00eb dhe <b>t\u00eb p\u00ebrballoj\u00eb nj\u00eb server<\/b> PostgreSQL \u2013 q\u00eb t\u00eb mund t\u00eb b\u00ebjm\u00eb nj\u00eb instanc\u00eb t\u00eb ve\u00e7ant\u00eb t\u00eb sh\u00ebrbimit diku n\u00eb an\u00ebn tjet\u00ebr, p\u00ebr shembull.<\/p>\n<p>Prandaj, nuk do t\u00eb trajtojm\u00eb \u00e7\u00ebshtjet e sharding, replikimit dhe sistemeve t\u00eb geoshp\u00ebrndar\u00eb, por do t\u00eb fokusohemi n\u00eb zgjidhje skemash brenda DB-s\u00eb.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Hapi 1: Disa ve\u00e7ori specifike t\u00eb biznesit<\/h2>\n<p>\nNe do ta projektoshim k\u00ebmbimin ton\u00eb t\u00eb mesazheve jo abstrakt, por duke e inkorporuar n\u00eb mjedisin e nj\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/sbis.ru\/help\/work_in\/sms\/\">rrjeti korporativ t\u00eb socializimit<\/a><\/noindex>. K\u00ebshtu q\u00eb njer\u00ebzit tan\u00eb nuk \u00abthjesht shkruajn\u00eb\u00bb, por komunikojn\u00eb midis tyre n\u00eb kontekstin e zgjidhjes s\u00eb disa detyrave t\u00eb biznesit.<\/p>\n<p>Cilat jan\u00eb detyrat e biznesit?.. Le t\u00eb shohim n\u00eb shembullin e Vasiliy \u2013 drejtorit t\u00eb departamentit t\u00eb zhvillimit.<\/p>\n<ul>\n<li><i>\u00abNikolai, k\u00ebt\u00eb detyr\u00eb patch duhet q\u00eb sot!\u00bb<\/i><br \/>\nPra, biseda mund t\u00eb kryhet n\u00eb kontekstin e ndonj\u00eb gj\u00ebje <b>t\u00eb dokumentit<\/b>.<\/li>\n<li><i>\u00abKolya, le t\u00eb shkojm\u00eb n\u00eb Dota mbr\u00ebmjen?\u00bb<\/i><br \/>\nK\u00ebshtu q\u00eb, edhe p\u00ebr nj\u00eb \u00e7ift t\u00eb vet\u00ebm biseduesish, komunikimi mund t\u00eb zhvillohet n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb <b>n\u00eb tema t\u00eb ndryshme<\/b>.<\/li>\n<li><i>\u00abPetr, Nikolai, shikoni dokumentin e bashkangjitur p\u00ebr \u00e7mimin e serverit t\u00eb ri.\u00bb<\/i><br \/>\nK\u00ebshtu, nj\u00eb mesazh mund t\u00eb ket\u00eb <b>several adresat\u00eb.<\/b>Nj\u00ebher\u00ebsh, mesazhi mund t\u00eb p\u00ebrmbaj\u00eb <b>skedar\u00eb t\u00eb bashkangjitur<\/b>.<\/li>\n<li><i>\u00abSemen, ti gjithashtu shiko.\u00bb<\/i><br \/>\nDhe duhet t\u00eb ket\u00eb mund\u00ebsin\u00eb p\u00ebr t\u00eb ftuar nj\u00eb pjes\u00ebmarr\u00ebs t\u00eb ri n\u00eb bised\u00ebn ekzistuese <b>Le t\u00eb ndalemi p\u00ebr momentin n\u00eb k\u00ebt\u00eb list\u00eb \u00abt\u00eb qarta\u00bb t\u00eb nevojave.<\/b>.<\/li>\n<\/ul>\n<p>\nPa kuptuar specifikat praktike t\u00eb detyr\u00ebs dhe kufizimeve q\u00eb ajo vendos, p\u00ebr t\u00eb projektuar<\/p>\n<blockquote><p>nj\u00eb <b>skem\u00eb t\u00eb efektshme<\/b> t\u00eb DB-s\u00eb p\u00ebr zgjidhjen e saj \u00ebsht\u00eb praktike e pamundur.<\/p><\/blockquote>\n<p><\/p>\n<h2>Hapi 2: Skema logjike minimale<\/h2>\n<p>\nP\u00ebr momentin, skema duket shum\u00eb e ngjashme me bisedat e email-it \u2013 nj\u00eb mjet tradicional i biznesit. Po, \u00abalgorithmically\u00bb shum\u00eb detyra t\u00eb biznesit jan\u00eb t\u00eb ngjashme me nj\u00ebra-tjetr\u00ebn, k\u00ebshtu q\u00eb edhe mjetet p\u00ebr zgjidhjen e tyre do t\u00eb jen\u00eb strukturn\u00eb t\u00eb ngjashme.<\/p>\n<p>Le t\u00eb fiksojm\u00eb skem\u00ebn logjike t\u00eb marr\u00ebdh\u00ebnieve t\u00eb entiteteve q\u00eb kemi arritur deri tani. P\u00ebr t\u00eb leht\u00ebsuar kuptimin e modelit ton\u00eb, do t\u00eb p\u00ebrdorim variantin m\u00eb t\u00eb thjesht\u00eb t\u00eb paraqitjes <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/ER-%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C\">ER-model<\/a><\/noindex> pa komplikime UML ose IDEF-notacione:<\/p>\n<p><img decoding=\"async\" alt=\"DB e mesazhereve (pjesa 1): projektimi i struktur\u00ebs s\u00eb baz\u00ebs\" src=\"\/wp-content\/uploads\/2020\/01\/75d0b3cf9e5a44ae3e243449fa406fbc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb shembullin ton\u00eb, personi, dokumenti dhe trupi binar i skedarit jan\u00eb entitete \u00abt\u00eb jashtme\u00bb, q\u00eb ekzistojn\u00eb edhe pa sh\u00ebrbimin ton\u00eb. Prandaj, do t'i perceptojm\u00eb m\u00eb pas si disa referenca \u00abdiku\u00bb me UUID.<\/p>\n<blockquote><p>Vizato <b>skemat sa m\u00eb t\u00eb thjeshta<\/b> \u2013 shumica e atyre q\u00eb do t'i tregoni ato nuk jan\u00eb ekspert\u00eb n\u00eb leximin e UML\/IDEF. Por \u2013 sigurisht, vizatoni.<\/p><\/blockquote>\n<p><\/p>\n<h2>Hapi 3: Hidhni struktur\u00ebn e tabelave<\/h2>\n<p>\n<b class=\"spoiler_title\">P\u00ebr emrat e tabelave dhe fushave<\/b>N\u00eb lidhje me emrat \"rus\u00eb\" t\u00eb fushave dhe tabelave, mund t\u00eb keni mendime t\u00eb ndryshme, por kjo \u00ebsht\u00eb \u00e7\u00ebshtje shije. Pasi q\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/tensor.ru\/about\/career\/vacancies\">n\u00eb \"Tensorin\" ton\u00eb<\/a><\/noindex> nuk kemi zhvillues t\u00eb huaj, dhe PostgreSQL na lejon t\u00eb jepni emra madje edhe me hieroglif\u00eb, p\u00ebr sa koh\u00eb q\u00eb <u>jan\u00eb t\u00eb rrethuara me thonj\u00ebza<\/u>, ne preferojm\u00eb t\u00eb em\u00ebrojm\u00eb objektet n\u00eb m\u00ebnyr\u00eb t\u00eb qart\u00eb dhe t\u00eb kuptueshme, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mos ket\u00eb keqkuptime.<br \/>\nDuke marr\u00eb parasysh q\u00eb mesazhet shkruhen nga shum\u00eb njer\u00ebz n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, disa nga ata mund ta b\u00ebjn\u00eb k\u00ebt\u00eb <u>n\u00eb m\u00ebnyr\u00eb offline,<\/u>mund\u00ebsia m\u00eb e mir\u00eb \u00ebsht\u00eb <b>t\u00eb p\u00ebrdor\u00ebsh UUID si identifikues<\/b> jo vet\u00ebm p\u00ebr entitetet e jashtme, por edhe p\u00ebr t\u00eb gjitha objektet brenda sh\u00ebrbimit ton\u00eb. E p\u00ebr m\u00eb tep\u00ebr, ato mund t\u00eb gjenerohen edhe n\u00eb an\u00ebn e klientit \u2013 kjo do t\u00eb na ndihmoj\u00eb t\u00eb mbajm\u00eb d\u00ebrgimin e mesazheve edhe n\u00eb rastin e munges\u00ebs afatshkurt\u00ebr t\u00eb DB-s\u00eb, dhe probabiliteti i kolizionit \u00ebsht\u00eb shum\u00eb i ul\u00ebt.<\/p>\n<p>Struktura e projektuar e tabelave n\u00eb db-n\u00eb ton\u00eb do t\u00eb duket n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb:<br \/>\n<b class=\"spoiler_title\">Tabelat : RU<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE \"Tema\"(\n  \"Tema\"\n    uuid\n      PRIMARY KEY\n, \"Dokument\"\n    uuid\n, \"Emri\"\n    text\n);\n\nCREATE TABLE \"Mesazh\"(\n  \"Mesazh\"\n    uuid\n      PRIMARY KEY\n, \"Tema\"\n    uuid\n, \"Autori\"\n    uuid\n, \"DataKoh\u00eb\"\n    timestamp\n, \"Teksti\"\n    text\n);\n\nCREATE TABLE \"Adresat\"(\n  \"Mesazh\"\n    uuid\n, \"Person\u00eb\"\n    uuid\n, PRIMARY KEY(\"Mesazh\", \"Person\u00eb\")\n);\n\nCREATE TABLE \"Skedari\"(\n  \"Skedari\"\n    uuid\n      PRIMARY KEY\n, \"Mesazh\"\n    uuid\n, \"BLOB\"\n    uuid\n, \"Emri\"\n    text\n);<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">Tabelat : 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>M\u00eb e thjeshta n\u00eb p\u00ebrshkrimin e formatit \u00ebsht\u00eb t\u00eb fillosh t\u00eb \u00abshkruash\u00bb grafikun e marr\u00ebdh\u00ebnieve <b>nga tabelat q\u00eb nuk referohen<\/b> p\u00ebr ask\u00ebnd.<\/p><\/blockquote>\n<p><\/p>\n<h2>Hapi 4: Zbuloni nevojat q\u00eb nuk jan\u00eb t\u00eb dukshme<\/h2>\n<p>\nE gjith\u00eb, ne projektuam nj\u00eb baz\u00eb n\u00eb t\u00eb cil\u00ebn mund t\u00eb shkruajm\u00eb mir\u00eb dhe <i><b>dhe ndonj\u00ebher\u00eb<\/b><\/i> lexojm\u00eb.<\/p>\n<p>Le t\u00eb vendosim veten n\u00eb vendin e p\u00ebrdoruesit t\u00eb sh\u00ebrbimit ton\u00eb \u2013 \u00e7far\u00eb do t\u00eb d\u00ebshironim t\u00eb b\u00ebnim me ndihm\u00ebn e tij?<\/p>\n<ul>\n<li><i>Mesazhet e fundit<\/i><br \/>\nKjo <b>t\u00eb renditura kronologjikisht<\/b> m\u00ebnyra t\u00eb ndryshme p\u00ebr t\u00eb regjistruar \"mesazhet\" e mia. Ku un\u00eb jam nj\u00eb nga adresat, ku un\u00eb jam autori, ku m\u00eb shkruajn\u00eb dhe un\u00eb nuk kam p\u00ebrgjigjur, ku nuk kam marr\u00eb p\u00ebrgjigje, ...<\/li>\n<li><i>Pjes\u00ebmarr\u00ebsit e bised\u00ebs<\/i><br \/>\nKush merr pjes\u00eb n\u00eb k\u00ebt\u00eb bised\u00eb shum\u00eb t\u00eb gjat\u00eb?<\/li>\n<\/ul>\n<p>\nStruktura jon\u00eb lejon t\u00eb zgjidhen t\u00eb dy k\u00ebto detyra \u00abn\u00eb p\u00ebrgjith\u00ebsi\u00bb, por shpejt \u2013 jo. Problemi \u00ebsht\u00eb se p\u00ebr renditjen n\u00eb kuad\u00ebr t\u00eb detyr\u00ebs s\u00eb par\u00eb <b>nuk \u00ebsht\u00eb e mundur t\u00eb krijosh nj\u00eb indeks<\/b>, e p\u00ebrshtatsh\u00ebm p\u00ebr t\u00eb gjith\u00eb pjes\u00ebmarr\u00ebsit (dhe do t\u00eb duhet t\u00eb nxirren t\u00eb gjitha regjistrimet), nd\u00ebrsa p\u00ebr zgjidhjen e dyt\u00eb \u00ebsht\u00eb e nevojshme <b>t\u00eb nxirren t\u00eb gjitha mesazhet<\/b> p\u00ebr tema.<\/p>\n<blockquote><p>Detyrat e paplanifikuara t\u00eb p\u00ebrdoruesve mund t\u00eb vendosin nj\u00eb vul\u00eb t\u00eb r\u00ebnd\u00eb <b>n\u00eb performanc\u00ebn<\/b>.<\/p><\/blockquote>\n<p><\/p>\n<h2>Hapi 5: Denormalizimi i arsyesh\u00ebm<\/h2>\n<p>\nT\u00eb dyja problemet tona do t\u00eb zgjidhen duke shtuar tabela t\u00eb tjera, n\u00eb t\u00eb cilat ne do t\u00eb <b>dyfishojm\u00eb nj\u00eb pjes\u00eb t\u00eb t\u00eb dh\u00ebnave<\/b>, t\u00eb nevojshme p\u00ebr formimin e indekseve q\u00eb i p\u00ebrshtaten detyrave tona.<br \/>\n<img decoding=\"async\" alt=\"DB e mesazhereve (pjesa 1): projektimi i struktur\u00ebs s\u00eb baz\u00ebs\" src=\"\/wp-content\/uploads\/2020\/01\/f136a9904518b05bca74cc2b9c2f01b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b class=\"spoiler_title\">Tabelat : RU<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE \"RegistryMessages\"(\n  \"Pronari\"\n    uuid\n, \"TipiRegistry\"\n    smallint\n, \"DataOra\"\n    timestamp\n, \"Mesazhi\"\n    uuid\n, PRIMARY KEY(\"Pronari\", \"TipiRegistry\", \"Mesazhi\")\n);\nCREATE INDEX ON \"RegistryMessages\"(\"Pronari\", \"TipiRegistry\", \"DataOra\" DESC);\n\nCREATE TABLE \"Pjes\u00ebmarr\u00ebsiTem\u00ebs\"(\n  \"Tema\"\n    uuid\n, \"Personi\"\n    uuid\n, PRIMARY KEY(\"Tema\", \"Personi\")\n);<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">Tabelat : EN<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE message_registry(\n  owner\n    uuid\n, registry\n    smallint\n, dt\n    timestamp\n, message\n    uuid\n, PRIMARY KEY(owner, registry, message)\n);\nCREATE INDEX ON message_registry(owner, registry, dt DESC);\n\nCREATE TABLE theme_participant(\n  theme\n    uuid\n, person\n    uuid\n, PRIMARY KEY(theme, person)\n);<\/code><\/pre>\n<p>\nK\u00ebtu kemi aplikuar dy qasje tipike q\u00eb p\u00ebrdoren gjat\u00eb krijimit t\u00eb tabelave mb\u00ebshtet\u00ebse:<\/p>\n<ul>\n<li><b>Shum\u00ebzimi i regjistrimeve<\/b><br \/>\nNe formojm\u00eb nga nj\u00eb regjistrim origjinal mesazhi disa regjistrime pasuese n\u00eb forma t\u00eb ndryshme p\u00ebr regjistrat p\u00ebr pronar\u00eb t\u00eb ndrysh\u00ebm \u2014 si p\u00ebr d\u00ebrguesin ashtu edhe p\u00ebr marr\u00ebsin. Megjithat\u00eb, \u00e7do regjist\u00ebr tani p\u00ebrputhet me indeksin \u2014 pasi n\u00eb rastin tipik ne do t\u00eb duam t\u00eb shohim vet\u00ebm faqen e par\u00eb.<\/li>\n<li><b>Unikalizimi i regjistrimeve<\/b><br \/>\nMe \u00e7do d\u00ebrges\u00eb mesazhi brenda nj\u00eb teme specifike, mjafton t\u00eb kontrollohet n\u00ebse nj\u00eb regjist\u00ebr i till\u00eb ekziston tashm\u00eb. N\u00ebse jo \u2014 ne e shtojm\u00eb at\u00eb n\u00eb \"fjalorin\" ton\u00eb.<\/li>\n<\/ul>\n<p>\nN\u00eb pjes\u00ebn tjet\u00ebr t\u00eb artikullit do t\u00eb flasim p\u00ebr <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483170\/\">implementimin e sektor\u00ebve<\/a><\/noindex> n\u00eb struktur\u00ebn e baz\u00ebs son\u00eb.<br \/>\n<br \/>Burimi: <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\/sq\/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=\"sq_AL\" \/>\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\/sq\/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\udd47Baza e t\u00eb dh\u00ebnave t\u00eb m\u00ebsuesit (p.1): projektimi i korniz\u00ebs s\u00eb baz\u00ebs | ProHoster","description":"Si si mund t\u00eb p\u00ebrkthehen k\u00ebrkesat e biznesit n\u00eb struktura t\u00eb caktuara t\u00eb t\u00eb dh\u00ebnave p\u00ebr shembullin e projektimit t\u00eb nj\u00eb baze p\u00ebr nj\u00eb mesazher nga fillimi. Pjesa 1: projektimi i korniz\u00ebs s\u00eb baz\u00ebs","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/bd-messendzhera-ch-1-proektiruem-karkas-bazy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/55011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=55011"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/55011\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=55011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=55011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=55011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}