{"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\/sl\/blog\/administrirovanie\/kak-zaglyanut-v-glaza-kassandre-i-ne-poteryat-pri-etom-dannye-stabilnost-i-veru-v-nosql","title":{"rendered":"Kako pogledati Kassandri v o\u010di in pri tem ne izgubiti podatkov, stabilnosti in vere v NoSQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kako pogledati Kassandri v o\u010di in pri tem ne izgubiti podatkov, stabilnosti in vere v NoSQL\" src=\"\/wp-content\/uploads\/2019\/08\/4845d37a9928f888639c4ebeb7807787.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Pravijo, da je vse v \u017eivljenju vredno poskusiti vsaj enkrat. In \u010de ste navajeni delati z relacijskimi podatkovnimi bazami, je spoznavanje NoSQL v praksi vredno, predvsem zaradi splo\u0161ne kulture. Sedaj, ob hitrem razvoju te tehnologije, obstaja veliko nasprotujo\u010dih si mnenj in vro\u010dih razprav na to temo, kar \u0161e dodatno pove\u010duje zanimanje.<br \/>\n\u010ce se poglobimo v bistvo vseh teh razprav, lahko opazimo, da nastajajo zaradi napa\u010dnega pristopa. Tisti, ki uporabljajo NoSQL baze ravno tam, kjer so potrebne, so zadovoljni in izkoristijo vse prednosti te re\u0161itve. Eksperimentatorji, ki se zana\u0161ajo na to tehnologijo kot na re\u0161itev za vse te\u017eave v situacijah, kjer ni primerna, do\u017eivljajo razo\u010daranje, saj izgubijo mo\u010dne strani relacijskih baz brez pridobivanja pomembnih koristi.<\/p>\n<p><\/p>\n<p>Povedal bom o na\u0161em izkustvu pri uvajanju re\u0161itve, ki temelji na podatkovni bazi Cassandra: s \u010dim smo se sre\u010dali, kako smo se zna\u0161li v te\u017ekih situacijah, ali smo uspeli pridobiti podporo od uporabe NoSQL in kje smo morali vlo\u017eiti dodatne napore\/sredstva.<br \/>\nIzhodi\u0161\u010dna naloga je bila zgraditi sistem, ki bele\u017ei klice v neko shrambo.<\/p>\n<p><\/p>\n<p>Na\u010delo delovanja sistema je naslednje. Na vhod prihajajo datoteke z dolo\u010denimi strukturami, ki opisujejo potek klica. Nato aplikacija zagotavlja shranjevanje te strukture v ustrezne stolpce. V nadaljevanju se shranjeni klici uporabljajo za prikaz informacij o porabi prometa za naro\u010dnike (obra\u010duni, klici, zgodovina stanja).<\/p>\n<p>\n<img decoding=\"async\" alt=\"Kako pogledati Kassandri v o\u010di in pri tem ne izgubiti podatkov, stabilnosti in vere v NoSQL\" src=\"\/wp-content\/uploads\/2019\/08\/c7b095dc8879011adb751c96427af512.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Zakaj smo izbrali Cassandro, je povsem razumljivo \u2014 pi\u0161e kot mitraljez, enostavno se skalira, je odporna na napake.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Torej, to je, kar nam je prineslo izku\u0161nje.<\/h2>\n<p><\/p>\n<p>Da, izpadla vozli\u0161\u010da ni tragedija. V tem je bistvo odpornosti Cassandre. Ampak <b>vozli\u0161\u010de je lahko aktivno in hkrati za\u010dne zni\u017eovati svojo u\u010dinkovitost.<\/b>. Kot se je izkazalo, to takoj vpliva na u\u010dinkovitost celotnega skladi\u0161\u010da.<\/p>\n<p><\/p>\n<p><b>Cassandra ne za\u0161\u010diti tam, kjer je Oracle re\u0161il s svojimi omejitvami.<\/b>. In \u010de avtor aplikacije tega vnaprej ni razumel, je pri\u0161el podvojeni vnos za Cassandro enako sprejemljiv kot izvirnik. Ko pride, ga vstavimo.<\/p>\n<p><\/p>\n<p>Brezpla\u010dna Cassandra 'iz \u0161katle' ni bila posebej dobro sprejeta s strani varnostnih strokovnjakov: <b>ni bele\u017eenja dejanj uporabnikov, pravice dostopa niso razmejene.<\/b>. Informacije o pozivima se odnose na li\u010dne podatke, \u0161to zna\u010di da sve poku\u0161aje da ih zatra\u017eimo ili promenimo, treba evidentirati s mogu\u0107no\u0161\u0107u kasnijeg audita. Tako\u0111e, treba biti svestan potrebe da se prava razdvoje na razli\u010dite nivoe za razli\u010dite korisnike. Obi\u010dni in\u017eenjer operacija i superadmin, koji slobodno mo\u017ee da obri\u0161e \u010ditav keyspace \u2013 to su razli\u010dite uloge, razli\u010dita odgovornost, kompetencije. Bez takvog razdvajanja prava pristupa, vrednost i celovitost podataka brzo \u0107e biti dovedena u pitanje, br\u017ee nego kod nivoa konzistentnosti ANY. <\/p>\n<p><\/p>\n<p>Nismo uzeli u obzir da su potrebne ozbiljne analize poziva, kao i periodi\u010dne probe pod raznim uslovima. Kako se izabrani zapisi kasnije planiraju da se bri\u0161u i ponovo pi\u0161u (u okviru zadatka moramo podr\u017eati proces a\u017euriranja podataka kada su izvorno neta\u010dno stigli u na\u0161 sistem), Cassandra nam ovde nije prijatelj. <b>Cassandra, kao pohranitelj \u2013 zgodno je tu ostaviti, ali se ne mo\u017ee lako ra\u010dunati.<\/b><\/p>\n<p><\/p>\n<p><b>Susreli smo se s problemom prenosa podataka u testne zone.<\/b> (5 \u010dvorova u testu naspram 20 u produkciji). Dump u ovom slu\u010daju ne\u0107e biti mogu\u0107.<\/p>\n<p><\/p>\n<p>Problem a\u017euriranja sheme podataka aplikacije koja zapisuje u Cassandru. <b>Povratak \u0107e stvoriti mnoge nadgrobne spomenike, \u0161to mo\u017ee nepredvidivo da uti\u010de na performanse.<\/b>. Cassandra je optimizovana za zapisivanje i pre nego \u0161to zapisuje, ne razmi\u0161lja previ\u0161e. Svaka operacija s postoje\u0107im podacima u njoj je tako\u0111e zapisivanje. Tj. bri\u0161u\u0107i suvi\u0161ne, samo \u0107emo stvoriti jo\u0161 vi\u0161e zapisa, i samo \u0107e deo njih biti ozna\u010den nadgrobnim spomenicima.<\/p>\n<p><\/p>\n<p>Timeout-i prilikom umetanja. Cassandra je odli\u010dna u zapisivanju, ali <b>ponekad ulazni tok mo\u017ee zna\u010dajno da je zbuni.<\/b>. To se de\u0161ava kada aplikacija po\u010dne da kru\u017ei oko nekoliko zapisa koje ne mo\u017ee da umetne iz nekog razloga. I trebat \u0107e nam pravi DBA koji \u0107e nadgledati gc.log, system i debug logove radi sporih upita, metrike o compaction pending.\n<\/p>\n<p><\/p>\n<p>Nekoliko data centara u klasteru. <b>Odakle \u010ditati i gde pisati?<\/b> <br \/>\nJe mogo\u010de lo\u010diti branje in pisanje? In \u010de ja, mora biti DC za pisanje ali branje bli\u017ee aplikaciji? In ali lahko pridemo do pravega split brain, \u010de napa\u010dno izberemo raven doslednosti? Veliko vpra\u0161anj, veliko neodkritih nastavitev, mo\u017enosti, ki bi jih radi preizkusili.\n<\/p>\n<p><\/p>\n<h2>Kako smo se odlo\u010dili<\/h2>\n<p><\/p>\n<p><b>Da node ne bi padal, smo onemogo\u010dili SWAP<\/b>. In zdaj, ko zmanjka pomnilnika, naj bi se node sesedel, ne pa da bi povzro\u010dal dolge gc premore.<\/p>\n<p><\/p>\n<p>Torej, na logiko v bazi podatkov se ve\u010d ne zana\u0161amo. <b>Razvijalci aplikacije se ponovno u\u010dijo in za\u010dnejo aktivno za\u0161\u010dititi svoj kodo.<\/b> Popolna, jasna lo\u010ditev shranjevanja in obdelave podatkov.<\/p>\n<p><\/p>\n<p><b>Kupili smo podporo od DataStax.<\/b> \u0160katlasta Cassandra se je prenehala razvijati (zadnji commit februarja 2018). Hkrati pa Datastax ponuja odli\u010dno storitev in veliko \u0161tevilo izbolj\u0161anih in prilagojenih re\u0161itev za obstoje\u010de IS.<\/p>\n<p><\/p>\n<p>\u0160e \u017eelim opozoriti, da Cassandra ni najbolj\u0161a za poizvedbe za izbiro. Seveda, CQL je velik korak naproti uporabnikom (v primerjavi s Trift). Ampak, \u010de imate cele oddelke, ki so navajeni na tako priro\u010dne povezave, svobodno filtriranje po katerem koli polju in mo\u017enosti optimizacije poizvedbe, in ti oddelki delajo na tem, da bi zaprli prito\u017ebe in nezgode, potem re\u0161itev na Cassandri zanje izgleda sovra\u017ena in glupa. In za\u010deli smo re\u0161evati vpra\u0161anje, kako naj na\u0161i kolegi izvajajo izbire. <\/p>\n<p><\/p>\n<p>Raziskovali smo dve mo\u017enosti. V prvi mo\u017enosti pi\u0161emo klice ne samo v C*, temve\u010d tudi v arhivsko bazo podatkov Oracle. V nasprotju z C* se v tej bazi podatkov hrani le klice za trenutni mesec (kar je dovolj globoko za primere pretarifikacije). Takoj pa se je pojavila naslednja te\u017eava: \u010de pi\u0161emo sinhrono, izgubimo vse prednosti C*, povezane s hitro vstavitvijo; \u010de pa asinhrono \u2013 ni zagotovila, da so vsi potrebni klici sploh pri\u0161li v Oracle. Edina prednost, a zelo velika, je ta, da za obratovanje ostaja enak znani PL\/SQL Developer, torej prakti\u010dno uresni\u010dujemo vzorec \u201eFasada\u201c. Alternativna mo\u017enost. Uresni\u010dimo mehanizem, ki izvozi klice iz C*, potegne dolo\u010dene podatke za obogatitev iz ustreznih tabel v Oracle, povezuje pridobljene izbrane podatke in nam izda rezultat, ki ga nato nekako uporabimo (vrnemo, ponovimo, analiziramo, ob\u010dudujemo). Slabosti: postopek je precej ve\u010dstadijski, poleg tega pa ni vmesnika za zaposlene v obratovanju.<\/p>\n<p><\/p>\n<p>Na koncu smo se vendarle odlo\u010dili za drugo mo\u017enost. <b>Za poizvedbe iz razli\u010dnih bank smo uporabili Apache Spark.<\/b> Bistvo mehanizma je bilo v Java kodi, ki na podlagi navedenih klju\u010dev (abonent, \u010das klica \u2013 klju\u010di razdelka) pridobiva podatke iz C* ter potrebne podatke za obogatitev iz katere koli druge baze podatkov. Nato jih pove\u017ee v svoji pomnilniku in izpi\u0161e rezultat v rezultate tabelo. Nad Sparkom smo narisali spletno vmesnik in tako je postalo povsem uporabno za obratovanje.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Kako pogledati Kassandri v o\u010di in pri tem ne izgubiti podatkov, stabilnosti in vere v NoSQL\" src=\"\/wp-content\/uploads\/2019\/08\/5754363569f159dd7b86972bb0cef732.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\u041f\u0440\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u043c-\u0442\u0435\u0441\u0442 \u0441\u043d\u043e\u0432\u0430 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041a\u0430\u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0447\u0435\u0440\u0435\u0437 Sstloader, \u0442\u0430\u043a \u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0437\u043e\u043d\u0435 \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0441 \u043f\u0440\u043e\u043c\u043e\u0432\u0441\u043a\u0438\u043c, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u043e\u0442 \u043d\u0435\u0433\u043e. \u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0442\u0435\u0441\u0442\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u043c\u0438: \u0442\u0430 \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0432 \u0442\u0435\u0441\u0442\u0435, \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u0438 \u0432\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u043c, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u0435\u0449\u0451 \u0440\u0430\u0437, \u043c\u044b \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043e\u0446\u0435\u043d\u0438\u043b\u0438 \u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c, \u0438 \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u2013 \u044d\u0442\u043e \u043d\u0435\u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432, \u0431\u044b\u0441\u0442\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u043c\u043e\u0432\u0441\u043a\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0432 \u0442\u0435\u0441\u0442. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u0430\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446, \u043f\u0440\u0438\u0447\u0435\u043c, \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u044b\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c <b>\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u0438\u0448\u0435\u043b \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c Spark, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0438 \u0441\u0442\u0430\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u043f\u0440\u043e\u043c-\u0442\u0435\u0441\u0442.<\/b><\/p>\n<p><\/p>\n<p><b>\u041d\u0430\u0448\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0434\u0435\u043f\u043b\u043e\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u043e\u0442\u043a\u0430\u0442\u043e\u0432.<\/b> \u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u043c\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u043a\u0430\u0442 \u043d\u0430 \u0442\u0435\u0441\u0442, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u0442\u0430\u043a \u0434\u043e\u0440\u043e\u0433\u0430. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u0440\u043e\u043f\u043d\u0443\u0442\u044c \u043a\u0435\u0439\u0441\u043f\u0435\u0439\u0441 \u0438 \u043d\u0430\u043a\u0430\u0442\u0438\u0442\u044c \u0432\u0441\u044e \u0441\u0445\u0435\u043c\u0443 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<p><\/p>\n<p>\u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u041a\u0430\u0441\u0441\u0430\u043d\u0434\u0440\u044b \u043d\u0443\u0436\u0435\u043d \u0434\u0431\u0430 \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d. <b>\u0412\u0441\u0435, \u043a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0438 \u043a\u0430\u043a \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/b> \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c DataStax OpsCenter (\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a), \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 Cassandra Driver (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u0432 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 C*, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u0432 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 C*, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f latency \u0438 \u0442. \u0434.), \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0441 \u041a\u0430\u0441\u0441\u0430\u043d\u0434\u0440\u043e\u0439.\n<\/p>\n<p><\/p>\n<p>Ko smo razmi\u0161ljali o prej\u0161njem vpra\u0161anju, smo spoznali, kje se lahko skriva na\u0161 glavni rizik. To so oblike prikaza podatkov, ki pridobivajo podatke iz ve\u010d neodvisnih poizvedb v skladi\u0161\u010du. Tako lahko pridobimo precej neskladne informacije. Vendar bi bil ta problem prav tako aktualen, tudi \u010de bi delali samo z enim podatkovnim centrom. Tako da je najbolj smiselno, da naredimo batch funkcijo za branje podatkov v zunanji aplikaciji, ki zagotavlja, da pridobimo podatke v istem \u010dasovnem obdobju. Kar zadeva lo\u010devanje med branjem in pisanjem z vidika zmogljivosti, nas je tu ustavil rizik, da bi ob morebitnem izgubljanju povezave med DC-ji lahko pridobili dva popolnoma neskladna klasterja.<\/p>\n<p><\/p>\n<p>Na koncu, v tem trenutku <b>smo se odlo\u010dili za raven skladnosti pri pisanju EACH_QUORUM in za branje LOCAL_QUORUM.<\/b><\/p>\n<p><\/p>\n<h2>Kratki vtisi in zaklju\u010dki<\/h2>\n<p><\/p>\n<p>Da bi ocenili dose\u017eeno re\u0161itev z vidika operativne podpore in potencialov nadaljnjega razvoja, smo se odlo\u010dili razmisliti, kje drugje bi lahko uporabili tovrstni razvoj.<\/p>\n<p><\/p>\n<p>\u010ce na hitro, potem ocenjevanje podatkov za programe tipa \"Pla\u010daj, ko ti ustreza\" (nalo\u017eimo v S* informacije, izra\u010dun na skriptah Spark), obravnavanje reklamacij z agregacijo po smereh, shranjevanje vlog in izra\u010dun po vlogi matrice dostopnih pravic uporabnikov. <\/p>\n<p><\/p>\n<p>Kot vidimo, je repertoar \u0161irok in raznolik. In \u010de bi se morali opredeliti med podporniki in nasprotniki NoSQL, bi se pridru\u017eili podpornikom, saj smo pridobili svoje prednosti, in prav tam, kjer smo jih pri\u010dakovali.<\/p>\n<p><\/p>\n<p>Tudi razli\u010dica Cassandre iz \u0161katle omogo\u010da horizontalno skaliranje v realnem \u010dasu, brez bole\u010din re\u0161evanja vpra\u0161anja pove\u010danja podatkov v sistemu. Uspe\u0161no smo izvedli zelo obremenitven mehanizem za izra\u010dun agregatov po klicih, ter lo\u010dili shemo in logiko aplikacije, in se znebili slabe prakse pisanja prilagojenih opravil in objektov v sami BAZI PODATKOV. Dobili smo mo\u017enost, da izberemo in nastavimo, za pospe\u0161itev, na katerih DC-jih bomo izvajali izra\u010dun, in na katerih zapisovanje podatkov, ter se zavarovali pred padci posameznih nod in celotnega DC-ja.<\/p>\n<p><\/p>\n<p>Ko novim projektima uporabljamo na\u0161o arhitekturo, pri \u010demer si \u017eelimo, da bi \u017ee z nekaterimi izku\u0161njami takoj upo\u0161tevali zgoraj opisane podrobnosti in prepre\u010dili nekatere napake ter omilili nekatere ostre kote, katerih se sprva nismo mogli izogniti.<\/p>\n<p><\/p>\n<p>Na primer, <b>pravo\u010dasno spremljati posodobitve same Kassandra<\/b>, ker je bilo kar nekaj te\u017eav, ki smo jih imeli, \u017ee znanih in popravljenih.<\/p>\n<p><\/p>\n<p><b>Ne namestiti tako baze podatkov kot Sparka na iste node<\/b> (ali strogo lo\u010diti glede na dovoljeno porabo virov), saj lahko Spark porabi ve\u010d RAM-a, kot je predvideno, in hitro bomo naleteli na te\u017eavo \u0161tevilka 1 z na\u0161ega seznama.<\/p>\n<p><\/p>\n<p><b>Izbolj\u0161ati nadzor in znanje o obratovanju \u017ee v fazi testiranja projekta. <\/b><b>Prvotno upo\u0161tevati \u010dim ve\u010d potencialnih uporabnikov na\u0161e re\u0161itve<\/b>, ker bo od tega na koncu odvisna struktura baze podatkov.<\/p>\n<p><\/p>\n<p>Ve\u010dkrat pregledati prejeto shemo z vidika potencialne optimizacije. Dolo\u010diti, katera polja je mogo\u010de serializirati. Razumeti, katere dodatne tabele moramo ustvariti, da bi \u010dim bolj pravilno in optimalno upo\u0161tevali in nato posredovali zahtevane informacije (na primer, ob upo\u0161tevanju, da iste podatke lahko shranjujemo v ve\u010d tabelah, ob upo\u0161tevanju razli\u010dnih razdelitev po razli\u010dnih kriterijih, lahko znatno prihranimo procesorski \u010das pri poizvedbah za branje).<\/p>\n<p><\/p>\n<p>Ni slabo <b>takoj predvideti namestitev TTL in \u010di\u0161\u010denje zastarelih podatkov.<\/b><\/p>\n<p><\/p>\n<p>Pri izvozu podatkov iz Kassandra <b>logika aplikacije mora delovati po na\u010delu FETCH, da se ne nalo\u017eijo vse vrstice v pomnilnik naenkrat, ampak se izbirajo po paketih.<\/b><\/p>\n<p><\/p>\n<p>\u017deleno je pred prenosom projekta na opisano re\u0161itev <b>preveriti odpornost sistema, s serijo crash testov<\/b>, kot so izguba podatkov v enem podatkovnem centru, obnova po\u0161kodovanih podatkov v nekem obdobju, padci omre\u017eja med podatkovnimi centri. Tak\u0161ni testi ne samo, da omogo\u010dajo oceno prednosti in slabosti predlagane arhitekture, temve\u010d tudi dajo dobro ogrevalno prakso in\u017eenirjem, ki jih izvajajo, pridobljena ve\u0161\u010dina pa ne bo odve\u010d, \u010de se bodo napake sistema ponovile v praksi.<\/p>\n<p><\/p>\n<p>\u010de se ukvarjamo s kriti\u010dnimi informacijami (kot so podatki za obra\u010dunavanje, izra\u010dun dolgov naro\u010dnikov), je pomembno, da posvetimo pozornost orodjem, ki omogo\u010dajo zmanj\u0161anje tveganj, ki izhajajo iz zna\u010dilnosti SGBD. Na primer, uporabite orodje nodesync (Datastax) in razvijte optimalno strategijo njegove uporabe, da <b>za zagotovitev doslednosti ne ustvarimo prekomernega obremenitve na Cassandri<\/b> in jo uporabljamo samo za dolo\u010dene tabele v dolo\u010denem obdobju.<\/p>\n<p><\/p>\n<p>No, po \u0161estih mesecih \u017eivljenja s Cassandro? Na splo\u0161no ni nere\u0161enih te\u017eav. Tudi resnih napak in izgube podatkov nismo dopustili. Da, morali smo razmisliti o kompenzaciji nekaterih te\u017eav, ki prej niso nastale, vendar to na koncu ni bistveno vplivalo na na\u0161o arhitekturno re\u0161itev. \u010ce \u017eelite in se ne bojite preizkusiti nekaj novega, hkrati pa se ne \u017eelite preve\u010d razo\u010darati, se pripravite na to, da brezpla\u010dno ni ni\u010d. Raziskovati, preu\u010devati dokumentacijo in zbirati svoje individualne izku\u0161nje bo treba ve\u010d kot v stari dedi\u0161\u010dini, in nobena teorija ne more vnaprej povedati, katere izku\u0161nje \u010dakajo prav vas.<\/p>\n<p>Izvor: <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.4 - 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\/sl\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\/sl\/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\udd47Kako pogledati Cassandri v o\u010di in pri tem ne izgubiti podatkov, stabilnosti in vere v NoSQL | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/sl\/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":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/37585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=37585"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/37585\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/28210"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=37585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=37585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=37585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}