{"id":41081,"date":"2020-02-05T21:30:11","date_gmt":"2020-02-05T18:30:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle"},"modified":"2020-02-05T21:30:11","modified_gmt":"2020-02-05T18:30:11","slug":"cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle","title":{"rendered":"Cassandra. Kuidas ellu j\u00e4\u00e4da, kui tead ainult Oracle'it","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere, Habr.<\/p>\n<p>Minu nimi on Misha Butrimov ja ma tahaksin r\u00e4\u00e4kida Cassandra'st. Minu jutt on kasulik neile, kes pole kunagi NoSQL andmebaasidega kokku puutunud \u2014 nende erip\u00e4ra ja peidetud probleemid, millest tuleks teada, on v\u00e4ga olulised. Ja kui oled n\u00e4inud ainult Oracle'it v\u00f5i m\u00f5nda muud relatsioonilist andmebaasi, v\u00f5ivad need teadmised sind p\u00e4\u00e4sta.<\/p>\n<p>Milles on Cassandra hea? See on NoSQL andmebaas, mis on projekteeritud ilma \u00fchegi t\u00f5rkepunktita ja mis skaleerub h\u00e4sti. Kui vajad mingeid terabaiti andmeid, siis lihtsalt lisad s\u00f5lmed ringi. Tahtsid laiendada veel \u00fchte andmekeskust? Lisad s\u00f5lmed klastrisse. Tahad suurendada t\u00f6\u00f6deldavat RPS-i? Lisad s\u00f5lmed klastrisse. See t\u00f6\u00f6tab ka tagasi. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/qiwi\/blog\/486800\/\"><img decoding=\"async\" alt=\"Cassandra. Kuidas ellu j\u00e4\u00e4da, kui tead ainult Oracle&#039;it\" src=\"\/wp-content\/uploads\/2020\/02\/a7d31475acbcf70581c296c712280c3d.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Milles veel on see hea? Sellel on suur v\u00f5ime k\u00e4sitleda hulgaliselt p\u00e4ringuid. Aga kui palju on palju? 10, 20, 30, 40 tuhat p\u00e4ringut sekundis \u2014 see on v\u00e4he. 100 tuhat p\u00e4ringut sekundis kirjutamiseks \u2014 ka see on v\u00e4he. On ettev\u00f5tteid, kes \u00fctlevad, et nad suudavad pidada 2 miljonit p\u00e4ringut sekundis. Talle peab vist uskuma. <\/p>\n<p>Ja p\u00f5him\u00f5tteliselt on Cassandra'l \u00fcks suur erinevus relatsioonilistest andmetest \u2014 see ei sarnane neile \u00fcldse. Ja seda on v\u00e4ga oluline meeles pidada.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>K\u00f5ik, mis n\u00e4eb v\u00e4lja sama, ei t\u00f6\u00f6ta sama moodi<\/h2>\n<p>\nKord k\u00fcsis minult kolleeg: \u201eSiin on CQL Cassandra p\u00e4ringute keel, kus on select lause, kus on where ja kus on and. Ma kirjutan t\u00e4hti, ja see ei t\u00f6\u00f6ta. Miks?\u201c. Kui suhelda Cassandra'ga nagu relatsioonilise andmebaasiga, siis on see ideaalne viis oma elu l\u00f5petamiseks. Ja ma ei propageeri seda, see on Venemaal keelatud. Lihtsalt projekteerid midagi valesti.<\/p>\n<p>N\u00e4iteks tuleb meile klient ja \u00fctleb: \u201eEhitage andmebaas seriaale v\u00f5i andmebaas retseptide kogumikuks. Meil on seal toidud koostisosadega v\u00f5i nimekiri seriaalidest ja nende n\u00e4itlejatest\u201c. Me vastame r\u00f5\u00f5msalt: \u201eTeeme!\u201c. See on vaid kaks baitit edasi saata, paar tabelit ja k\u00f5ik on valmis, k\u00f5ik t\u00f6\u00f6tab v\u00e4ga kiiresti ja usaldusv\u00e4\u00e4rselt. K\u00f5ik on suurep\u00e4rane, kuni kliendid ei tule ja \u00fctle, et koduperenaised lahendavad ka vastupidist \u00fclesannet: neil on nimekiri koostisosadest ja nad tahavad teada, millise toidu nad saavad valmistada. Siis oled sa hukkunud.<\/p>\n<p>K\u00f5ik on tingitud sellest, et Cassandra on h\u00fcbriidne andmebaas: see on samal ajal nii key-value kui ka salvestab andmeid laias veergudes. Kui r\u00e4\u00e4kida Java v\u00f5i Kotlin keeles, siis saaksime seda kirjeldada nii:<\/p>\n<p><code>Map&lt;RowKey, SortedMap&gt;<\/code><\/p>\n<p>See t\u00e4hendab kaarti, mille sees on veel \u00fcks sorteeritud kaart. Esimene v\u00f5tmeosa selles kaardis on Row key v\u00f5i Partition key \u2014 partitsioneerimisv\u00f5ti. Teine v\u00f5ti, mis on v\u00f5tmeosa juba sorteeritud kaardist, on Clustering key.<\/p>\n<p>Jaotuse illustreerimiseks joonistame kolm s\u00f5lme. N\u00fc\u00fcd on vaja m\u00f5ista, kuidas andmeid s\u00f5lmedesse jaotada. Sest kui me surume k\u00f5ik \u00fchte (neid v\u00f5ib olla n\u00e4iteks tuhat, kaks tuhat, viis \u2014 kuiv\u00f5rd soovite), siis see ei ole just v\u00e4ga jaotuse moodi. Seep\u00e4rast on meil vajalik matemaatiline funktsioon, mis tagastab arvu. Lihtsalt arvu, pika int, mis sureb mingisse vahemikku. Ja meil on \u00fcks s\u00f5lm, mis vastutab \u00fche vahemiku eest, teine \u2014 teise, n-nes \u2014 n-nda. <\/p>\n<p><img decoding=\"async\" alt=\"Cassandra. Kuidas ellu j\u00e4\u00e4da, kui tead ainult Oracle&#039;it\" src=\"\/wp-content\/uploads\/2020\/02\/aab4d3cf1f7a552fb3c4c1eb528508c6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee number saadakse hash-funktsiooni abil, mis rakendatakse just sellele, mida me nimetame Partition key. See on see veerg, mis on m\u00e4\u00e4ratud Primary key direktiivis, ja see on see veerg, mis on esimene ja k\u00f5ige olulisem v\u00f5tmeosa kaardis. See m\u00e4\u00e4rab, millised andmed l\u00e4hedusse satuvad. Tabel luuakse Cassandrasse peaaegu sama s\u00fcntaksiga nagu SQL-is: <\/p>\n<pre><code class=\"sql\">CREATE TABLE users ( \n\tuser_id uuid,\n\tname text,\n\tyear int,\n\tsalary float,\n\tPRIMARY KEY(user_id) \n\n)\n<\/code><\/pre>\n<p>Primary key koosneb antud juhul \u00fchest veerust, mis on samuti partitsioneerimisv\u00f5ti.<\/p>\n<p>Kuidas meil kasutajad jaotuvad? Osa l\u00e4heb \u00fchte s\u00f5lmesse, osa teise ja osa kolmandasse. Saame tavalise hash-tabeli, mis on ehk map, v\u00f5i siis Pythonis \u2014 s\u00f5naraamat, aga ka lihtne Key-value struktuur, millest saame lugeda k\u00f5iki v\u00e4\u00e4rtusi, lugeda ja kirjutada v\u00f5tme j\u00e4rgi.<\/p>\n<p><img decoding=\"async\" alt=\"Cassandra. Kuidas ellu j\u00e4\u00e4da, kui tead ainult Oracle&#039;it\" src=\"\/wp-content\/uploads\/2020\/02\/61f365562dd5a39358a1ffcb7ff537eb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Select: kui allow filtering muutub full scaniks, v\u00f5i kuidas mitte teha<\/h2>\n<p>\nKirjutame mingi select lause: <code>select * from users where userid = <\/code>. Tundub, et see on midagi sarnast Oracle'iga: kirjutame select, m\u00e4\u00e4rame tingimused ja k\u00f5ik t\u00f6\u00f6tab, kasutajad tulevad v\u00e4lja. Kuid kui valida n\u00e4iteks kasutaja kindla s\u00fcnniaasta j\u00e4rgi, kurdab Cassandra, et ta ei saa p\u00e4ringut t\u00e4ita. Sest tal ei ole aimugi, kuidas meil s\u00fcnniaastaga seotud andmed jaotuvad \u2014 tal on v\u00f5tmena ainult \u00fcks tegevus. Siis \u00fctleb ta: \"Olgu, ma saan ikkagi selle p\u00e4ringu t\u00e4ita. Lisage allow filtering.\" Me lisame direktiivi, k\u00f5ik t\u00f6\u00f6tab. Ja sel hetkel juhtub midagi kohutavat. <\/p>\n<p>Kui testime testandmetega, siis k\u00f5ik on suurep\u00e4rane. Kuid kui teete p\u00e4ringu tootmises, kus meil on n\u00e4iteks 4 miljonit kirjet, siis pole meiega h\u00e4sti. Sest allow filtering on direktiiv, mis lubab Cassandral koguda k\u00f5ik andmed sellest tabelist k\u00f5igilt s\u00f5lmedelt, k\u00f5ikelt <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/kompaniya\/data-centers\/\"   title=\"andmekeskustes\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4645\">andmekeskustes<\/a> (kui neid on palju selles klastris), ja alles siis filtreerida. See on analoogne Full Scan'iga ja ilmselt pole keegi sellest vaimustuses. <\/p>\n<p>Kui me vajaksime kasutajaid ainult identifikaatorite j\u00e4rgi, siis see sobiks meile. Kuid m\u00f5nikord peame kirjutama teisi p\u00e4ringuid ja seadma muud piirangud andmete valikule. Seega meenutame: k\u00f5ik see on meile kaart, millel on partitseerimise v\u00f5ti, kuid selle sees on sorteeritud kaart. <\/p>\n<p>Ja sellel on ka v\u00f5ti, mida me nimetame Clustering Key'iks. See v\u00f5ti koosneb omakorda veergudest, mille me valime, mille abil Cassandra m\u00f5istab, kuidas tema andmed f\u00fc\u00fcsiliselt j\u00e4rjestatakse ja paigutatakse igasse s\u00f5lme. Teisis\u00f5nu, mingi Partition key Clustering key \u00fctleb, kuidas andmed selle puu sisse paigutada, millisesse kohta nad seal asuvad.<\/p>\n<p>See on t\u00f5eliselt puu, seal kutsutakse lihtsalt v\u00f5rdlejate funktsiooni, millele anname teatud veergude komplekti objektina, ja see m\u00e4\u00e4ratakse ka veergude loendi kujul. <\/p>\n<pre><code class=\"sql\">CREATE TABLE users_by_year_salary_id (\n\tuser_id uuid,\n\tname text,\n\tyear int,\n\tsalary float,\n\tPRIMARY KEY((year), salary, user_id)\n<\/code><\/pre>\n<p>P\u00f6\u00f6rake t\u00e4helepanu Primary key direktiivile, mille esimeseks argumendiks (meie puhul aasta) on alati Partition key. See v\u00f5ib koosneda \u00fchest v\u00f5i mitmest veerust, see pole oluline. Kui veerge on mitu, tuleks see uuesti sulgudesse panna, et keele eelprotsessor saaks aru, et see on just Primary key, ja k\u00f5ik teised veerud on Clustering key. Samuti edastatakse need v\u00f5rdlejana selles j\u00e4rjekorras, milles nad on. See t\u00e4hendab, et esimene veerg on olulisem, teine - v\u00e4hem oluline ja nii edasi. Nagu me data class'ide puhul kirjutame, n\u00e4iteks equals v\u00e4ljad: loetleme v\u00e4ljad ja m\u00e4\u00e4rame, millised on suuremad ja millised v\u00e4iksemad. Cassandrases on see h\u00fcpoteetiliselt data class'i v\u00e4ljad, millele rakendatakse kirjutatud equals.<\/p>\n<h2>M\u00e4\u00e4rame sorteerimise, rakendame piiranguid<\/h2>\n<p>\nPeame meeles pidama, et sorteerimise j\u00e4rjekord (kahanev, kasvav, ei ole oluline) m\u00e4\u00e4ratakse samal hetkel, kui v\u00f5ti luuakse, ja hiljem seda muuta ei saa. See m\u00e4\u00e4rab f\u00fc\u00fcsiliselt, kuidas andmed sorteeritakse ja kus nad asuvad. Kui Clustering key v\u00f5i sorteerimise j\u00e4rjekorda tuleb muuta, tuleb luua uus tabel ja, \u00fcle kanda andmed. Praeguse tabeli puhul pole see v\u00f5imalik.<\/p>\n<p><img decoding=\"async\" alt=\"Cassandra. Kuidas ellu j\u00e4\u00e4da, kui tead ainult Oracle&#039;it\" src=\"\/wp-content\/uploads\/2020\/02\/25fc1ef7abb35c728fdc7381a201b79c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMe oleme t\u00e4itnud meie tabeli kasutajatega ja n\u00e4inud, et nad on esialgu j\u00e4rjestatud s\u00fcnniaasta j\u00e4rgi, ja siis iga s\u00f5lme sees palga ja kasutaja ID j\u00e4rgi. N\u00fc\u00fcd saame valida, rakendades piiranguid. <\/p>\n<p>Meie t\u00f6\u00f6tav <code>where, ja<\/code>, ja kasutajad j\u00e4\u00e4vad meile k\u00e4tte, ja k\u00f5ik on j\u00e4lle h\u00e4sti. Kuid kui proovime kasutada ainult osa Clustering key'st, veel v\u00e4hem olulist, siis Cassandra annab kohe teada, et ei leia meie mapis kohta, kus see objekt, millel need v\u00e4ljad v\u00f5rreldes on null, ja see, mille just m\u00e4\u00e4rasime - kus see asub. Pean j\u00e4lle k\u00f5ik andmed sellelt s\u00f5lmelt \u00fcles tooma ja filtreerima. See on analoogne Full Scan'iga s\u00f5lmes, see on halb.<\/p>\n<h2>Igas segaduses olukorras loo uus tabel<\/h2>\n<p>\nKui soovime kasutajaid hankida ID, vanuse v\u00f5i palga j\u00e4rgi, siis mida teha? Mitte midagi. Lihtsalt kasutage kahte tabelit. Kui on vaja hankida kasutajaid kolme erineva meetodi j\u00e4rgi, siis tabelite arv on kolm. Need ajad, mil me itahtsid ruumi k\u00f5vakettal s\u00e4\u00e4sta, on m\u00f6\u00f6das. See on k\u00f5ige odavam ressurss. See maksab palju v\u00e4hem kui vastusaeg, mis v\u00f5ib kasutajale saatuslik olla. Kasutajale on palju meeldivam saada midagi sekundi jooksul kui k\u00fcmne minutiga.<\/p>\n<p>Vahetame liigse ruumi, denormaliseeritud andmete vastu v\u00f5imaluse h\u00e4sti skaleeruda ja usaldusv\u00e4\u00e4rselt t\u00f6\u00f6tada. Tegelikult suudab klaster, mis koosneb kolmest andmekeskusest, milles igas on viis nodi, taluda \u00fche andmekeskuse t\u00e4ielikku kadumist, s\u00e4ilitades andmete vastuv\u00f5etava taseme (kui midagi ei kao kindlalt). Ja veel kaks nodi igas kahes \u00fclej\u00e4\u00e4nud. Ainult siis hakkavad probleemid ilmuma. See on \u00fcsna hea varundamine, see maksab paar-kolm liigset SSD-d ja protsessorit. Seet\u00f5ttu, et kasutada Cassandra't, mis ei ole kunagi SQL ja kus pole suhteid ega v\u00e4lisv\u00f5tmeid, tuleb teada lihtsaid reegleid.<\/p>\n<p>Kujundame k\u00f5ik p\u00e4ringu j\u00e4rgi. Peamine ei ole andmed, vaid see, kuidas rakendus nendega t\u00f6\u00f6tama hakkab. Kui tal on vaja erinevaid andmeid erinevate meetodite kaudu v\u00f5i samu andmeid erinevate meetodite kaudu saada, peame need panema niimoodi, et see sobiks rakendusele. Vastasel juhul l\u00e4heme Full Scan'i ja Cassandra ei too meile mingit eelist.<\/p>\n<p>Denormaliseeritud andmete kasutamine on norm. Unustame normaalsed vormid, meil ei ole enam relatsionaalseid baase. Paneme midagi 100 korda, see on 100 korda seal. See on ikkagi odavam kui l\u00f5ksu j\u00e4\u00e4da. <\/p>\n<p>Valime partitsioneerimise v\u00f5tmed nii, et need jaotuksid normaalselt. Me ei vaja, et meie v\u00f5tmete hulk satuks kitsasse vahemikku. Niisiis, s\u00fcnniaasta eespooltoodud n\u00e4ites on halb n\u00e4ide. Tegelikult on see hea, kui meie kasutajad on s\u00fcnniaasta j\u00e4rgi normaalselt jaotunud, ja halb, kui r\u00e4\u00e4gime 5. klassi \u00f5pilastest - seal ei toimi partitsioneerimine v\u00e4ga h\u00e4sti. <\/p>\n<p>Sorteerimine valitakse kord \u00fchel Clustering Key loomise etapil. Kui seda on vaja muuta, tuleb meie tabel teise v\u00f5tmega \u00fcle kanda.<\/p>\n<p>Ja k\u00f5ige olulisem: kui meil on vaja 100 erinevat viisi samade andmete saamiseks, t\u00e4hendab see, et meil on 100 erinevat tabelit.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/qiwi\/blog\/486800\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0448\u0430 \u0411\u0443\u0442\u0440\u0438\u043c\u043e\u0432, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e Cassandra. \u041c\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0442\u0435\u043c, \u043a\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0441 NoSQL-\u0431\u0430\u0437\u0430\u043c\u0438, \u2014 \u0443 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u043c\u043d\u0435\u0439, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c. \u0418 \u0435\u0441\u043b\u0438 \u043a\u0440\u043e\u043c\u0435 Oracle \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0432\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0438, \u044d\u0442\u0438 \u0432\u0435\u0449\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":41082,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-41081","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0448\u0430 \u0411\u0443\u0442\u0440\u0438\u043c\u043e\u0432, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e Cassandra.\" \/>\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\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle\" \/>\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\udd47Cassandra. \u041a\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u0440\u0435\u0442\u044c, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0435\u0448\u044c \u0442\u043e\u043b\u044c\u043a\u043e Oracle | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0448\u0430 \u0411\u0443\u0442\u0440\u0438\u043c\u043e\u0432, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e Cassandra.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle\" \/>\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-02-05T18:30:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-05T18:30:11+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\udd47Cassandra. Kuidas mitte surra, kui tead ainult Oracle'it | ProHoster","description":"Tere, Habr. Minu nimi on Misha Butrimov, tahaksin veidi r\u00e4\u00e4kida Cassandrast.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle","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\udd47Cassandra. \u041a\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u0440\u0435\u0442\u044c, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0435\u0448\u044c \u0442\u043e\u043b\u044c\u043a\u043e Oracle | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0448\u0430 \u0411\u0443\u0442\u0440\u0438\u043c\u043e\u0432, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e Cassandra.","og:url":"https:\/\/prohoster.info\/et\/blog\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle","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-02-05T18:30:11+00:00","article:modified_time":"2020-02-05T18:30:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"41081","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-03-01 00:24:40","updated":"2022-09-30 11:42:25","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\/41081","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=41081"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/41081\/revisions"}],"predecessor-version":[{"id":164523,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/41081\/revisions\/164523"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/41082"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=41081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=41081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=41081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}