{"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\/et\/blog\/administrirovanie\/eta-baza-dannyh-v-ogne","title":{"rendered":"See andmebaas on tulekahjus\u2026","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"See andmebaas on tulekahjus\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/e4e39a7039dad14422fd83c05f114d6f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLaske mul r\u00e4\u00e4kida tehnilisest loost.<\/p>\n<p>Palju aastaid tagasi t\u00f6\u00f6tasin rakenduse kallal, millel olid integreeritud koost\u00f6\u00f6funktsioonid. See oli mugav eksperimentaalne tehnoloogia, mis kasutas varase Reacti ja CouchDB t\u00e4it potentsiaali. See s\u00fcnkroniseeris andmeid reaalajas JSON-i kaudu. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Operational_transformation\">OT<\/a><\/noindex>. Seda kasutati ettev\u00f5tte siset\u00f6\u00f6des, kuid laiem rakendatavus ja potentsiaal muudes valdkondades olid ilmsed.<\/p>\n<p>P\u00fc\u00fcdes m\u00fc\u00fca seda tehnoloogiat potentsiaalsetele klientidele, kohtasime ootamatut takistust. Meie demonstraatsioonivideo n\u00e4itas, et meie tehnoloogia n\u00e4gid v\u00e4lja ja t\u00f6\u00f6tasid suurep\u00e4raselt, selles ei olnud probleeme. Video n\u00e4itas t\u00e4pselt, kuidas see t\u00f6\u00f6tab, ja seal ei olnud mitte midagi simuleeritud. Me m\u00f5tlesime v\u00e4lja ja kodeerisime realistliku programmi rakendamise stsenaariumi.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<img decoding=\"async\" alt=\"See andmebaas on tulekahjus\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/ea517a6aee0b015dc4d7bad4e86af6f4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTegelikult see oligi probleem. Meie demo t\u00f6\u00f6tas just nii, nagu k\u00f5ik teised oma rakenduseid simuleerides. Konkreetselt edastati teave A-st B-sse kohe, isegi kui need olid suured meediafailid. P\u00e4rast s\u00fcsteemi sisenemist n\u00e4gid k\u00f5ik kasutajad uusi kirjeid. Rakenduse abil said erinevad kasutajad selgelt koos t\u00f6\u00f6tada samadel projektidel, isegi kui m\u00f5nes k\u00fclas oli Interneti-\u00fchendus katkendlik. Nii on see kaudselt selgitatud igas After Effectsis toodetud toote videos.<\/p>\n<p>Kuigi k\u00f5ik teadsid, milleks on vajaliku Refresh nupp, ei saanud keegi t\u00e4pselt aru, et veebirakendused, mida nad paluvad meil luua, on tavaliselt oma piirangutega kokku puutunud. Ja kui neid enam ei vajata, on kasutajakogemus sootuks erinev. Peamiselt m\u00e4rgati, et saab 'chatis' suhelda, j\u00e4ttes vestluskaaslastele m\u00e4rkmeid, mist\u00f5ttu k\u00fcsiti, kuidas see erineb n\u00e4iteks Slackist. Uff!<\/p>\n<h2>Igap\u00e4evase s\u00fcmbioosi disain<\/h2>\n<p>\nKui teil on juba tarkvaraarenduse kogemus, siis peab teid n\u00e4rima vajadus m\u00e4letada, et enamik inimesi ei suuda lihtsalt vaadata kasutajaliidese pilti ja m\u00f5ista, mida see selle kasutamise ajal teha kavatseb. R\u00e4\u00e4kimata sellest, mis toimub programmi enda sees. Teadlikkus sellest, <i>suuteline<\/i> mis v\u00f5ib juhtuda \u2014 on suuresti teadmiste tulemus sellest, mis ei saa juhtuda ja mis ei peaks juhtuma. Selleks on vajalik <noindex><a rel=\"nofollow\" href=\"https:\/\/uxdesign.cc\/design-of-everyday-things-chapter-01-summary-and-keypoints-664d426a11e0\">vaimne mudel<\/a><\/noindex> mitte ainult selle kohta, mida tarkvara teeb, vaid ka selle kohta, kuidas selle erinevad osad on omavahel seotud ja suhtlevad.<\/p>\n<p>Klassikaliseks n\u00e4iteks on kasutaja, kes vaatab kaksk\u00fcmmend minutit <i>spinner.gif<\/i>, p\u00fc\u00fcdes arvata, millal t\u00f6\u00f6 l\u00f5puks l\u00f5pule j\u00f5uab. Arendaja m\u00f5istaks, et protsess on t\u00f5en\u00e4oliselt hangunud ja gif ei kao kunagi ekraanilt. See animatsioon imiteerib t\u00f6\u00f6 tegemist, kuid ei ole seotud selle seisundiga. Taolistes olukordades armastavad m\u00f5ned tehnilised inimesed silmi p\u00f6\u00f6ritada, imetledes, kui ekslikud kasutajad v\u00f5ivad olla. Kuid t\u00e4helepanuv\u00e4\u00e4rne on, kes neist osutab p\u00f6\u00f6rlevatele kelladele ja \u00fctleb, et need tegelikult seisavad paigal?<\/p>\n<p><img decoding=\"async\" alt=\"See andmebaas on tulekahjus\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/db67c48846549b272a367c0a37aec97b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSelle sisuks on reaalajas andmebaaside v\u00e4\u00e4rtus. T\u00e4nap\u00e4eval kasutatakse reaalajas andmebaase endiselt v\u00e4ga v\u00e4he ning paljud suhtuvad neisse ettevaatlikult. Enamik selliseid andmebaase kaldub NoSQL stiilile, mist\u00f5ttu kasutatakse tavaliselt Mongo-p\u00f5hiseid lahendusi, millest on parem unustada. Minu jaoks t\u00e4hendab see aga mugavust CouchDB kasutamisel ja struktuuride kavandamise \u00f5ppimist, mille suudab t\u00e4ita andmetega mitte ainult m\u00f5ni b\u00fcrokraat. Arvan, et kasutan oma aega t\u00f5husamalt.<\/p>\n<p>Kuid selle postituse t\u00f5eline teema on see, mida kasutan t\u00e4na. Mitte oma valikul, vaid \u00fchtse ja pimedalt rakendatud ettev\u00f5tte poliitika t\u00f5ttu. Seet\u00f5ttu teen ma t\u00e4iesti ausa ja objektiivse v\u00f5rdluse kahe tihedalt seotud toote vahel, mis k\u00e4sitlevad reaalajas andmebaase Google'ilt.<\/p>\n<p><img decoding=\"async\" alt=\"See andmebaas on tulekahjus\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/89432de9501b7667f8e187d14afc8897.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nM\u00f5lema nime seas on s\u00f5na Fire. \u00dcks neist toob mulle meelde helluse. Teine minu jaoks on teistsugune tuli. Ma ei kiirusta nende nimede \u00fctlemisega, sest niipea kui ma seda teen, satume silmitsi esimese suure probleemiga \u2013 nimedega.<\/p>\n<p>Esimene on nimetatud <i>Firebase Real-Time Database<\/i>, aga teine on <i>Firebase Cloud Firestore<\/i>. M\u00f5lemad on tooted, mis p\u00e4rinevad <i>Firebase komplektist<\/i> Google. Nende API-d kannavad vastavalt nimetusi <code>firebase.database(\u2026)<\/code> ja <code>firebase.firestore(\u2026)<\/code>.<\/p>\n<p>See juhtus, sest <i>Reaalajas andmebaas<\/i> \u2014 see on lihtsalt algne <i>Firebase<\/i> enne selle Google'i ostmist 2014. aastal. Seej\u00e4rel otsustas Google luua selle k\u00f5rvaltoote, tuues v\u00e4lja <i>koopia<\/i> Firebase suure andmemahu p\u00f5hjal ja nimetas selle Firestore with a cloud. Loodan, et te ei ole veel segadusse sattunud. Kui siiski, siis \u00e4rge muretsege, ma kirjutasin selle osa artiklist \u00fcle k\u00fcmme korda.<\/p>\n<p>Sest tuleb m\u00e4rkida <i>Firebase<\/i> k\u00fcsimuses Firebase, ja <i>Firestore<\/i> k\u00fcsimuses Firebase, v\u00e4hemalt et teid m\u00f5istetaks paar aastat tagasi Stack Overflow's.<\/p>\n<p>Kui oleks olemas auhind halvimate tarkvaranimedega, oleks see juhtum kindlasti \u00fcks kandidaate. Hamming'i kaugus nende nimetuste vahel on nii v\u00e4ike, et see segab isegi kogenud insenere, kelle s\u00f5rmed tr\u00fckivad \u00fcht nime, kuigi pea m\u00f5tleb teisest. Need on plaanid, mis on suure k\u00f5makaga eba\u00f5nnestunud, v\u00e4lja m\u00f5eldud parimate kavatsustega; nad t\u00e4itsid ennustuse, et andmebaas p\u00f5leb tulekahjus. Ja ma ei nalja. Inimene, kes sellise nimetamisstruktuuri v\u00e4lja m\u00f5tles, on vere, higi ja pisarate p\u00f5hjustaja.<\/p>\n<p><img decoding=\"async\" alt=\"See andmebaas on tulekahjus\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/b793ce183c5d0477c32c87f64bce5879.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>P\u00fcrrhoose v\u00f5it<\/h2>\n<p>\nV\u00f5imalik, et Firestore on <i>asendus<\/i> Firebase'ile, selle j\u00e4rgmise p\u00f5lvkonna j\u00e4reltulijale, kuid see oleks vale arusaam. Firestore ei sobi kindlasti Firebase'i asendamiseks. Tundub, et keegi l\u00f5ikas sellest v\u00e4lja k\u00f5ik huvitava ja segas suure osa, mis alles j\u00e4i, erinevate viisidega.<\/p>\n<p>Kuid kiire pilk kahe toote vahel v\u00f5ib teid petta: n\u00e4ib, et nad teevad sama asja, kaudu peaaegu identsete API-de ja isegi sama andmebaasi seansi kaudu. Erinevused on vaevu m\u00e4rgatavad ja need ilmnevad alles p\u00f5hjaliku v\u00f5rdleva dokumentatsiooni uurimise k\u00e4igus. V\u00f5i siis, kui \u00fcritad portida suurep\u00e4raselt t\u00f6\u00f6tavat Firebase'i koodi, et see t\u00f6\u00f6taks Firestore'iga. Juba siis saad aru, et andmebaasi liides s\u00fcttib, kui proovid reaalajas hiirega lohistada. Kordan, ma ei nalja.<\/p>\n<p>Firebase klient on hoolikas, kuna ta salvestab muudatused ja t\u00e4idab automaatseid uuendamisproovi, kus viimane kirjutusoperatsioon on prioriteetne. Kuid Firestore'l on piirang, et \u00fcks kasutaja tohib dokumenti kirjutada ainult \u00fche korra sekundis, ning see piirang on serveripoolne. T\u00f6\u00f6tades sellega peate leidma viisi selle k\u00f5rvaldamiseks ja rakendama uuenduste sageduse piiramist, isegi kui proovite lihtsalt oma rakendust luua. Teisis\u00f5nu on Firestore reaalajas andmebaas ilma reaalajas kliendita, mis varjab end API abil.<\/p>\n<p>Sellega hakkame n\u00e4gema esimesi m\u00e4rke Firestore'i olemasolu m\u00f5ttest. V\u00f5ib-olla eksin, kuid mul on tunne, et keegi Google'i juhatuse k\u00f5rgetest kohtadest vaatas p\u00e4rast Firebase'i ostmist ja \u00fctles lihtsalt: 'Ei, jumal, ei. See on vastuv\u00f5etamatu. Ainult mitte minu juhtimise ajal.'<\/p>\n<p><img decoding=\"async\" alt=\"See andmebaas on tulekahjus\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/fbb5ce5ff93b4e3a7bdcd12cce3bdd92.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTa ilmus oma reservuaarist ja kuulutas:<\/p>\n<p><i>\u201e\u00dcks suur JSON dokument? Ei. Te jagate andmed eraldi dokumentideks, millest iga\u00fche suurus on maksimaalselt 1 megabait.\u201c<\/i><\/p>\n<p>Tundub, et selline piirang ei suuda taluda esimest kohtumist piisavalt motiveeritud kasutajate baasiga. Teate, et see on t\u00f5si. Meie juures, n\u00e4iteks, on \u00fcle tuhande esitlust, ja see on t\u00e4iesti normaalne.<\/p>\n<p>Selle piirangu korral peate leppima sellega, et \u00fcks \"dokumend\" andmebaasis ei sarnane \u00fchele objekti, mida kasutaja v\u00f5iks nimetada dokumendiks.<\/p>\n<p><i>\"Massiivide massiivid, mis v\u00f5ivad rekursiivselt sisaldada teisi elemente? Ei. Massiivid sisaldavad ainult objekte v\u00f5i fikseeritud pikkusega numbreid, nagu Issand soovis.\"<\/i><\/p>\n<p>Seega, kui lootsite, et saaksite oma Firestore'i GeoJSON-i paigutada, siis avastate, et see on v\u00f5imatu. \u00dckski mitmem\u00f5\u00f5tmeline ei ole lubatud. Loodan, et teile meeldib Base64 ja\/v\u00f5i JSON JSON-i sees.<\/p>\n<p><i>\"JSON-i import ja eksport HTTP kaudu, k\u00e4surea t\u00f6\u00f6riistad v\u00f5i administraatori paneel? Ei. Saate ainult eksportida ja importida andmeid Google Cloud Storage'i. Nii see praegu tundub olevat. Ja kui ma \u00fctlen 'te', siis p\u00f6\u00f6rdun ainult nende poole, kellel on Project Owneri \u00f5igused. K\u00f5ik teised v\u00f5ivad minna ja luua piletid.\"<\/i><\/p>\n<p>Nagu n\u00e4ete, on FireBase andmemudel lihtne kirjeldada. See sisaldab \u00fcht suurt JSON-dokumenti, mis seob JSON-v\u00f5tmed URL-teedega. Kui te salvestate kasutades <code>HTTP PUT<\/code> \u00fches <code>\/<\/code> FireBase j\u00e4rgmise:<\/p>\n<pre><code class=\"json\">{\n  \"hello\": \"maailm\"\n}<\/code><\/pre>\n<p>\nSiis <code>GET \/hello<\/code> tagastab <code>\"maailm\"<\/code>. P\u00f5him\u00f5tteliselt t\u00f6\u00f6tab see t\u00e4pselt nii, nagu te ootate. FireBase'i objektide kogu <code>\/my-collection\/:id<\/code> on v\u00f5rreldav JSON-s\u00f5naraamatuga <code>{\"my-collection\": {...}}<\/code> juures, mille sisu on k\u00e4ttesaadav <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>\nSee t\u00f6\u00f6tab suurep\u00e4raselt, kui igal sisestusel on konfliktivaba ID, mille jaoks s\u00fcsteemis on standardlahendus.<\/p>\n<p>Teisis\u00f5nu on andmebaas 100% \u00fchilduv JSON-iga (*) ja t\u00f6\u00f6tab suurep\u00e4raselt HTTP-ga, n\u00e4iteks CouchDB-ga. Kuid peamiselt kasutate seda reaalajas API kaudu, mis abstraktiseerib websockets, autolariseerimise ja tellimused. Administraatori paneel omab m\u00f5lemaid v\u00f5imalusi, v\u00f5imaldades reaalajas redigeerimist ning JSON-i importimist\/ekspordimist. Kui oma koodis j\u00e4rgite sama, siis imestate, kui palju spetsialiseeritud koodi kaduma l\u00e4heb, kui m\u00f5istate, et JSON-i patch ja diff v\u00f5imaldavad lahendada 90% rutiinsetest probleemidest, mis on seotud p\u00fcsiva olekuga.<\/p>\n<p>Firestore'i andmemudel meenutab JSON-i, kuid erineb sellest m\u00f5nede kriitiliselt oluliste aspektide poolest. Olen juba maininud, et massiivid ei tohi sisaldada massiive. Alamkollektsioonide mudel peab olema esmaklassilised kontseptsioonid, mis on eraldatud neid sisaldavast JSON-dokumendist. Kuna selleks ei ole olemas valmis serialiseerimist, on andmete lugemiseks ja kirjutamiseks vajalik spetsialiseeritud koodi t\u00e4itmise tee. Omandatud kollektsioonide t\u00f6\u00f6tlemiseks tuleb kirjutada oma skripte ja t\u00f6\u00f6riistu. Administraatori paneel v\u00f5imaldab teha ainult v\u00e4ikeseid muudatusi korraga \u00fche v\u00e4lja kaupa ning tal ei ole impordi\/v\u00e4ljaande v\u00f5imalusi.<\/p>\n<p>Nad v\u00f5tsid reaalajas NoSQL andmebaasi ja muutsid selle aeglaseks mitte-SQL-ks automaatsete \u00fchendustega ja eraldiseisva mitte-JSON veeruga. <i>Midagi GraftQL-i vaimus<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"See andmebaas on tulekahjus\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/c6e842418996c96f1efa873774f35f44.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Kuum Java<\/h2>\n<p>\nKui Firestore peab olema usaldusv\u00e4\u00e4rsem ja skaleeritavam, siis on iroonia see, et keskmine arendaja saab v\u00e4hem usaldusv\u00e4\u00e4rse lahenduse kui valides FireBase \"kastist v\u00e4lja\". See tarkvara, mis on vajalik n\u00fcrilt kriitiliste andmehaldurite jaoks, n\u00f5uab niiv\u00f5rd suurt pingutust ja spetsialistide kalibreerimist, et see on lihtsalt ebareaalne ni\u0161is, kus peaks olema hea toode. See on sarnane sellele, et HTML5 Canvas ei asenda Flashi, kui puuduvad arendustooted ja m\u00e4ngijad. Veelgi enam, Firestore on kinni andmete puhtuse ja steriilse valideerimise p\u00fc\u00fcdlemises, mis lihtsalt ei vasta keskmise \u00e4rikasutaja vajadustele. <i>armastab t\u00f6\u00f6tada<\/i>: tema jaoks ei ole see vajalik, kuna k\u00f5ik l\u00f5puks j\u00e4\u00e4b eeln\u00f5uks.<\/p>\n<p>FireBase'i peamine puudus on see, et klient loodi juba mitu aastat enne oma t\u00e4htaega, veel enne, kui enamik veebiarendajatest immutavusest teadlikud olid. Seet\u00f5ttu eeldab FireBase, et te muudate andmeid, mist\u00f5ttu ei kasuta ta \u00e4ra kasutaja pakutavat immutavust. Lisaks ei kasuta ta andmeid korduvates kasutajale edastatavates snapshotides, mist\u00f5ttu on diffide tegemine palju keerulisem. Suurte dokumentide puhul on tema muudetud diffide p\u00f5hine tehingumehhanism lihtsalt ebapiisav. Poisid, meil on ju juba olemas <code>WeakMap<\/code> JavaScriptis. See on mugav.<\/p>\n<p>Kui andmetele anda \u00f5ige kuju ja mitte teha puid liiga mahukateks, siis on v\u00f5imalik see probleem v\u00e4ltida. Kuid mind huvitab, kas FireBase oleks palju huvitavam, kui arendajad esitaksid t\u00f5eliselt hea kliendi API, mis kasutaks immutavust koos t\u00f5siste praktiliste n\u00f5uannete andmisega andmebaasi struktuuri kohta. Selle asemel n\u00e4ib, et nad p\u00fc\u00fcdsid parandada seda, mis ei ole katki, ja sellest sai halvem.<\/p>\n<p>Ma ei tea kogu loogikat, mis seisnes Firestore'i loomises. Argumente musta kasti sees tekkivate motiivide \u00fcle on samuti osa l\u00f5bust. Selline kahe \u00fcksteisega v\u00e4ga sarnase, kuid v\u00f5rreldamatud andmebaasi vastandamine on \u00fcsna haruldane. Justkui keegi oleks m\u00f5elnud: <i>\u201eFirebase on lihtsalt funktsioon, mida saame Google Cloudis emuleerida\u201c<\/i>, kuid samas pole ta veel avastanud reaalse maailma n\u00f5uete m\u00e4\u00e4ratlemise kontseptsiooni v\u00f5i kasulike lahenduste loomise, mis neid n\u00f5udeid rahuldavad. <i>\u201eLas arendajad m\u00f5tlevad sellele. Lihtsalt tehke UI ilusaks\u2026 Aga kas v\u00f5iks rohkem tuld lisada?\u201c<\/i><\/p>\n<p>Ma tean andmestruktuuridest paar asja. N\u00e4en kindlasti, et kontseptsioon \u201ek\u00f5ik \u00fches suures JSON-puus\u201c on katse andmebaasist eemaldada mistahes suurstruktuuri tunne. Oodata, et tarkvara lihtsalt toimetab iga kahtlase andmestruktuuri fraktaaliga \u2014 see on lihtsalt hullumeelsus. Ma ei pea isegi ette kujutama, kui halb k\u00f5ik olla v\u00f5iks, olen teinud ranged koodiauditid ja <i>n\u00e4inud sellist, millest te, inimesed, ei ole isegi unistanud.<\/i>. Kuid ma tean ka, kuidas head struktuurid v\u00e4lja n\u00e4evad, <noindex><a rel=\"nofollow\" href=\"https:\/\/acko.net\/blog\/apis-are-about-policy\">ja kuidas neid kasutada.<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/acko.net\/blog\/software-development-as-advanced-damage-control\/\">miks seda on vaja teha<\/a><\/noindex>. Ma suudan ette kujutada maailma, kus Firestore tundub t\u00e4iesti loogiline ja selle loonud inimesed arvavad, et nad on head t\u00f6\u00f6d teinud. Kuid me ei elame selles maailmas.<\/p>\n<p>FireBase'i p\u00e4ringute koostamise toetus on igasuguste standardite j\u00e4rgi halb, seda ei practically ole. See vajab kindlasti parandamist v\u00f5i v\u00e4hemalt l\u00e4bivaatamist. Kuid Firestore ei ole palju parem, kuna see on piiratud samade \u00fchekaaluliste indeksitega, mis on olemas lihtsas SQL-is. Kui vajate p\u00e4ringuid, mida inimesed teevad kaootiliste andmetega, on vajalik t\u00e4isteksti otsing, mitme vahemiku filtrid ja kasutaja m\u00e4\u00e4ratud suvaline j\u00e4rjestus. S\u00fcgavale vaatamise korral on lihtsa SQL funktsioonid ise liiga piiratud. Lisaks saavad ainult ainsad SQL-p\u00e4ringud, mida inimesed saavad t\u00f6\u00f6delda, olla kiirete p\u00e4ringute. Te vajate spetsialiseeritud lahendust indekseerimiseks koos l\u00e4bim\u00f5eldud andmestruktuuridega. Kogu muu jaoks peaks v\u00e4hemalt olema t\u00e4iendav kaardistamine-reduce v\u00f5i midagi sarnast.<\/p>\n<p>Kui otsite selle kohta teavet Google'i dokumentidest, loodan, et suunatakse teid millegi nagu BigTable ja BigQuery suunas. Kuid k\u00f5ik need lahendused on \u00fcmbritsetud nii tiheda ettev\u00f5tlusjargooniga, et te p\u00f6\u00f6rdute kiiresti tagasi ja hakkate otsima midagi muud.<\/p>\n<p>Viimane asi, mida vajate reaalajas andmebaasi puhul, on midagi, mis on loodud inimeste jaoks ja mida haldavad inimeste palkade s\u00fcsteemid.<\/p>\n<p><i>(*) See on nalja, 100% JSON-i \u00fchilduvuse m\u00f5istet ei eksisteeri. <noindex><a rel=\"nofollow\" href=\"http:\/\/seriot.ch\/parsing_json.php\">Otsite<\/a><\/noindex>.<\/i><\/p>\n<p><\/p>\n<h4>Reklaami \u00f5igustes<\/h4>\n<p>\nprojekti arendamiseks ja majutamiseks m\u00f5eldud serverit? Te olete just meie klient \ud83d\ude42 Meie p\u00e4evap\u00f5hine serverihind v\u00f5imaldab erinevate konfiguratsioonide, DDoS kaitse ja Windows litsentside kaasamist juba hinna sisse. <noindex><a rel=\"nofollow\" href=\"https:\/\/vdsina.ru\/cloud-servers?partner=habr130\">VDS<\/a><\/noindex> Las ma r\u00e4\u00e4gin teile tehnilise loo. Aastaid tagasi arendasin rakendust, milles olid sisseehitatud koost\u00f6\u00f6funktsioonid. See oli mugav katsetav tehnoloogiate kogum, mis kasutas varase Reacti ja CouchDB t\u00e4ielikku potentsiaali. See s\u00fcnkroniseeris andmeid reaalajas JSON OT abil. Seda kasutati ettev\u00f5tte siset\u00f6\u00f6des, kuid selle laiem kasutus ja potentsiaal muudes valdkondades oli silmapaistev.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/vdsina.ru\/cloud-servers?partner=habr130\"><img decoding=\"async\" alt=\"See andmebaas on tulekahjus\u2026\" src=\"\/wp-content\/uploads\/2020\/10\/f1215924e9c1c41d00f7c71c6c569aa4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Allikas: <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\/et\/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=\"et_EE\" \/>\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\/et\/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\udd47See and learn about our database services... | ProHoster","description":"Laske mul r\u00e4\u00e4kida tehnilisest loost. Mitmeid aastaid tagasi arendasin ma rakendust, millel olid sisse ehitatud koost\u00f6\u00f6funktsioonid. See oli mugav katsetus, kus kasutati varase Reacti ja CouchDB t\u00e4ielikku potentsiaali. See s\u00fcnkroniseeris andmed reaalajas JSON OT kaudu. Seda kasutas ettev\u00f5tte sise tegevustes, kuid selle laiem rakendamine ja potentsiaal teistes valdkondades olid m\u00e4rkimisv\u00e4\u00e4rsed.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/eta-baza-dannyh-v-ogne","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/96465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=96465"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/96465\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/96466"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=96465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=96465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=96465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}