{"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 mulle r\u00e4\u00e4kida tehnilisest loost.<\/p>\n<p>Palju aastaid tagasi arendasin ma rakendust, kus olid integreeritud koost\u00f6\u00f6rakenduse funktsioonid. See oli mugav eksperimentaalne virna, kus kasutati t\u00e4ielikult varase Reacti ja CouchDB potentsiaali. See s\u00fcnkroniseerib 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\u00f6s, kuid selle laiem rakendatavus ja potentsiaal teistes valdkondades olid ilmsed.<\/p>\n<p>P\u00fc\u00fcdes m\u00fc\u00fca potentsiaalsetele klientidele seda tehnoloogiat, kohtasime ootamatut takistust. Meie demo-videol n\u00e4gi meie tehnoloogia suurep\u00e4rane v\u00e4lja ja t\u00f6\u00f6tas suurep\u00e4raselt; probleeme ei olnud. Video n\u00e4itas t\u00e4pselt, kuidas see t\u00f6\u00f6tab, ja seal ei olnud midagi simuleeritud. Me v\u00e4lja m\u00f5eldud ja kodeeritud realistlik stsenaarium tarkvara kasutamiseks.<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 sai see probleemiks. Meie demo t\u00f6\u00f6tas just nii, nagu simuleerisid oma rakenduste t\u00f6\u00f6d k\u00f5ik teised. Konkreetsemalt, teave edastati koheselt A-st B-sse, isegi kui need olid suured meediafailid. P\u00e4rast sisse logimist n\u00e4gid k\u00f5ik kasutajad uusi kirjeid. Rakenduse abil said erinevad kasutajad koos t\u00f6\u00f6tada selgelt sama projektiga, isegi kui Interneti-\u00fchendus katkestati kuskil maal. Indirektse vormis t\u00e4hendab see, et igas After Effects'i tootevideotes on sarnane eeldus.<\/p>\n<p>Kuigi k\u00f5ik teadsid, milleks on Refresh-nupp, ei saanud k\u00fcllalt arusaadavaks, et veebirakendused, mille loomist nad meilt paluvad, on tavaliselt oma piirangute all. Ja kui need ei osutuks enam vajalikuks, oleks kasutajakogemus t\u00e4iesti erinev. Peamiselt m\u00e4rkisid nad, et nad saavad 'vestelda', j\u00e4ttes vestluspartneritele m\u00e4rkmeid, ning ikkagi k\u00fcsisid nad, kuidas see erineb n\u00e4iteks Slackist. Uf-f-f!<\/p>\n<h2>Igalap\u00e4evaste s\u00fcnkroonimiste disain<\/h2>\n<p>\nKui teil on juba tarkvaraarenduse kogemus, siis peaks teid \u00e4rritama vajadus meeles pidada, et enamus inimesi ei saa lihtsalt pilti kasutajaliidesest vaadates aru, mida see teha kavatseb, kui nad sellega suhtlevad. R\u00e4\u00e4kimata sellest, mis toimub tarkvara sisemuses. Teadlikkus sellest, <i>v\u00f5ib<\/i> mis juhtub \u2013 on suures osas seotud teadlikkusega sellest, mis ei saa juhtuda ja mis ei tohiks juhtuda. Selleks on vaja <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, mida tarkvara teeb, vaid ka seda, kuidas selle erinevad osad omavahel koosk\u00f5las ja suhtlevad.<\/p>\n<p>Klassikaline n\u00e4ide sellest on kasutaja, kes vaatab kahek\u00fcmne minuti jooksul <i>spinner.gif<\/i>, pidades meeles, millal see t\u00f6\u00f6 l\u00f5puks valmis saab. Arendaja oleks m\u00f5istnud, et protsess on t\u00f5en\u00e4oliselt seiskunud ning gif ei kao ekraanilt kunagi. See animatsioon imiteerib t\u00f6\u00f6 tegemist, kuid ei ole seotud selle olekuga. Sellistes olukordades armastavad m\u00f5ned tehnikud ohata, imestades, kui ekslikud v\u00f5ivad kasutajate arusaamad olla. Kuid m\u00e4rkige, kes neist n\u00e4itab keerleva kella poole ja \u00fctleb, et see on tegelikult liikumatuks j\u00e4\u00e4nud?<\/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 \/>\nSelles seisnebki reaalaja v\u00e4\u00e4rtuse olemus. T\u00e4nap\u00e4eval kasutatakse reaalaja andmebaase endiselt \u00e4\u00e4rmiselt harva ja paljusid n\u00e4hakse nende suhtes umbusuga. Enamik selliseid andmebaase kaldub aktiivselt NoSQL stiili, mist\u00f5ttu kasutatakse tavaliselt lahendusi, mis p\u00f5hinevad Mongo'l, millest on parem unustada. Siiski t\u00e4hendab see minu jaoks mugavust t\u00f6\u00f6tada CouchDB-ga ja \u00f5ppida \u00fclesehitust, mida v\u00f5iks t\u00e4ita andmetega mitte \u00fcksnes mingi b\u00fcrokraat. Arvan, et kasutan oma aega efektiivsemalt.<\/p>\n<p>Kuid selle postituse t\u00f5eline teema on see, mida ma t\u00e4na kasutan. Mitte oma valikul, vaid hoolimatult ja pimeda ettev\u00f5tte poliitika t\u00f5ttu. Seet\u00f5ttu toon v\u00e4lja t\u00e4iesti ausa ja erapooletu v\u00f5rdluse kahe tihedalt seotud toote vahel, mis t\u00f6\u00f6tavad reaalaja andmebaasidega Google'is.<\/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 nimetuses on s\u00f5na Fire. \u00dchte m\u00e4letan ma soojusega. Teine on minu jaoks teise t\u00fc\u00fcpi tuli. Ma ei kiirusta nende nimede \u00fctlemisega, sest kohe, kui ma seda teen, seisame silmitsi esimese suure probleemiga \u2013 nimedega.<\/p>\n<p>Esimene on <i>Firebase Real-Time Database<\/i>, teine aga \u2014 <i>Firebase Cloud Firestore<\/i>. M\u00f5lemad on tooted <i>Firebase komplektist<\/i> Google'ist. Nende API-d nimetatakse vastavalt <code>firebase.database(\u2026)<\/code> ja <code>firebase.firestore(\u2026)<\/code>.<\/p>\n<p>See juhtus seet\u00f5ttu, et <i>Real-Time Database<\/i> on lihtsalt algne <i>Firebase<\/i> , enne kui Google selle 2014. aastal ostis. Seej\u00e4rel otsustas Google luua paralleelse tootena <i>koopiana<\/i> Firebase'i, mis p\u00f5hines ettev\u00f5tte suurandmetel, ja nimetas selle Firestore'iks pilves. Loodan, et te pole veel segadusse sattunud. Kui siiski olete, \u00e4rge muretsege, ma ise kirjutasin selle artikli osa k\u00fcmme korda \u00fcmber.<\/p>\n<p>Kuna tuleb n\u00e4idata <i>Firebase<\/i> Firebase'i osaselt, ja <i>Firestore<\/i> Firebase'i osas, et teid m\u00f5istetaks m\u00f5ni aasta tagasi Stack Overflow's.<\/p>\n<p>Kui olemasolev tarkvara toote nimede halvim nimiauhind, siis see juhtum oleks kindlasti \u00fcks kandidaatidest. Hamming'i kaugus nende nimede vahel on nii v\u00e4ike, et see segaduses isegi kogenud insenere, kelle s\u00f5rmed kirjutavad \u00fcht nime, kuigi pea m\u00f5tleb teisele. Need on eba\u00f5nnestunud plaanid, mis olid v\u00e4lja m\u00f5eldud k\u00f5ige paremate kavatsustega; nad t\u00e4itsid ennustuse, et andmebaas p\u00f5leb. Ja ma ei nalja. Isik, kes sellise nimetamisstruktuuri v\u00e4lja m\u00f5tles, p\u00f5hjustas verd, higi ja pisaraid.<\/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>Pyrrhose v\u00f5it<\/h2>\n<p>\nV\u00f5ib arvata, et Firestore on <i>asendaja<\/i> Firebase'ile, selle j\u00e4rgmise p\u00f5lvkonna j\u00e4reltulija, aga see oleks eksiarvamus. Firestore ei sobi kindlasti Firebase'ile asenduseks. Tundub, et keegi on sellest v\u00e4lja l\u00f5iganud k\u00f5ik huvitava, ja suure osa allesj\u00e4\u00e4nust on erinevatel viisidel segamini ajanud.<\/p>\n<p>Kuid kiire pilk kahele tootelle v\u00f5ib sind eksitada: tundub, et nad teevad sama asja, peamiselt sama API kaudu ja isegi samas andmebaasi sessioonis. Erinevused on vaevu m\u00e4rgatavad ja ilmnevad ainult p\u00f5hjaliku v\u00f5rdleva uurimise k\u00e4igus ulatuslikus dokumentatsioonis. V\u00f5i siis, kui p\u00fc\u00fcad portida ideaalselt toimivat Firebase'i koodi, et see t\u00f6\u00f6taks Firestore'is. Juba siis avastad, et andmebaasi kasutajaliides p\u00f5leb, kui proovid reaalajas hiirega lohistada. Kordan j\u00e4lle, ma ei nalja.<\/p>\n<p>Firebase'i klient on viisakas selles m\u00f5ttes, et see puhverdab muudatused ja teeb automaatseid v\u00e4rskendamise korduskatseid, andes prioriteedi viimasele kirjutamise toimingule. Kuid Firestore'l on piirang 1 kirjutamisoperatsioon dokumendi kohta kasutaja kohta sekundis, ja see piirang kehtestatakse serveri poolt. Kui t\u00f6\u00f6tate sellega, peate ise leidma viisi selle \u00fcletamiseks ja rakendama v\u00e4rskenduste kiiruspiiraja, isegi kui proovite lihtsalt oma rakendust luua. Teisis\u00f5nu, Firestore on reaalaja andmebaas ilma reaalaja kliendita, mis peidab end selle alla API abil.<\/p>\n<p>Sellega hakkame n\u00e4gema esimesi m\u00e4rke Firestore'i olemasolu m\u00f5ttest. V\u00f5ib-olla eksin, kuid kahtlustan, et keegi k\u00f5rgel Google'is vaatas p\u00e4rast Firebase'i ostu 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 ruumidest ja kuulutas:<\/p>\n<p><i>\u201e\u00dcks suur JSON dokument? Ei. Te jagate andmed eraldi dokumentideks, millest iga\u00fche suurus ei tohi \u00fcletada 1 megabaiti.\u201c<\/i><\/p>\n<p>Tundub, et selline piirang ei kesta kaua koos piisavalt motiveeritud kasutajabaasiga. Teate, et see on nii. Meil n\u00e4iteks on \u00fcle tuhande esitluse ja see on t\u00e4iesti normaalne.<\/p>\n<p>Sellise piirangu korral peate leppima faktiga, et \u00fcks \"dokument\" andmebaasis ei sarnane mitte \u00fchegi objektiga, mida kasutaja v\u00f5iks nimetada dokumendiks.<\/p>\n<p><i>\u201eAhelad ahelates, mis v\u00f5ivad rekursiivselt sisaldada teisi elemente? Ei. Ahelad sisaldavad ainult objekte v\u00f5i kindla pikkusega numbreid, nagu Looja on ette n\u00e4inud.\u201c<\/i><\/p>\n<p>Seega, kui lootsite oma Firestore'i GeoJSON'i paigutada, leiate, et see on v\u00f5imatu. \u00dckski mitmem\u00f5\u00f5tmeline ei ole lubatud. Loodan, et armastate Base64 ja\/v\u00f5i JSON-i JSON-i sees.<\/p>\n<p><i>\u201eJSON-i import ja eksport HTTP kaudu, k\u00e4surealt v\u00f5i administraatori paneelist? Ei. Te saate ainult eksportida ja importida andmeid Google Cloud Storage'i. Nii see praegu tundub nimetatuna. Ja kui ma r\u00e4\u00e4gin \u201eteist\u201d, siis p\u00f6\u00f6rdun ainult nende poole, kes on Project Owner'i \u00f5igused. K\u00f5ik teised v\u00f5ivad minna ja luua pileteid.\u201c<\/i><\/p>\n<p>Nagu n\u00e4ete, on FireBase andmemudelit lihtne kirjeldada. See sisaldab \u00fchte suurt JSON dokumenti, mis seob JSON v\u00f5tmed URL-i teedega. Kui te kirjutate <code>HTTP PUT<\/code> ja <code>\/<\/code> FireBase j\u00e4rgmist:<\/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 just nii, nagu te ootate. FireBase'i objektide kollektsioon <code>\/my-collection\/:id<\/code> on v\u00f5rdne JSON s\u00f5naraamiga <code>{\"my-collection\": {...}}<\/code> juures, mille sisu on saadaval <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 ID-d, millel pole konfliktide, milleks on s\u00fcsteemis olemas standardlahendus.<\/p>\n<p>Teisis\u00f5nu, andmebaas on 100% \u00fchilduv JSON-iga (*) ja t\u00f6\u00f6tab suurep\u00e4raselt HTTP-ga, n\u00e4iteks CouchDB-ga. Kuid p\u00f5hiliselt kasutate seda l\u00e4bi reaalajas API, mis abstraheerib websockets, autentimise ja tellimused. Administreerimisplaan toetab m\u00f5lemat v\u00f5imalust, v\u00f5imaldades reaalajas muutmisi ning JSON-i importimist\/eksportimist. Kui teie kood j\u00e4rgib seda printsiipi, siis \u00fcllatute, kui palju spetsialiseeritud koodi v\u00f5ite k\u00f5rvaldada, kui m\u00f5istate, et patch ja diff JSON lahendavad 90% rutiinseid p\u00fcsiseisundi t\u00f6\u00f6tlemise \u00fclesandeid.<\/p>\n<p>Firestore andmemudel sarnaneb JSON-ile, kuid erineb sellest mitmes kriitilises aspektis. Olen juba maininud, et massiive ei ole massiivide sees. Alamhulga mudel seisneb selles, et need on esmaklassilised kontseptsioonid, mis on eraldi JSON-i sisaldavast dokumendist. Kuna valmisseerialiseerimist ei ole, on andmete lugemiseks ja kirjutamiseks vajalik spetsialiseeritud koodi t\u00e4itmise rada. Oma kollektsioonide t\u00f6\u00f6tlemiseks tuleb kirjutada oma skripte ja t\u00f6\u00f6riistu. Administreerimisplaan v\u00f5imaldab teil teha vaid v\u00e4ikseid muudatusi \u00fche v\u00e4lja kaupa ning ei toeta importimist\/eksportimist.<\/p>\n<p>Nad muutsid reaalajas NoSQL andmebaasi aeglaseks mitte-SQL lahenduseks automaatse liitmise ja eraldi mitte-JSON veergudega. <i>Midagi sarnast GraftQL-iga<\/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 iroonia seisneb selles, et keskmine arendaja saab v\u00e4hem usaldusv\u00e4\u00e4rse lahenduse kui valides FireBase 'karbist v\u00e4lja'. See tarkvara, mida n\u00e4put\u00f6\u00f6rik ehk Noogutav Andmebaasi Administraator vajab, n\u00f5uab nii suurt pingutust ja spetsialistide taset, et see on lihtsalt reaalsuses ebat\u00f5en\u00e4oline valdkonnale, kus peaks olema hea toode. See on sarnane sellele, et HTML5 Canvas ei ole sugugi Flashi asendaja, kui ei ole arendust\u00f6\u00f6riistu ja m\u00e4ngijat. Veelgi enam, Firestore on kinni j\u00e4\u00e4nud andmete puhtuse ja steriilsete valideerimiste p\u00fc\u00fcdlemisse, mis lihtsalt ei vasta sellele, kuidas keskmine \u00e4rikasutaja <i>meeldib t\u00f6\u00f6tada<\/i>: tema jaoks ei ole see vajalik, kuna l\u00f5puni on k\u00f5ik mustand.<\/p>\n<p>FireBase'i peamine puudus on see, et klient loodi mitu aastat enne t\u00e4htaega, veel enne, kui enamik veebiarendajatest sai teada immutamatuse m\u00f5istest. Seet\u00f5ttu eeldab FireBase, et te muudate andmeid, mist\u00f5ttu ei kasutata \u00e4ra kasutaja poolt tagatud immutamatuse eeliseid. Lisaks ei taaskasutata andmeid kasutajale edastatavates hetkede piltides, mis muudab erinevuste leidmise m\u00e4rksa keerulisemaks. Suurte dokumentide jaoks on selle muutuvate erinevuste p\u00f5hine tehingumehhanism lihtsalt ebapiisav. Meil on ju juba olemas <code>WeakMap<\/code> JavaScriptis. See on mugav.<\/p>\n<p>Kui andmed \u00f5igesse vormi viia ja puid mitte liiga mahukaks teha, saab seda probleemi v\u00e4ltida. Kuid mind huvitab, kas FireBase oleks palju huvitavam, kui arendajad vabastaksid t\u00f5eliselt hea kliendipoolse API, mis kasutab immutamatust koos t\u00f5siste praktiliste soovitustega andmebaasi struktuuri osas. Selle asemel n\u00e4ib, et nad \u00fcritavad parandada midagi, mis pole katki, ja seet\u00f5ttu on olukord halvenenud.<\/p>\n<p>Ma ei tea kogu loogikat, mis oli Firestore'i loomise aluseks. Arutlused motiivide \u00fcle, mis tekivad mustas kastis, on samuti osa naljast. Selline vastandamine kahe \u00e4\u00e4rmiselt sarnase, kuid \u00fcksteisega v\u00f5rreldamatute andmebaaside vahel toimub \u00fcsna harva. Justkui keegi m\u00f5tleks: <i>\u00abFirebase on lihtsalt funktsioon, mida saame simuleerida Google Cloudis\u00bb<\/i>, aga samas ei ole ta veel avastanud reaalse maailma n\u00f5uete m\u00e4\u00e4ratlemise kontseptsiooni v\u00f5i kasulike lahenduste loomise kontseptsiooni, mis rahuldavad k\u00f5iki neid n\u00f5udeid. <i>\u00abLas arendajad m\u00f5tlevad sellele. Lihtsalt tehke UI ilusaks\u2026 Kas saaks lisada rohkem tuld?\u00bb<\/i><\/p>\n<p>Ma m\u00f5istan paar asja andmestruktuuride kohta. Ma n\u00e4en v\u00e4ga selgelt, et m\u00f5te \u00abk\u00f5ik \u00fches suures JSON-puus\u00bb on katse kaotada andmebaasist igasugune suurem struktuuriline tunne. Oodata, et tarkvara saaks hakkama igasuguste kahtlaste andmestruktuuride fraktaalidega, on lihtsalt meeletu. Ma ei pea isegi ette kujutama, kui halvasti asjad v\u00f5ivad olla, olen teinud rangeid koodiauditeid ja <i>n\u00e4inud sellist, millest teie, inimesed, ei ole isegi unistanud<\/i>. Kuid ma tean ka, millised head struktuurid v\u00e4lja n\u00e4evad, <noindex><a rel=\"nofollow\" href=\"https:\/\/acko.net\/blog\/apis-are-about-policy\">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 v\u00f5in 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 ela selles maailmas.<\/p>\n<p>FireBase'i p\u00e4ringute toetamine on igas m\u00f5ttes n\u00f5rk, praktiliselt puudub. See vajab kindlasti parandamist v\u00f5i v\u00e4hemalt \u00fclevaatamist. Kuid Firestore ei ole m\u00e4rkimisv\u00e4\u00e4rselt parem, kuna seda piiravad samad \u00fchem\u00f5\u00f5tmelised indikaatorid, mis on 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 juhuslik j\u00e4rjekord. S\u00fcgava uurimise korral on lihtsa SQLi funktsioonid iseenesest liiga piiratud. Lisaks on ainsad SQL-p\u00e4ringud, mida inimesed toimetuses saavad teha, kiired p\u00e4ringud. Teil on vaja spetsialiseeritud lahendust indekseerimiseks, millel on h\u00e4sti l\u00e4bi m\u00f5eldud andmestruktuurid. K\u00f5ik muu vajab v\u00e4hemalt j\u00e4rkj\u00e4rgulist map-reduce'i v\u00f5i midagi sarnast.<\/p>\n<p>Kui otsite sellest teavet Google'i dokumentides, suunatakse teid loodetavasti millegi sarnase suunas nagu BigTable ja BigQuery. Kuid k\u00f5ik need lahendused on nii tihedalt \u00fcksteise peal, et te kiiresti tagastate tagasi ja hakkate otsima midagi muud.<\/p>\n<p>Viimane asi, mida vajate reaalajas andmebaasi puhul, on midagi, mille on loonud inimesed ja mis on loodud inimestele, t\u00f6\u00f6tades palgaastmetel juhtimiseks.<\/p>\n<p><i>(*) See on nali, sellist m\u00f5istet ei ole <noindex><a rel=\"nofollow\" href=\"http:\/\/seriot.ch\/parsing_json.php\">100% JSON-i \u00fchilduvus<\/a><\/noindex>.<\/i><\/p>\n<p><\/p>\n<h4>Reklaami \u00f5igustes<\/h4>\n<p>\nOtsite <noindex><a rel=\"nofollow\" href=\"https:\/\/vdsina.ru\/cloud-servers?partner=habr130\">VDS<\/a><\/noindex> projektide silumiseks, arendus- ja majutusseeri? Te olete kindlasti meie klient \ud83d\ude42 Erinevate konfiguratsioonide serverite p\u00e4evane hindamine, antiDDoS ja Windowsi litsentsid on juba hinna sees.<\/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 5.0.1.1 - 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.\" \/>\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) 5.0.1.1\" \/>\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.\" \/>\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 andmebaas on tulekahjus\u2026 | ProHoster","description":"Las ma r\u00e4\u00e4gin teile tehnilist lugu. Palju aastaid.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}