{"id":37585,"date":"2019-10-31T22:18:27","date_gmt":"2019-10-31T19:18:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-zaglyanut-v-glaza-kassandre-i-ne-poteryat-pri-etom-dannye-stabilnost-i-veru-v-nosql\/"},"modified":"2019-10-31T22:18:27","modified_gmt":"2019-10-31T19:18:27","slug":"kak-zaglyanut-v-glaza-kassandre-i-ne-poteryat-pri-etom-dannye-stabilnost-i-veru-v-nosql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-zaglyanut-v-glaza-kassandre-i-ne-poteryat-pri-etom-dannye-stabilnost-i-veru-v-nosql","title":{"rendered":"Hvordan kan man se ind i Cassandra's \u00f8jne uden at miste data, stabilitet og troen p\u00e5 NoSQL?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Hvordan kan man se ind i Cassandra&#039;s \u00f8jne uden at miste data, stabilitet og troen p\u00e5 NoSQL?\" src=\"\/wp-content\/uploads\/2019\/08\/4845d37a9928f888639c4ebeb7807787.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Det siges, at man skal pr\u00f8ve alt i livet mindst \u00e9n gang. Hvis du er vant til at arbejde med relationelle databaser, er det v\u00e6rd at stifte bekendtskab med NoSQL i praksis, i det mindste for at f\u00e5 en generel forst\u00e5else. I takt med den hurtige udvikling af denne teknologi er der mange modstridende meninger og hede debatter om emnet, hvilket is\u00e6r v\u00e6kker interessen.<br \/>\nHvis man dykker ned i essensen af alle disse debatter, kan man se, at de opst\u00e5r p\u00e5 grund af en forkert tilgang. De, der bruger NoSQL-databaser der, hvor de er n\u00f8dvendige, er tilfredse og f\u00e5r alle fordelene ved denne l\u00f8sning. Eksperimentatorer, der satser p\u00e5 denne teknologi som en kur mod alt, hvor den slet ikke er anvendelig, oplever skuffelse, da de mister de st\u00e6rke sider ved relationelle databaser uden at opn\u00e5 v\u00e6sentlige fordele.<\/p>\n<p><\/p>\n<p>Jeg vil fort\u00e6lle om vores erfaring med implementeringen af en l\u00f8sning baseret p\u00e5 Cassandra-database: hvad vi st\u00f8dte p\u00e5, hvordan vi kom igennem sv\u00e6re situationer, om vi n\u00e5ede at opn\u00e5 fordele ved at bruge NoSQL, og hvor vi m\u00e5tte investere ekstra ressourcer.<br \/>\nDen oprindelige opgave var at bygge et system til at optage opkald i et bestemt lager.<\/p>\n<p><\/p>\n<p>Systemets funktionsprincip er f\u00f8lgende. Der modtages filer med en bestemt struktur, der beskriver opkaldsstrukturen. Derefter sikrer applikationen, at denne struktur gemmes i de relevante kolonner. De gemte opkald bruges senere \u2013 til at vise forbrugsinformation for abonnenter (opkald, historie over saldo).<\/p>\n<p>\n<img decoding=\"async\" alt=\"Hvordan kan man se ind i Cassandra&#039;s \u00f8jne uden at miste data, stabilitet og troen p\u00e5 NoSQL?\" src=\"\/wp-content\/uploads\/2019\/08\/c7b095dc8879011adb751c96427af512.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hvorfor vi valgte Cassandra er helt forst\u00e5eligt \u2013 den skriver som en maskingev\u00e6r, er let at skalere, og er fejltolerant.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>S\u00e5 her er hvad erfaringen har givet os<\/h2>\n<p><\/p>\n<p>Ja, en nedbrudt node er ikke en tragedie. Det er netop essensen af Cassandra\u2019s fejltolerance. Men <b>en node kan v\u00e6re i live og stadig begynde at falde i ydeevne.<\/b>. Som det viste sig, afspejles dette straks i ydeevnen af hele klyngen.<\/p>\n<p><\/p>\n<p><b>Cassandra vil ikke beskytte der, hvor Oracle reddede med sine begr\u00e6nsninger.<\/b>. Og hvis applikationens forfatter ikke har indset dette p\u00e5 forh\u00e5nd, er en duplikat for Cassandra ikke bedre end originalen. Kommer den, s\u00e5 inds\u00e6tter vi den.<\/p>\n<p><\/p>\n<p>Den gratis Cassandra \"ud af boksen\" blev pludselig ikke popul\u00e6r blandt sikkerhedsafdelingen: <b>der er ingen logf\u00f8ring af brugerhandlinger, heller ikke adskillelse af rettigheder.<\/b>. Oplysninger om opkald vedr\u00f8rer personlige data, hvilket betyder, at alle fors\u00f8g p\u00e5 at anmode om eller \u00e6ndre dem skal logg\u00f8res med mulighed for efterf\u00f8lgende revision. Det er ogs\u00e5 vigtigt at forst\u00e5 behovet for at opdele rettigheder p\u00e5 forskellige niveauer for forskellige brugere. En almindelig driftsingeni\u00f8r og en superadministrator, der frit kan slette hele keyspace, har forskellige roller, ansvar og kompetence. Uden en s\u00e5dan adskillelse af adgangen vil v\u00e6rdien og integriteten af data straks v\u00e6re under sp\u00f8rgsm\u00e5let, hurtigere end ved en konsistensniveau ANY. <\/p>\n<p><\/p>\n<p>Vi har ikke taget h\u00f8jde for, at opkaldene kr\u00e6ver b\u00e5de seri\u00f8s analyse og periodiske stikpr\u00f8ver under en bred vifte af betingelser. Da de udvalgte poster derefter skal slettes og overskrives (i rammerne af opgaven skal vi underst\u00f8tte dataaktualiseringen ved oprindeligt forkert indkomne data til os), er Cassandra ikke vores ven her. <b>Cassandra er som en spareb\u00f8sse \u2013 den er praktisk at gemme i, men man kan ikke t\u00e6lle i den.<\/b><\/p>\n<p><\/p>\n<p><b>Vi st\u00e5r over for et problem med at overf\u00f8re data til testzoner<\/b> (5 noder i testen mod 20 i produktionen). Dump i s\u00e5 fald kan ikke anvendes.<\/p>\n<p><\/p>\n<p>Problemet med opdateringer af dataskemaet for applikationen, der skriver til Cassandra. <b>Nedrulning vil skabe en stor m\u00e6ngde gravstene, hvilket uforudsigeligt kan s\u00e6nke vores ydeevne<\/b>. Cassandra er optimeret til skrivning, og f\u00f8r den skriver, t\u00e6nker den ikke meget over det. Enhver operation med eksisterende data i den er ogs\u00e5 en skriveoperation. Dvs. ved at slette un\u00f8dvendige poster, skaber vi bare endnu flere poster, og kun en del af dem vil blive markeret som gravsten.<\/p>\n<p><\/p>\n<p>Timeouts ved inds\u00e6ttelse. Cassandra er fantastisk til skrivning, men <b>nogle gange kan den indkommende str\u00f8m forvirre den betydeligt<\/b>. Dette sker, n\u00e5r applikationen begynder at cykle gennem flere poster, som ikke kan inds\u00e6ttes af en eller anden grund. Og vi f\u00e5r brug for en rigtig DBA, der vil overv\u00e5ge gc.log, system- og debugloggerne med henblik p\u00e5 langsomme foresp\u00f8rgsler og m\u00e5linger p\u00e5 compaction pending.\n<\/p>\n<p><\/p>\n<p>Flere datacentre i klyngen. <b>Hvorfra skal der l\u00e6ses, og hvor skal der skrives?<\/b> <br \/>\nEr det muligt at adskille l\u00e6sning og skrivning? Og hvis ja, skal der s\u00e5 v\u00e6re en DC til skrivning eller l\u00e6sning t\u00e6ttere p\u00e5 applikationen? Og kan vi ende med en rigtig split brain, hvis vi v\u00e6lger en forkert konsistensniveau? Der er mange sp\u00f8rgsm\u00e5l, mange uudforskede indstillinger og muligheder, som vi virkelig gerne vil eksperimentere med.\n<\/p>\n<p><\/p>\n<h2>Hvordan l\u00f8ste vi det<\/h2>\n<p><\/p>\n<p><b>For at forhindre, at noden falder, deaktiverede vi SWAP<\/b>. Og nu, n\u00e5r der mangler hukommelse, skal noden g\u00e5 ned i stedet for at skabe lange gc-pauser.<\/p>\n<p><\/p>\n<p>S\u00e5 vi stoler ikke l\u00e6ngere p\u00e5 logikken i databasen. <b>Applikationsudviklerne genl\u00e6rer og begynder aktivt at sikkerhedskopiere i deres egen kode.<\/b> Ideel og klar opdeling af dataopbevaring og databehandling.<\/p>\n<p><\/p>\n<p><b>Vi k\u00f8bte support fra DataStax.<\/b> Den pakke-baserede Cassandra udvikles ikke l\u00e6ngere (sidste commit var i februar 2018). Samtidig tilbyder Datastax en fremragende service og et stort antal tilpassede og optimerede l\u00f8sninger til eksisterende IT-systemer.<\/p>\n<p><\/p>\n<p>Jeg vil ogs\u00e5 bem\u00e6rke, at Cassandra ikke er s\u00e6rlig praktisk til foresp\u00f8rgsler ved selection. Selvf\u00f8lgelig er CQL et stort skridt i retning af brugerne (sammenlignet med Thrift). Men hvis du har hele afdelinger, der er vant til s\u00e5danne bekvemme joins, fri filtrering efter ethvert felt og optimeringsmuligheder for foresp\u00f8rgsler, og disse afdelinger arbejder p\u00e5 at lukke klager og problemer, s\u00e5 virker en l\u00f8sning baseret p\u00e5 Cassandra fjendtlig og t\u00e5belig for dem. Og vi begyndte at finde ud af, hvordan vores kolleger kunne lave selectioner. <\/p>\n<p><\/p>\n<p>Vi overvejede to muligheder. I den f\u00f8rste mulighed skriver vi kald ikke kun til C*, men ogs\u00e5 til den arkiverede Oracle-database. Men i mods\u00e6tning til C* gemmes kald kun for den nuv\u00e6rende m\u00e5ned i denne database (tilstr\u00e6kkelig lagringsdybde for kald til ompriss\u00e6tnings tilf\u00e6lde). Her kunne jeg straks se det f\u00f8lgende problem: hvis vi skriver synkront, mister vi alle fordelene ved C*, som er relateret til hurtig inds\u00e6ttelse; hvis asynkront \u2013 er der ingen garanti for, at alle n\u00f8dvendige kald overhovedet havnede i Oracle. Der var en fordel, men stor: til drift forbliver den samme velkendte PL\/SQL Developer, dvs. vi kan praktisk talt implementere m\u00f8nsteret 'Fasade'. Alternativ mulighed. Vi implementerer en mekanisme, som eksporterer kald fra C*, henter nogle data til berigelse fra de relevante tabeller i Oracle, samler de indhentede udtag og giver os det endelige resultat, som vi s\u00e5 bruger p\u00e5 en eller anden m\u00e5de (ruller tilbage, gentager, analyserer, beundrer). Ulemper: processen bliver temmelig flertrins, og derudover mangler der et interface for driftspersonalet.<\/p>\n<p><\/p>\n<p>I sidste ende stoppede vi alligevel ved den anden mulighed. <b>Til udtr\u00e6k fra forskellige databaser brugte vi Apache Spark.<\/b> Essensen af mekanismen er reduceret til Java-kode, som ved hj\u00e6lp af angivne n\u00f8gler (abonent, tidspunkt for opkald \u2013 n\u00f8gler i sektionen) tr\u00e6kker data ud fra C*, samt de n\u00f8dvendige data til berigelse fra enhver anden database. Derefter samler den dem i sin hukommelse og outputter resultatet til en resultat tabel. Vi tegnede en web-gr\u00e6nseflade over Spark, og det viste sig at v\u00e6re ganske egnet til drift.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Hvordan kan man se ind i Cassandra&#039;s \u00f8jne uden at miste data, stabilitet og troen p\u00e5 NoSQL?\" src=\"\/wp-content\/uploads\/2019\/08\/5754363569f159dd7b86972bb0cef732.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>I arbejdet med opdateringen af data, overvejede vi igen flere l\u00f8sninger. B\u00e5de flytning via Sstloader og muligheden for at opdele klyngen i testomr\u00e5det i to dele, hvor hver del skiftevis tilslutter sig den ene produktionsklynge og derved f\u00e5r str\u00f8m derfra. Under opdateringen var det planlagt at bytte dem om: den del, der arbejdede i testen, skulle ryddes og introduceres i produktion, mens den anden begynder at arbejde med data separat. Men efter at have t\u00e6nkt over det igen, vurderede vi mere rationelt, hvilke data der er v\u00e6rd at flytte, og inds\u00e5, at disse kald i sig selv er en inkonsistent enhed til tests, der hurtigt kan genereres ved behov, og at den produktionss\u00e6ttede datam\u00e6ngde ikke har v\u00e6rdi til flytning til test. Der er flere lagerobjekter, som er v\u00e6rd at flytte, men det er bogstaveligt talt et par tabeller, der ikke er s\u00e5 tunge. Derfor <b>Blev Spark igen en hj\u00e6lpsom l\u00f8sning, hvor vi skrev og aktivt brugte et script til at overf\u00f8re data mellem tabellerne i produktions-test.<\/b><\/p>\n<p><\/p>\n<p><b>Vores nuv\u00e6rende deploymentspolitik tillader os at arbejde uden tilbagekaldelser.<\/b> F\u00f8r produktionen er der obligatorisk udrulning til test, hvor fejlen ikke er s\u00e5 kostbar. I tilf\u00e6lde af fejl kan vi altid droppe keyspace og udrulle hele skemaet fra starten.<\/p>\n<p><\/p>\n<p>For at sikre uafbrudt tilg\u00e6ngelighed af Cassandra er der behov for en DBA, men ikke kun ham. <b>Alle, der arbejder med applikationen, skal forst\u00e5, hvor og hvordan man ser den aktuelle situation samt hvordan man rettidigt diagnosticerer problemer.<\/b> Til dette bruger vi aktivt DataStax OpsCenter (Administration og overv\u00e5gning af arbejdsbelastninger), systemmetrikker fra Cassandra-driveren (antal timeouts ved skrivning til C*, antal timeouts ved l\u00e6sning fra C*, maksimal latency osv.), og monitorerer selve applikationens arbejde, der arbejder med Cassandra.\n<\/p>\n<p><\/p>\n<p>Da vi t\u00e6nkte over det tidligere sp\u00f8rgsm\u00e5l, inds\u00e5 vi, hvor vores hovedrisiko kunne ligge. Det er - formerne for datavisualisering, der tr\u00e6kker data fra flere uafh\u00e6ngige foresp\u00f8rgsler til lageret. P\u00e5 den m\u00e5de kan vi f\u00e5 ret usammenh\u00e6ngende information. Men dette problem ville ogs\u00e5 v\u00e6re aktuelt, hvis vi kun arbejdede med et datacenter. S\u00e5 det mest fornuftige her er selvf\u00f8lgelig at lave en batch-funktion til datal\u00e6sning i en ekstern applikation, som sikrer, at data indhentes p\u00e5 \u00e9n gang. Hvad ang\u00e5r adskillelsen mellem l\u00e6sning og skrivning i forhold til ydeevne, s\u00e5 stoppede vi her, fordi risikoen for, at vi ved et mistet forbindelsesmellem D\u0421 kunne f\u00e5 to fuldst\u00e6ndig usammenh\u00e6ngende klynger.<\/p>\n<p><\/p>\n<p>I sidste ende, p\u00e5 nuv\u00e6rende tidspunkt <b>har vi valgt konsistensniveauet for skrivning til EACH_QUORUM, og for l\u00e6sning - LOCAL_QUORUM<\/b><\/p>\n<p><\/p>\n<h2>Korte indtryk og konklusioner<\/h2>\n<p><\/p>\n<p>For at vurdere den opn\u00e5ede l\u00f8sning med hensyn til driftsupport og fremtidige udviklingsmuligheder, besluttede vi at overveje, hvor vi ellers kunne anvende en s\u00e5dan udvikling.<\/p>\n<p><\/p>\n<p>Hvis vi skal v\u00e6re hurtige, s\u00e5 datascoring for programmer af typen \u201eBetal, n\u00e5r det passer dig\u201c (vi indl\u00e6sser information i S*, beregner med Spark-scripts), h\u00e5ndtering af klager med aggregering efter retninger, opbevaring af roller og beregning efter rollens matrix for brugeradgangsrettigheder. <\/p>\n<p><\/p>\n<p>Som vi kan se, er repertoiret bredt og varieret. Og hvis vi skal v\u00e6lge side blandt fortalere\/imodstandere af NoSQL, s\u00e5 vil vi tilslutte os tilh\u00e6ngerne, da vi har f\u00e5et vores fordele, og netop der, hvor vi forventede det.<\/p>\n<p><\/p>\n<p>Selv Cassandra-versionen ud af boksen tillader horisontal skalering i realtid, hvilket l\u00f8ser sp\u00f8rgsm\u00e5let om at \u00f8ge dataene i systemet helt smertefrit. Vi har form\u00e5et at isolere en meget h\u00f8jt belastet mekanisme til beregning af aggregater baseret p\u00e5 opkald, samt at adskille skemaet og logikken i applikationen, hvilket har befriet os for den skadelige praksis med at skrive skr\u00e6ddersyede jobs og objekter i selve databasen. Vi har f\u00e5et mulighed for at v\u00e6lge og tilpasse, hvor vi vil udf\u00f8re beregninger, og hvor vi vil skrive data, og vi har sikret os mod nedbrud af b\u00e5de enkelte noder og datacenteret generelt.<\/p>\n<p><\/p>\n<p>N\u00e5r vi anvender vores arkitektur p\u00e5 nye projekter, og allerede besidder en vis erfaring, vil vi straks tage de n\u00e6vnte nuancer i betragtning og undg\u00e5 nogle fejl for at glatte de spidse kanter, som vi oprindeligt ikke kunne undg\u00e5.<\/p>\n<p><\/p>\n<p>For eksempel, <b>f\u00f8lges op p\u00e5 opdateringerne af Cassandra i tide<\/b>, fordi mange af de problemer, vi fik, allerede var kendte og blev rettet.<\/p>\n<p><\/p>\n<p><b>Ikke at placere b\u00e5de databasen og Spark p\u00e5 de samme noder<\/b> (eller strengt adskille efter antallet af tilladte ressourceforbrug), da Spark kan bruge mere RAM end tilladt, og vi hurtigt vil f\u00e5 problem nummer 1 fra vores liste.<\/p>\n<p><\/p>\n<p><b>At forbedre overv\u00e5gningen og driftskompetencen allerede i testfasen af projektet. <\/b><b>Oprindeligt at tage h\u00f8jde for s\u00e5 mange potentielle brugere af vores l\u00f8sning som muligt<\/b>, fordi det i sidste ende vil bestemme strukturen af databasen.<\/p>\n<p><\/p>\n<p>At gennemg\u00e5 den resulterende skema flere gange med henblik p\u00e5 mulig optimering. At identificere hvilke felter der kan serialiseres. At forst\u00e5 hvilke ekstra tabeller vi skal lave for bedst og mest optimalt at tage h\u00f8jde for og derefter returnere den n\u00f8dvendige information (for eksempel ved at acceptere, at de samme data kan gemmes i forskellige tabeller med forskellige opdelinger efter forskellige kriterier, kan vi v\u00e6sentligt spare p\u00e5 procesortiden ved l\u00e6seforesp\u00f8rgsler).<\/p>\n<p><\/p>\n<p>Det er ikke d\u00e5rligt <b>at planl\u00e6gge TTL og oprydning af for\u00e6ldede data fra starten.<\/b><\/p>\n<p><\/p>\n<p>N\u00e5r data eksporteres fra Cassandra <b>b\u00f8r applikationens logik fungere efter princippet FETCH, s\u00e5 ikke alle r\u00e6kker bliver indl\u00e6st i hukommelsen p\u00e5 \u00e9n gang, men v\u00e6lges i batches.<\/b><\/p>\n<p><\/p>\n<p>Det er \u00f8nskeligt at kontrollere systemets fejltolerance, inden projektet overf\u00f8res til den beskrevne l\u00f8sning <b>ved at udf\u00f8re en r\u00e6kke crash-tests<\/b>, som f.eks. datatab i et datacenter, genopretning af beskadigede data over en given periode, netv\u00e6rksnedbrud mellem datacentre. S\u00e5danne tests vil ikke kun evaluere fordele og ulemper ved den foresl\u00e5ede arkitektur, men ogs\u00e5 give en god opvarmningspraksis til de ingeni\u00f8rer, der udf\u00f8rer dem, og den opn\u00e5ede f\u00e6rdighed vil bestemt ikke v\u00e6re overfl\u00f8dig, hvis systemfejl opst\u00e5r i produktionen.<\/p>\n<p><\/p>\n<p>Hvis vi arbejder med kritisk information (s\u00e5som data til fakturering, beregning af abonnementsrestancer), er det ogs\u00e5 vigtigt at overveje v\u00e6rkt\u00f8jer, der kan reducere risici, der opst\u00e5r p\u00e5 grund af databasenes s\u00e6rlige karakteristika. For eksempel at bruge v\u00e6rkt\u00f8jet nodesync (Datastax) og udvikle en optimal strategi for dets anvendelse, s\u00e5 <b>man for konsistens ikke skaber en overfl\u00f8dig belastning p\u00e5 Cassandra<\/b> og kun anvende det til bestemte tabeller i bestemte perioder.<\/p>\n<p><\/p>\n<p>Hvordan st\u00e5r det til efter et halvt \u00e5r med Cassandra? Generelt er der ikke ul\u00f8ste problemer. Vi har heller ikke haft alvorlige nedbrud eller datatab. Ja, vi m\u00e5tte t\u00e6nke p\u00e5 at kompensere for nogle problemer, der ikke tidligere fandtes, men det p\u00e5virkede ikke vores arkitektoniske beslutning i n\u00e6vnev\u00e6rdig grad. Hvis du \u00f8nsker at pr\u00f8ve noget nyt og ikke er bange for det, men samtidig ikke vil blive alt for skuffet, s\u00e5 v\u00e6r forberedt p\u00e5, at der ikke er noget gratis. Du m\u00e5 bruge mere tid p\u00e5 at unders\u00f8ge, s\u00e6tte dig ind i dokumentationen og samle din egen erfaring end med det gamle legacy-system, og ingen teori kan p\u00e5 forh\u00e5nd fort\u00e6lle dig, hvilke specifikke udfordringer der venter dig.<\/p>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465333\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0413\u043e\u0432\u043e\u0440\u044f\u0442, \u0432 \u0436\u0438\u0437\u043d\u0438 \u0432\u0441\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0440\u0430\u0437. \u0418 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0421\u0423\u0411\u0414, \u0442\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0441 NoSQL \u0441\u0442\u043e\u0438\u0442 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432 \u0441\u0438\u043b\u0443 \u0431\u0443\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u044d\u0442\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b\u0445 \u043c\u043d\u0435\u043d\u0438\u0439 \u0438 \u0433\u043e\u0440\u044f\u0447\u0438\u0445 \u0441\u043f\u043e\u0440\u043e\u0432 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443, \u0447\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043e\u0433\u0440\u0435\u0432\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441. \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043a\u043d\u0443\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28210,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37585","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\".\" \/>\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\/da\/blog\/administrirovanie\/kak-zaglyanut-v-glaza-kassandre-i-ne-poteryat-pri-etom-dannye-stabilnost-i-veru-v-nosql\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\u041a\u0430\u043a \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0433\u043b\u0430\u0437\u0430 \u041a\u0430\u0441\u0441\u0430\u043d\u0434\u0440\u0435 \u0438 \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0435\u0440\u0443 \u0432 NoSQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\".\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-zaglyanut-v-glaza-kassandre-i-ne-poteryat-pri-etom-dannye-stabilnost-i-veru-v-nosql\" \/>\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=\"2019-10-31T19:18:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18: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\udd47Hvordan man ser Cassandra i \u00f8jnene uden at miste data, stabilitet og tro p\u00e5 NoSQL | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-zaglyanut-v-glaza-kassandre-i-ne-poteryat-pri-etom-dannye-stabilnost-i-veru-v-nosql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\u041a\u0430\u043a \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0433\u043b\u0430\u0437\u0430 \u041a\u0430\u0441\u0441\u0430\u043d\u0434\u0440\u0435 \u0438 \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0435\u0440\u0443 \u0432 NoSQL | ProHoster","og:description":".","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-zaglyanut-v-glaza-kassandre-i-ne-poteryat-pri-etom-dannye-stabilnost-i-veru-v-nosql","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":"2019-10-31T19:18:27+00:00","article:modified_time":"2019-10-31T19:18:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37585","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 18:29:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 14:06:01","updated":"2026-01-23 18:29:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=37585"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37585\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/28210"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=37585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=37585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=37585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}