{"id":96465,"date":"2020-10-12T07:42:27","date_gmt":"2020-10-12T05:42:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/eta-baza-dannyh-v-ogne"},"modified":"2020-10-12T07:42:27","modified_gmt":"2020-10-12T05:42:27","slug":"eta-baza-dannyh-v-ogne","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/eta-baza-dannyh-v-ogne","title":{"rendered":"Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb flak\u00eb\u2026","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb flak\u00eb\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/e4e39a7039dad14422fd83c05f114d6f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00eb lejoni t\u00eb tregoj nj\u00eb histori teknike.<\/p>\n<p>Shum\u00eb vite m\u00eb par\u00eb kam zhvilluar nj\u00eb aplikacion me funksione bashk\u00ebpunimi t\u00eb integruara. Ishte nj\u00eb eksperiment i p\u00ebrshtatsh\u00ebm me nj\u00eb institut t\u00eb plot\u00eb t\u00eb potencialit t\u00eb React dhe CouchDB t\u00eb hersh\u00ebm. Ai sinkronizonte t\u00eb dh\u00ebnat n\u00eb koh\u00eb reale p\u00ebrmes JSON <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Operational_transformation\">OT<\/a><\/noindex>. Ajo u p\u00ebrdor n\u00eb pun\u00ebn e brendshme t\u00eb kompanis\u00eb, megjithat\u00eb aplikueshm\u00ebria e gjer\u00eb dhe potenciali n\u00eb fusha t\u00eb tjera ishin t\u00eb qarta.<\/p>\n<p>Duke u p\u00ebrpjekur t\u00eb shesim k\u00ebt\u00eb teknologji klient\u00ebve t\u00eb mundsh\u00ebm, u p\u00ebrball\u00ebm me nj\u00eb penges\u00eb t\u00eb papritur. N\u00eb videon e demonstrimit, teknologjia jon\u00eb dukej dhe funksiononte shk\u00eblqyesh\u00ebm, k\u00ebtu nuk kishte asnj\u00eb problem. Videoja tregonte pik\u00ebrisht se si funksionon dhe nuk ishte asgj\u00eb e imituar. Ne shpik\u00ebm dhe kodifikuam nj\u00eb skenar realistik p\u00ebr aplikacionin.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<img decoding=\"async\" alt=\"Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb flak\u00eb\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/ea517a6aee0b015dc4d7bad4e86af6f4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nN\u00eb t\u00eb v\u00ebrtet\u00eb, kjo ishte problemi. Demoja jon\u00eb punonte pik\u00ebrisht si\u00e7 imitonin t\u00eb gjith\u00eb aplikacionet e tyre. N\u00eb ve\u00e7anti, informacioni shp\u00ebrndahej menj\u00ebher\u00eb nga A n\u00eb B, edhe n\u00ebse ishin skedar\u00eb t\u00eb m\u00ebdhenj multimedial. Pas hyrjes n\u00eb sistem, \u00e7do p\u00ebrdorues shihte regjistrimet e reja. Me an\u00eb t\u00eb aplikacionit, p\u00ebrdorues t\u00eb ndrysh\u00ebm mund t\u00eb punonin s\u00eb bashku qart\u00eb mbi t\u00eb nj\u00ebjtat projekte, edhe n\u00eb rastin e lidhjeve t\u00eb nd\u00ebrprera t\u00eb Internetit diku n\u00eb fshat. N\u00eb nj\u00eb form\u00eb t\u00eb paqart\u00eb, di\u00e7ka e till\u00eb n\u00ebnkuptohet n\u00eb \u00e7do video t\u00eb prishur n\u00eb After Effects p\u00ebr produktin.<\/p>\n<p>Megjith\u00ebse t\u00eb gjith\u00eb e dinin p\u00ebr \u00e7far\u00eb do ishte butoni Refresh, askush nuk kuptonte n\u00eb t\u00eb v\u00ebrtet\u00eb se aplikacionet web q\u00eb na k\u00ebrkojn\u00eb t\u00eb krijojm\u00eb, zakonisht kan\u00eb kufizimet e veta. Dhe se n\u00ebse ato nuk do t\u00eb duheshin m\u00eb, p\u00ebrvoja e p\u00ebrdoruesit do t\u00eb ishte krejt tjet\u00ebr. Kryesisht ata v\u00ebrejt\u00ebn se mund t\u00eb \"bisedonin\", duke l\u00ebn\u00eb sh\u00ebnime p\u00ebr t\u00eb tjer\u00ebt, e p\u00ebr k\u00ebt\u00eb, pyet\u00ebn se \u00e7far\u00eb e dallonte k\u00ebt\u00eb, p\u00ebr shembull nga Slack. Uf-f-f!<\/p>\n<h2>Dizajni i sinkronizimeve t\u00eb p\u00ebrditshme<\/h2>\n<p>\nN\u00ebse keni p\u00ebrvoj\u00eb n\u00eb zhvillimin e softuerit, duhet t'ju shqet\u00ebsoj\u00eb nevoja p\u00ebr t\u00eb mbajtur mend se shumica e njer\u00ebzve nuk mund ta shohin thjesht nj\u00eb pamje t\u00eb nd\u00ebrfaqes dhe t\u00eb kuptojn\u00eb se \u00e7far\u00eb do t\u00eb b\u00ebjn\u00eb kur nd\u00ebrveprojn\u00eb me t\u00eb. P\u00ebr t\u00eb mos p\u00ebrmendur se \u00e7far\u00eb ndodh brenda vet\u00eb programit. T\u00eb dini se \u00e7far\u00eb <i>mund<\/i> mund t\u00eb ndodh\u00eb \u2014 n\u00eb shum\u00eb m\u00ebnyra \u00ebsht\u00eb rezultat i njohurive se \u00e7far\u00eb nuk mund t\u00eb ndodh\u00eb dhe \u00e7far\u00eb nuk duhet t\u00eb ndodh\u00eb. P\u00ebr k\u00ebt\u00eb nevojitet <noindex><a rel=\"nofollow\" href=\"https:\/\/uxdesign.cc\/design-of-everyday-things-chapter-01-summary-and-keypoints-664d426a11e0\">nj\u00eb model mendor<\/a><\/noindex> jo vet\u00ebm p\u00ebr at\u00eb q\u00eb b\u00ebn softueri, por edhe p\u00ebr m\u00ebnyr\u00ebn se si jan\u00eb t\u00eb harmonizuara dhe komunikojn\u00eb mesazhet e saj individuale.<\/p>\n<p>Nj\u00eb shembull klasik i k\u00ebsaj \u00ebsht\u00eb nj\u00eb p\u00ebrdorues q\u00eb, p\u00ebr nj\u00ebzet minuta, e shikon <i>spinner.gif<\/i>, duke u habitur se kur do t\u00eb p\u00ebrfundoj\u00eb puna. Nj\u00eb zhvillues do t\u00eb kuptonte se procesi, me siguri, \u00ebsht\u00eb ngrir\u00eb dhe se gif-i nuk do t\u00eb zhduket nga ekrani. Kjo animacion imiton kryerjen e pun\u00ebs, por nuk \u00ebsht\u00eb e lidhur me gjendjen e saj. N\u00eb raste t\u00eb tilla, disa teknik\u00eb shpesh e shohin dhe habitin me shkall\u00ebn e gabimit t\u00eb p\u00ebrdoruesve. Por, v\u00ebreni, kush prej tyre tregon p\u00ebr or\u00ebt e rrotullimit dhe thot\u00eb se ato n\u00eb t\u00eb v\u00ebrtet\u00eb jan\u00eb t\u00eb pal\u00ebvizshme?<\/p>\n<p><img decoding=\"async\" alt=\"Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb flak\u00eb\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/db67c48846549b272a367c0a37aec97b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKjo \u00ebsht\u00eb thelbi i vler\u00ebs s\u00eb koh\u00ebs reale. Sot, bazat e t\u00eb dh\u00ebnave n\u00eb koh\u00eb reale p\u00ebrdoren shum\u00eb pak, dhe shum\u00eb njer\u00ebz i shohin ato me dyshim. Shumica e k\u00ebtyre bazave t\u00eb t\u00eb dh\u00ebnave e ndjekin stilin NoSQL, duke sjell\u00eb zgjidhje t\u00eb bazuara n\u00eb Mongo, p\u00ebr t\u00eb cilat do t\u00eb ishte m\u00eb mir\u00eb t\u00eb harrohen. Megjithat\u00eb, p\u00ebr mua kjo do t\u00eb thot\u00eb komfort n\u00eb pun\u00ebn me CouchDB, si dhe studimin e projektimit t\u00eb strukturave q\u00eb do t\u00eb jen\u00eb n\u00eb gjendje t\u00eb mbushen me t\u00eb dh\u00ebna nga ndonj\u00eb burokrat. Mendoj se po e shpenzoj koh\u00ebn time m\u00eb shum\u00eb n\u00eb m\u00ebnyr\u00eb optimale.<\/p>\n<p>Por tema e v\u00ebrtet\u00eb e k\u00ebtij postimi \u00ebsht\u00eb ajo q\u00eb un\u00eb po p\u00ebrdor sot. Jo nga zgjedhja ime, por p\u00ebr shkak t\u00eb politik\u00ebs korporative t\u00eb aplikuar indiferent dhe verb\u00ebrisht. Prandaj, do t\u00eb jap nj\u00eb Krahasim t\u00eb Ndersh\u00ebm dhe t\u00eb Paansh\u00ebm t\u00eb dy produkteve t\u00eb ngushta t\u00eb lidhura p\u00ebr pun\u00ebn me bazat e t\u00eb dh\u00ebnave n\u00eb koh\u00eb reale t\u00eb Google.<\/p>\n<p><img decoding=\"async\" alt=\"Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb flak\u00eb\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/89432de9501b7667f8e187d14afc8897.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nT\u00eb dyja kan\u00eb fjal\u00ebn Fire n\u00eb emrat e tyre. Nj\u00ebra m\u00eb kujton me dashuri. E dyta p\u00ebr mua \u00ebsht\u00eb nj\u00eb lloj tjet\u00ebr flake. Nuk po nxitohem t\u00eb them emrat e tyre, sepse sapo ta b\u00ebj k\u00ebt\u00eb, do t\u00eb takohemi me problemin e par\u00eb t\u00eb madh \u2014 emrat.<\/p>\n<p>E para quhet <i>Firebase Real-Time Database<\/i>, nd\u00ebrsa e dyta \u2014 <i>Firebase Cloud Firestore<\/i>. T\u00eb dyja jan\u00eb produkte nga <i>Firebase suite<\/i> Google. API-t\u00eb e tyre quhen, p\u00ebrkat\u00ebsisht, <code>firebase.database(\u2026)<\/code> dhe <code>firebase.firestore(\u2026)<\/code>.<\/p>\n<p>Kjo ndodhi sepse <i>Real-Time Database<\/i> \u2014 \u00ebsht\u00eb thjesht origjinal <i>Firebase<\/i> para blerjes nga Google n\u00eb vitin 2014. Pastaj n\u00eb Google vendos\u00ebn t\u00eb krijonin si nj\u00eb produkt paralel <i>nj\u00eb kopje<\/i> t\u00eb Firebase duke p\u00ebrdorur big data t\u00eb kompanis\u00eb, dhe e quajt\u00ebn Firestore with a cloud. Shpresoj q\u00eb t\u00eb mos jeni ngat\u00ebrruar ende. N\u00ebse jeni ngat\u00ebrruar, mos u shqet\u00ebsoni, un\u00eb e kam rishkruar k\u00ebt\u00eb pjes\u00eb t\u00eb artikullit dhjet\u00eb her\u00eb.<\/p>\n<p>Sepse duhet t\u00eb tregoni <i>Firebase<\/i> n\u00eb pyetjen p\u00ebr Firebase, dhe <i>Firestore<\/i> n\u00eb pyetjen p\u00ebr Firebase, t\u00eb pakt\u00ebn q\u00eb t\u00eb kuptoheni disa vite m\u00eb par\u00eb n\u00eb Stack Overflow.<\/p>\n<p>N\u00ebse do t\u00eb ekzistonte nj\u00eb \u00e7mim p\u00ebr em\u00ebrtimin m\u00eb t\u00eb keq t\u00eb produkteve softuerike, ky rast do t\u00eb ishte patjet\u00ebr nj\u00eb nga pretenduesit. Distanca Hamming mes k\u00ebtyre emrave \u00ebsht\u00eb kaq e vog\u00ebl, saq\u00eb ngat\u00ebrrohet edhe p\u00ebr inxhinier\u00ebt m\u00eb t\u00eb p\u00ebrvojsh\u00ebm, t\u00eb cil\u00ebt shkruajn\u00eb nj\u00eb em\u00ebr, nd\u00ebrkoh\u00eb q\u00eb mendja e tyre mendon p\u00ebr nj\u00eb tjet\u00ebr. K\u00ebto jan\u00eb plane t\u00eb d\u00ebshtuara p\u00ebr t\u00eb cilat ishin menduar q\u00ebllime t\u00eb mira; ato realizuan profet\u00ebsin\u00eb se databaza do t\u00eb ishte n\u00eb flak\u00eb. Dhe nuk po b\u00ebj shaka. Njeriut q\u00eb krijoi nj\u00eb skem\u00eb em\u00ebrtimi t\u00eb till\u00eb i dha shkak p\u00ebr gjak, djers\u00eb dhe lot.<\/p>\n<p><img decoding=\"async\" alt=\"Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb flak\u00eb\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/b793ce183c5d0477c32c87f64bce5879.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Fitorja e Pirros<\/h2>\n<p>\nMund t\u00eb mendohet se Firestore \u00ebsht\u00eb <i>z\u00ebvend\u00ebsim<\/i> i Firebase, pasardh\u00ebsi i tij i brezit t\u00eb ardhsh\u00ebm, por kjo do t\u00eb ishte nj\u00eb iluzion. Firestore nuk i p\u00ebrshtatet me siguri rolit t\u00eb z\u00ebvend\u00ebsuesit t\u00eb Firebase. Duket se dikush e ka prer\u00eb at\u00eb nga gjith\u00e7ka interesante, dhe pjes\u00ebn e mbetur e ka ngat\u00ebrruar n\u00eb m\u00ebnyra t\u00eb ndryshme.<\/p>\n<p>Nj\u00eb shikim i shpejt\u00eb n\u00eb dy produkte mund t'ju ngat\u00ebrroj\u00eb: duket se ato b\u00ebjn\u00eb t\u00eb nj\u00ebjt\u00ebn gj\u00eb, duke p\u00ebrdorur kryesisht API t\u00eb nj\u00ebjta dhe madje n\u00eb t\u00eb nj\u00ebjt\u00ebn seanc\u00eb t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave. Diferencat jan\u00eb t\u00eb dukshme vet\u00ebm me nj\u00eb studim t\u00eb kujdessh\u00ebm krahasues t\u00eb dokumentacionit t\u00eb gjer\u00eb. Ose kur p\u00ebrpiqeni t\u00eb portoni nj\u00eb kod q\u00eb punon perfekt n\u00eb Firebase, q\u00eb t\u00eb funksionoj\u00eb me Firestore. Q\u00eb at\u00ebher\u00eb, zbulohet se nd\u00ebrfaqja e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave ndizet sapo provoni t\u00eb realizoni t\u00ebrheqjen e mausit n\u00eb koh\u00eb reale. E p\u00ebrs\u00ebris, nuk po shaka.<\/p>\n<p>Klienti i Firebase \u00ebsht\u00eb i sjellsh\u00ebm n\u00eb at\u00eb kuptim q\u00eb ai buf\u00ebron ndryshimet dhe kryen automatikisht p\u00ebrs\u00ebritjen e p\u00ebrpjekjeve t\u00eb azhurnimit, ku prioriteti i jepet operacionit t\u00eb fundit t\u00eb shkruajtur. Megjithat\u00eb, Firestore ka nj\u00eb kufizim prej 1 operacioni t\u00eb shkruar p\u00ebr dokument p\u00ebr p\u00ebrdorues n\u00eb sekond\u00eb, dhe ky kufizim vendoset nga serveri. Kur punoni me t\u00eb, ju vet\u00eb duhet t\u00eb gjeni nj\u00eb m\u00ebnyr\u00eb p\u00ebr ta anashkaluar at\u00eb dhe t\u00eb implementoni nj\u00eb kufizues frekuence azhurnimesh, madje edhe kur thjesht po p\u00ebrpiqeni t\u00eb krijoni aplikacionin tuaj. Pra, Firestore \u00ebsht\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash n\u00eb koh\u00eb reale pa nj\u00eb klient t\u00eb koh\u00ebs reale, e cila maskohet si e till\u00eb p\u00ebrmes API-s\u00eb.<\/p>\n<p>K\u00ebtu fillojm\u00eb t\u00eb shohim shenjat e para t\u00eb kuptimit t\u00eb ekzistenc\u00ebs s\u00eb Firestore. Ndoshta jam gabim, por dyshoj se dikush lart n\u00eb udh\u00ebheqjen e Google shikoi pas blerjes n\u00eb Firebase dhe thjesht tha: \"Jo, o Zot, jo. Kjo \u00ebsht\u00eb e papranueshme. Vet\u00ebm jo n\u00ebn drejtimin tim.\"<\/p>\n<p><img decoding=\"async\" alt=\"Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb flak\u00eb\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/fbb5ce5ff93b4e3a7bdcd12cce3bdd92.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAi doli nga dhomat e tij dhe shpalli:<\/p>\n<p><i>\"Nj\u00eb dokument i madh JSON? Jo. Ju do t'i ndani t\u00eb dh\u00ebnat n\u00eb dokumente t\u00eb ve\u00e7anta, secili prej t\u00eb cil\u00ebve do t\u00eb ket\u00eb nj\u00eb madh\u00ebsi prej jo m\u00eb shum\u00eb se 1 megabajt.\"<\/i><\/p>\n<p>Duket se nj\u00eb kufizim i till nuk do t\u00eb mbijetoj\u00eb p\u00ebrball\u00eb nj\u00eb baze p\u00ebrdoruesish t\u00eb mjaftueshme. Ju e dini q\u00eb \u00ebsht\u00eb k\u00ebshtu. N\u00eb pun\u00ebn ton\u00eb, p\u00ebr shembull, kemi mbi nj\u00ebmij\u00eb e pes\u00ebqind prezantime, dhe kjo \u00ebsht\u00eb Plot\u00ebsisht e Normalizuar.<\/p>\n<p>Me nj\u00eb kufizim t\u00eb till\u00eb, do t\u00eb jeni t\u00eb detyruar t\u00eb pranoni se nj\u00eb \"dokumenti\" n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave nuk do t\u00eb ngjaj\u00eb me asnj\u00eb objekt q\u00eb p\u00ebrdoruesi mund ta quaj\u00eb dokument.<\/p>\n<p><i>\u00abMatrica t\u00eb matricave, q\u00eb mund t\u00eb p\u00ebrmbajn\u00eb recursivisht elemente t\u00eb tjera? Jo. Matrica do t\u00eb p\u00ebrmbajn\u00eb vet\u00ebm objekte ose numra me gjat\u00ebsi fikse, si\u00e7 \u00ebsht\u00eb menduar nga Zoti.\u00bb<\/i><\/p>\n<p>Prandaj, n\u00ebse shpresonit t\u00eb vendosni GeoJSON tuaj n\u00eb Firestore, do t\u00eb zbuloni se kjo \u00ebsht\u00eb e pamundur. Asgj\u00eb nj\u00eb-dimensional nuk \u00ebsht\u00eb e lejueshme. Shpresoj se ju p\u00eblqen Base64 dhe\/ose JSON brenda JSON.<\/p>\n<p><i>\u00abImporti dhe eksporti i JSON p\u00ebrmes HTTP, mjetet e linj\u00ebs s\u00eb komand\u00ebs ose panelin e administratorit? Jo. Ju do t\u00eb jeni n\u00eb gjendje t\u00eb eksportoni dhe importoni vet\u00ebm t\u00eb dh\u00ebna n\u00eb Google Cloud Storage. K\u00ebshtu duket se quhet tani. Dhe kur thoni \"ju\", un\u00eb i drejtohem vet\u00ebm atyre q\u00eb kan\u00eb autorizim si Pronari i Projektit. T\u00eb gjith\u00eb t\u00eb tjer\u00ebt mund t\u00eb shkojn\u00eb dhe t\u00eb krijojn\u00eb tiket.\u00bb<\/i><\/p>\n<p>Si e shihni, modeli i t\u00eb dh\u00ebnave FireBase \u00ebsht\u00eb i leht\u00eb p\u00ebr t'u p\u00ebrshkruar. Ai p\u00ebrmban nj\u00eb dokument t\u00eb madh JSON q\u00eb lidh \u00e7el\u00ebsat e JSON me rrug\u00ebt URL. N\u00ebse shkruani duke p\u00ebrdorur <code>HTTP PUT<\/code> n\u00eb <code>\/<\/code> FireBase si m\u00eb posht\u00eb:<\/p>\n<pre><code class=\"json\">{\n  \"hello\": \"bot\u00eb\"\n}<\/code><\/pre>\n<p>\nAt\u00ebher\u00eb <code>GET \/hello<\/code> do t\u00eb kthej\u00eb <code>\"bot\u00eb\"<\/code>. N\u00eb thelb, kjo funksionon ashtu si\u00e7 e prisni. Koleksioni i objekteve FireBase <code>\/my-collection\/:id<\/code> \u00ebsht\u00eb ekvivalente me nj\u00eb fjalor JSON <code>{\"my-collection\": {...}}<\/code> n\u00eb rr\u00ebnj\u00eb, p\u00ebrmbajtja e t\u00eb cilit \u00ebsht\u00eb e aksesueshme n\u00eb <code>\/my-collection<\/code>:<\/p>\n<pre><code class=\"json\">{\n  \"id1\": {...object},\n  \"id2\": {...object},\n  \"id3\": {...object},\n  \/\/ ...\n}<\/code><\/pre>\n<p>\nKjo funksionon shk\u00eblqyesh\u00ebm, n\u00ebse \u00e7do futje ka ID pa kolizione, p\u00ebr \u00e7ka sistemi ka nj\u00eb zgjidhje standarde.<\/p>\n<p>Me fjal\u00eb t\u00eb tjera, baza e t\u00eb dh\u00ebnave \u00ebsht\u00eb 100% e p\u00ebrputhshme me JSON (*) dhe punon shk\u00eblqyesh\u00ebm me HTTP, p\u00ebr shembull, me CouchDB. Por kryesisht e p\u00ebrdorni at\u00eb p\u00ebrmes API-s\u00eb s\u00eb koh\u00ebs reale, e cila absktron websockets, autorizimin dhe abonimet. Paneli i administratorit ka t\u00eb dyja mund\u00ebsit\u00eb, duke lejuar si modifikimet n\u00eb koh\u00eb reale ashtu edhe importimin\/eksportimin e JSON. N\u00ebse n\u00eb kodin tuaj do t\u00eb q\u00ebndroni besnik ndaj t\u00eb nj\u00ebjt\u00ebs, do t\u00eb befasoheni se sa shum\u00eb kod t\u00eb specializuar do t\u00eb humbni, kur t\u00eb kuptoni se patch dhe diff JSON lejojn\u00eb zgjidhjen e 90% t\u00eb detyrave rutine p\u00ebr menaxhimin e gjendjes s\u00eb q\u00ebndrueshme.<\/p>\n<p>Modeli i t\u00eb dh\u00ebnave Firestore \u00ebsht\u00eb i ngjash\u00ebm me JSON, por ndryshon n\u00eb disa aspekte kritik\u00eb. Un\u00eb e kam p\u00ebrmendur tashm\u00eb munges\u00ebn e array-ve brenda array-ve. Modeli i sub-collections p\u00ebrqendrohet n\u00eb b\u00ebrjen e tyre koncepte t\u00eb klas\u00ebs s\u00eb par\u00eb, t\u00eb ndara nga dokumenti JSON q\u00eb i p\u00ebrmban ato. P\u00ebr k\u00ebt\u00eb, nuk ka nj\u00eb serializim t\u00eb gatsh\u00ebm, prandaj k\u00ebrkohet nj\u00eb rrug\u00eb e specializuar p\u00ebr ekzekutimin e kodit p\u00ebr t\u00eb marr\u00eb dhe shkruar t\u00eb dh\u00ebna. P\u00ebr t\u00eb menaxhuar koleksionet e veta, duhet t\u00eb shkruani skriptet dhe instrumentet tuaja. Panelet e administratorit lejojn\u00eb vet\u00ebm ndryshime t\u00eb vogla p\u00ebr nj\u00eb fush\u00eb n\u00eb \u00e7do her\u00eb dhe nuk kan\u00eb mund\u00ebsi importi\/exporti.<\/p>\n<p>Ata mor\u00ebn nj\u00eb baz\u00eb t\u00eb dh\u00ebnash NoSQL n\u00eb koh\u00eb reale dhe e kthen n\u00eb nj\u00eb non-SQL t\u00eb ngadalt\u00eb me auto-m\u00ebbashkimin dhe nj\u00eb kolon\u00eb t\u00eb ve\u00e7ant\u00eb jo-JSON. <i>Di\u00e7ka n\u00eb stilin e GraftQL<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb flak\u00eb\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/c6e842418996c96f1efa873774f35f44.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Java e nxeht\u00eb<\/h2>\n<p>\nN\u00ebse Firestore duhet t\u00eb b\u00ebhet m\u00eb i besuesh\u00ebm dhe i shkall\u00ebzuesh\u00ebm, ironia \u00ebsht\u00eb se nj\u00eb zhvillues mesatar do t\u00eb marr\u00eb nj\u00eb zgjidhje m\u00eb t\u00eb paq\u00ebndrueshme se sa do t\u00eb kishte marr\u00eb me FireBase \"nga kutia\". Softueri q\u00eb i nevojitet nj\u00eb Administratori t\u00eb Bezdisur t\u00eb Baz\u00ebs s\u00eb t\u00eb Dh\u00ebnave k\u00ebrkon nj\u00eb nivel p\u00ebrpjekjeje dhe kualifikimi specialist\u00ebsh, q\u00eb \u00ebsht\u00eb thjesht e pa realizueshme p\u00ebr ni\u015f\u00ebn ku supozohet t\u00eb ket\u00eb nj\u00eb produkt t\u00eb mir\u00eb. Kjo \u00ebsht\u00eb si t\u00eb thuash se HTML5 Canvas nuk \u00ebsht\u00eb nj\u00eb z\u00ebvend\u00ebsim p\u00ebr Flash, n\u00ebse nuk ka mjete zhvillimi dhe lojtar\u00eb. M\u00eb shum\u00eb, Firestore \u00ebsht\u00eb e bllokuar n\u00eb p\u00ebrpjekjen p\u00ebr past\u00ebrtin\u00eb e t\u00eb dh\u00ebnave dhe validimin steril, q\u00eb thjesht nuk p\u00ebrkon me m\u00ebnyr\u00ebn se si p\u00ebrdoruesi mesatar i biznesit <i>i p\u00eblqen t\u00eb punoj\u00eb<\/i>: p\u00ebr t\u00eb, nuk ka asgj\u00eb t\u00eb panevojshme, sepse deri n\u00eb fund gjith\u00e7ka \u00ebsht\u00eb nj\u00eb skic\u00eb.<\/p>\n<p>Dob\u00ebsia kryesore e FireBase \u00ebsht\u00eb se klienti u krijua disa vite m\u00eb her\u00ebt se sa duhej, akoma para se shumica e zhvilluesve t\u00eb uebit t\u00eb dinin mbi imutabilitetin. Si rezultat, FireBase supozon se do t\u00eb ndryshoni t\u00eb dh\u00ebnat dhe prandaj nuk shfryt\u00ebzon avantazhet q\u00eb ofrohet nga imutabiliteti i p\u00ebrdoruesit. P\u00ebr m\u00eb tep\u00ebr, ai nuk rip\u00ebrdor t\u00eb dh\u00ebnat n\u00eb snapshot-et q\u00eb i d\u00ebrgon p\u00ebrdoruesit, duke e b\u00ebr\u00eb shum\u00eb m\u00eb t\u00eb v\u00ebshtir\u00eb kryerjen e difeve. P\u00ebr dokumentet e m\u00ebdha, mekanizmi i tij i transaksioneve i bazuar n\u00eb difet e ndryshueshme \u00ebsht\u00eb thjesht i pap\u00ebrshtatsh\u00ebm. O njer\u00ebz, ne tashm\u00eb e kemi <code>WeakMap<\/code> n\u00eb JavaScript. Kjo \u00ebsht\u00eb e dobishme.<\/p>\n<p>N\u00ebse u jepni t\u00eb dh\u00ebnave form\u00ebn e duhur dhe nuk i b\u00ebni pem\u00ebt tep\u00ebr t\u00eb m\u00ebdha, at\u00ebher\u00eb mund ta shmangni k\u00ebt\u00eb problem. Por m\u00eb intereson, do t\u00eb ishte FireBase shum\u00eb m\u00eb irr\u00ebnsish\u00ebm n\u00ebse zhvilluesit do t\u00eb l\u00ebshonin nj\u00eb API klienti n\u00eb t\u00eb v\u00ebrtet\u00eb t\u00eb mir\u00eb, q\u00eb p\u00ebrdor imutabilitetin n\u00eb kombinim me k\u00ebshilla t\u00eb mira praktik\u00eb p\u00ebr struktur\u00ebn e bazave t\u00eb t\u00eb dh\u00ebnave. N\u00eb vend t\u00eb k\u00ebsaj, duket se ata p\u00ebrpiqen t\u00eb riparojn\u00eb at\u00eb q\u00eb nuk \u00ebsht\u00eb thyer, dhe kjo e b\u00ebn situat\u00ebn m\u00eb t\u00eb keqe.<\/p>\n<p>Nuk e di t\u00ebr\u00eb logjik\u00ebn q\u00eb q\u00ebndronte n\u00eb krijimin e Firestore. Reflekset mbi motivet q\u00eb lindin brenda nj\u00eb kuti t\u00eb zez\u00eb jan\u00eb gjithashtu nj\u00eb pjes\u00eb e arg\u00ebtimit. Nj\u00eb p\u00ebrballje e till\u00eb mes dy bazave t\u00eb t\u00eb dh\u00ebnash jasht\u00ebzakonisht t\u00eb ngjashme, por t\u00eb pa krahasueshme, \u00ebsht\u00eb shum\u00eb e rrall\u00eb. \u00cbsht\u00eb sikur dikush mendoi: <i>\u00abFirebase \u00ebsht\u00eb thjesht nj\u00eb funksion q\u00eb mund ta emulojm\u00eb n\u00eb Google Cloud\u00bb<\/i>, por ende nuk e ka zbuluar konceptin e p\u00ebrcaktimit t\u00eb k\u00ebrkesave t\u00eb bot\u00ebs reale apo krijimin e zgjidhjeve t\u00eb dobishme q\u00eb p\u00ebrmbushin t\u00eb gjitha k\u00ebto k\u00ebrkesa. <i>\u00abL\u00ebre k\u00ebt\u00eb t\u00eb mendojn\u00eb zhvilluesit. Thjesht b\u00ebjeni UI t\u00eb bukur\u2026 \u00c7far\u00eb do t\u00eb thoshte n\u00ebse do t\u00eb shtonim m\u00eb shum\u00eb zjarr?\u00bb<\/i><\/p>\n<p>Un\u00eb kuptoj disa gj\u00ebra rreth strukturave t\u00eb t\u00eb dh\u00ebnave. E shoh qart\u00eb se koncepti i \u00abgjith\u00e7ka n\u00eb nj\u00eb pem\u00eb t\u00eb madhe JSON\u00bb \u00ebsht\u00eb nj\u00eb p\u00ebrpjekje p\u00ebr t\u00eb abstaraktuar nga baza e t\u00eb dh\u00ebnave \u00e7do ndjenj\u00eb t\u00eb nj\u00eb strukture t\u00eb madhe. T\u00eb pres\u00ebsh q\u00eb software-i t\u00eb p\u00ebrballoj\u00eb \u00e7do fraktal t\u00eb dyshimt\u00eb t\u00eb struktur\u00ebs s\u00eb t\u00eb dh\u00ebnave \u2014 \u00ebsht\u00eb thjesht \u00e7menduri. Nuk m\u00eb nevojitet as imagjinata p\u00ebr t\u00eb kuptuar se sa keq mund t\u00eb jet\u00eb, kam zhvilluar audite t\u00eb rrepta t\u00eb kodit dhe <i>kam par\u00eb gj\u00ebra q\u00eb ju, njer\u00ebzit, nuk i keni \u00ebnd\u00ebrruar<\/i>. Por m\u00ebsoj gjithashtu se si duken strukturat e mira, <noindex><a rel=\"nofollow\" href=\"https:\/\/acko.net\/blog\/apis-are-about-policy\">si t'i p\u00ebrdorim ato<\/a><\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/acko.net\/blog\/software-development-as-advanced-damage-control\/\">p\u00ebrse duhet ta b\u00ebjm\u00eb k\u00ebt\u00eb<\/a><\/noindex>. Mund t\u00eb imagjinoj nj\u00eb bot\u00eb n\u00eb t\u00eb cil\u00ebn Firestore do t\u00eb dukej mjaft logjike, dhe ata q\u00eb e krijuan at\u00eb do t\u00eb mendonin se kishin b\u00ebr\u00eb nj\u00eb pun\u00eb t\u00eb mir\u00eb. Por ne nuk jetojm\u00eb n\u00eb k\u00ebt\u00eb bot\u00eb.<\/p>\n<p>Mb\u00ebshtetje p\u00ebr nd\u00ebrtimin e pyetjeve n\u00eb FireBase \u00ebsht\u00eb e dob\u00ebt sipas \u00e7do standardi, praktikisht nuk ekziston. Ajo sigurisht q\u00eb k\u00ebrkon p\u00ebrmir\u00ebsim ose t\u00eb pakt\u00ebn rishikim. Por Firestore nuk \u00ebsht\u00eb shum\u00eb m\u00eb e mir\u00eb, pasi \u00ebsht\u00eb e kufizuar nga t\u00eb nj\u00ebjtat indekse nj\u00ebdimensional\u00eb q\u00eb ka SQL-i i thjesht\u00eb. N\u00ebse ju nevojiten pyetje q\u00eb njer\u00ebzit b\u00ebjn\u00eb me t\u00eb dh\u00ebna kaotike, at\u00ebher\u00eb k\u00ebrkohet k\u00ebrkim i plot\u00eb, filtra p\u00ebr disa intervale dhe nj\u00eb renditje e rastit e p\u00ebrcaktuar nga p\u00ebrdoruesi. Duke shqyrtuar me kujdes funksionet e SQL-it t\u00eb thjesht\u00eb, ato vet\u00eb jan\u00eb shum\u00eb t\u00eb kufizuara. P\u00ebr m\u00eb tep\u00ebr, pyetjet e vetme SQL q\u00eb njer\u00ebzit mund t\u00eb kryejn\u00eb n\u00eb prodhim jan\u00eb pyetje t\u00eb shpejta. Ju do t\u00eb keni nevoj\u00eb p\u00ebr nj\u00eb zgjidhje t\u00eb specializuar p\u00ebr indeksimin me struktura t\u00eb dh\u00ebnash t\u00eb menduara mir\u00eb. P\u00ebr gjith\u00e7ka tjet\u00ebr, t\u00eb pakt\u00ebn duhet t\u00eb ket\u00eb nj\u00eb map-reduce incremental ose di\u00e7ka t\u00eb ngjashme.<\/p>\n<p>N\u00ebse k\u00ebrkoni informacione n\u00eb dokumentet e Google-it, shpresoj se do t'ju udh\u00ebzojn\u00eb n\u00eb di\u00e7ka si BigTable dhe BigQuery. Megjithat\u00eb, t\u00eb gjitha k\u00ebto zgjidhje shoq\u00ebrohen me nj\u00eb volum t\u00eb madhe t\u00eb zhargonit t\u00eb korporatave, k\u00ebshtu q\u00eb do t\u00eb ktheheni shpejt mbrapa dhe do t\u00eb filloni t\u00eb k\u00ebrkoni di\u00e7ka tjet\u00ebr.<\/p>\n<p>E fundit q\u00eb ju nevojitet n\u00eb rastin e nj\u00eb databaze real-time \u00ebsht\u00eb di\u00e7ka e krijuar nga njer\u00ebzit dhe p\u00ebr njer\u00ebzit, q\u00eb funksionon sipas nj\u00eb skeme pagese p\u00ebr menaxhimin.<\/p>\n<p><i>(*) \u00cbsht\u00eb nj\u00eb shaka, nuk ka nj\u00eb koncept si <noindex><a rel=\"nofollow\" href=\"http:\/\/seriot.ch\/parsing_json.php\">kompatibiliteti me JSON n\u00eb 100%<\/a><\/noindex>.<\/i><\/p>\n<p><\/p>\n<h4>Si reklam\u00eb<\/h4>\n<p>\nK\u00ebrkoni <noindex><a rel=\"nofollow\" href=\"https:\/\/vdsina.ru\/cloud-servers?partner=habr130\">VDS<\/a><\/noindex> p\u00ebr debugimin e projekteve, nj\u00eb server p\u00ebr zhvillim dhe hostim? Ju jeni klienti yn\u00eb i sakt\u00eb \ud83d\ude42 \u00c7mime p\u00ebr dit\u00eb p\u00ebr server\u00ebt me konfiguracione t\u00eb ndryshme, antiDDoS dhe licenca Windows tashm\u00eb t\u00eb p\u00ebrfshira n\u00eb \u00e7mim.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/vdsina.ru\/cloud-servers?partner=habr130\"><img decoding=\"async\" alt=\"Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb flak\u00eb\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/f1215924e9c1c41d00f7c71c6c569aa4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/vdsina\/blog\/522672\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043c\u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e. \u041c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043d\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u042d\u0442\u043e \u0431\u044b\u043b \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0440\u0430\u043d\u043d\u0435\u0433\u043e React \u0438 CouchDB. \u041e\u043d \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e JSON OT. \u0415\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0448\u0438\u0440\u043e\u043a\u0430\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0444\u0435\u0440\u0430\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":96466,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-96465","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043c\u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e. \u041c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043d\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u042d\u0442\u043e \u0431\u044b\u043b \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0440\u0430\u043d\u043d\u0435\u0433\u043e React \u0438 CouchDB. \u041e\u043d \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e JSON OT. \u0415\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0448\u0438\u0440\u043e\u043a\u0430\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0444\u0435\u0440\u0430\u0445\" \/>\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\/eta-baza-dannyh-v-ogne\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\u042d\u0442\u0430 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0433\u043d\u0435\u2026 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043c\u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e. \u041c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043d\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u042d\u0442\u043e \u0431\u044b\u043b \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0440\u0430\u043d\u043d\u0435\u0433\u043e React \u0438 CouchDB. \u041e\u043d \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e JSON OT. \u0415\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0448\u0438\u0440\u043e\u043a\u0430\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0444\u0435\u0440\u0430\u0445\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/eta-baza-dannyh-v-ogne\" \/>\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-10-12T05:42:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-12T05:42:27+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\udd47Kjo baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb n\u00eb zjarr\u2026 | ProHoster","description":"M\u00eb lejoni t\u00eb ndaj nj\u00eb histori teknike. Para shum\u00eb vitesh un\u00eb po zhvilloja nj\u00eb aplikacion me funksionalitete t\u00eb integruara p\u00ebr bashk\u00ebpunim. Ky ishte nj\u00eb eksperiment i dobish\u00ebm, ku u p\u00ebrdor i gjith\u00eb potenciali i React-it t\u00eb hersh\u00ebm dhe CouchDB. Ai sinkronizonte t\u00eb dh\u00ebnat n\u00eb koh\u00eb reale p\u00ebrmes JSON OT. P\u00ebrdorej n\u00eb pun\u00ebn e brendshme t\u00eb kompanis\u00eb, megjithat\u00eb aplikimi i gjer\u00eb dhe potenciali i tij n\u00eb fusha t\u00eb tjera ishin t\u00eb dukshme.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/eta-baza-dannyh-v-ogne","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\u042d\u0442\u0430 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0433\u043d\u0435\u2026 | ProHoster","og:description":"\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043c\u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e. \u041c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043d\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u042d\u0442\u043e \u0431\u044b\u043b \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0440\u0430\u043d\u043d\u0435\u0433\u043e React \u0438 CouchDB. \u041e\u043d \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e JSON OT. \u0415\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0448\u0438\u0440\u043e\u043a\u0430\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0444\u0435\u0440\u0430\u0445","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/eta-baza-dannyh-v-ogne","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-10-12T05:42:27+00:00","article:modified_time":"2020-10-12T05:42:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"96465","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:42:30","updated":"2022-09-29 13:02:04"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/96465","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=96465"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/96465\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/96466"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=96465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=96465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=96465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}