Avansert bordhåndtering i Cassandra

Innholdsfortegnelse
I tidligere opplæringsprogrammer gikk vi helt inn med CQL og måten den hjelper oss med å administrere Cassandra, så vi de grunnleggende operasjonene for nøkkelrom og tabellene i Cassandra, kan vi bruke dem for å lage en innledende struktur i databasen, men det er en betydelig mengde avanserte konsepter som vi trenger å vite for å få mest mulig ut av Cassandra.
Disse konseptene eller egenskapene til å kalle dem på en eller annen måte, lar oss oppnå forskjellige funksjoner i tabellene våre, noe som gir oss en rekke muligheter som er mye større enn resten av de andre. NoSQL -database.
Tidligere har vi laget noen tabeller og brukt verdier som tekst eller dato for kolonnene våre, men dette er ikke alt det CQL har tilgjengelig, la oss se hvilke typer data vi har for operasjonene våre:
asciiUS-ASCII tegnstreng.
bigintEn 64-bits lang heltallsverdi.
klattDatatype uttrykt som en heksadesimal i kommandokonsollen til CQLI tillegg har den ingen validering og er basert på vilkårlige byte.
boolskDen klassiske boolske datatypen der verdiene kan være sanne eller usanne.
diskcounter er en ny datatype for oss som kommer fra relasjonsverdenen og indikerer at den er 64-biters distribuert.
desimalEn annen type data som vi kan gjenkjenne, som gir oss desimal presisjon for informasjonen vår.
dobbeltDatatype flytende punkt, men basert på 64 bits.
flyteSom den forrige, er det en flytende datatype, men basert på 32 bits.
inetDenne typen er ganske spesiell og veldig nyttig på samme tid og lar oss lagre en rekke tegn på en IP -adresse, den støtter både formatet IPV4 Hva IPV6.
intDen klassiske heltall datatypen som støtter tall på opptil 32 bits.
listeEn annen type data som debuterer i Cassandra og lar oss lagre en bestilt samling av elementer.
kartSom liste er det en annen type nye data, og den lar oss lagre en assosiativ matrise, som er veldig nyttig for applikasjonsutvikling.
settI likhet med listedatatypen lagrer den en samling av varer, men i ingen bestemt rekkefølge.
tekstLagrer en kodet tegnstreng.
tidsstempelDatatype som lagrer dato og klokkeslett, kodet som et 8-byte heltall.
varintPresisjonsdatatype for vilkårlige heltall.
Som vi kan se, er det mange typer data som vi kan gjenkjenne hvis vi kommer fra relasjonsverdenen, for eksempel andre som vi vil se for første gang, og som gjør Cassandra skiller seg ut over andre databaser.
I Cassandra Vi har ikke bare datatyper for tabellene våre, takket være CQL Vi kan tilordne tabellene i våre databaseegenskaper som hjelper oss enormt i vedlikeholds- og utviklingsoppgaver, la oss se hva vi har tilgjengelig.
CachingDenne egenskapen gir oss optimalisering av hurtigminnet. Nivåene som er tilgjengelige for denne eiendommen er der eller alle, nøkler_ bare eller bare nøkler, bare rader eller bare rader og ingen eller ingen. Alle alternativene er imidlertid ganske nyttige bare rad må brukes med forsiktighet som Cassandra lagre en betydelig mengde data i minnet når dette alternativet brukes.
KommentarEt alternativ som er tilstede i relasjonsmodellen, og brukes av administratorer eller utviklere til å lage notater og markere viktige detaljer i tabeller.
KomprimeringDenne egenskapen gjør det mulig å definere strategien for å administrere mynte, kan være av følgende typer: Den første Størrelse som utløses når tabellen passerer en grense, er fordelen med å bruke denne strategien at den ikke forringer skriveytelsen, men det har en ulempe at den av og til bruker dobbelt så stor som dataene på disken, noe som resulterer i dårlig ytelse lesning. Den andre strategien er Nivåkomprimering og det fungerer på forskjellige nivåer over tid, og kombinerer tabeller med lengre, noe som resulterer i ganske god leseytelse.
KomprimeringDenne egenskapen bestemmer hvordan informasjonen skal komprimeres. Vi kan velge å oppnå fordeler i hastighet eller plass, der jo høyere hastighet, jo mindre diskplass er lagret.
Gc_grace_secondsDenne egenskapen definerer ventetiden for å fjerne informasjonen fra gravsteinene. Som standard er det 10 dager.
Populate_io_cache_on_flushDenne egenskapen er deaktivert som standard, og vi bør bare aktivere den hvis vi håper at all informasjon vil passe inn i hurtigminnet.
Read_repair_chanceEn veldig interessant egenskap som indikerer et tall mellom 0 og 1,0 som angir sannsynligheten for å reparere informasjonen når beslutningsdyktigheten ikke er nådd. Standardverdien er 0,1.
Replicate_on_writeDenne egenskapen gjelder bare for tabeller av typen disk. Når de er definert, skriver kopier til alle berørte kopier, og ignorerer det angitte konsistensnivået.
Så vi vet allerede hva vi har, både når det gjelder datatyper og egenskaper, er det på tide å bruke noen av de tingene vi har lært på tabellene våre i Cassandra.
Først skal vi lage en enkel tabell som vi vil bruke kommentaregenskapen til, la oss se syntaksen som vi vil bruke for den:
 SKAP TABELL -artikler (teksttittel, tekstinnhold, tekstkategori, primærnøkkel (tittel)) MED kommentar = 'Tabell for lagring av artikkelinformasjon';
Vi åpner kommandokonsollen CQL og vi lager bordet vårt med den nevnte eiendommen, la oss se hvordan det ser ut:

Som vi allerede vet, returnerer kommandokonsollen ingenting, bortsett fra at det ikke er noen feil, men hvis vi vil se disse endringene, kan vi gå til vår OpsCenter og bekreft at alt har gått som det skal:

FORSTØRRE

Som vi kan se, kan vi se vår kommentar og andre eiendommer med standardverdiene. Det er viktig å nevne at definisjonen av resten av eiendommene i Cassandra det er ganske enkelt, som vi kunne se med det forrige eksemplet, ved å bruke syntaksen MED vi kan gjøre det uten problemer.
Vi skal utføre et annet eksempel der vi skal definere egenskapene kompresjon Y komprimering men for dette er det viktig å vite at de har en rekke underalternativer for bruk, la oss se etter kompresjon som vi burde vite:
Sstable_compressionDette alternativet spesifiserer komprimeringsalgoritmen som skal brukes. Verdiene er: LY4Kompressor, SnappyKompressor, Y DeflateCompressor.
Chunck_length_kbTabeller komprimeres av blokker. Lengre verdier gir generelt bedre komprimering, men øker størrelsen på informasjonen som skal leses. Som standard er dette alternativet satt til 64 kb.
Manipulering av komprimeringsalternativer kan føre til en betydelig ytelsesøkning, inkludert mange implementeringer av Cassandra De har standardverdiene, men for perfeksjon er det nødvendig å bruke disse verdiene. La oss se hva vi må vite nå komprimering:
AktivertBestemmer om egenskapen skal kjøres i tabellen, men som standard har alle egenskapene komprimering aktivert.
KlasseHer vil vi definere typen strategi for håndtering av tabellene.
min_grenseDenne verdien er tilgjengelig med strategien Størrelse y representerer minimum antall tabeller som trengs for å starte en komprimeringsprosess. Det er definert som standard på 4.
maks_grenseTilgjengelig på samme måte i strategien Størrelse y definerer det maksimale antallet bord som er behandlet i kompakten. Den er definert som standard på 32.
Dette er noen av de viktigste alternativene for disse egenskapene. Det som er viktig å nevne er at for definisjonen av disse alternativene må vi bruke en syntaks JSON For å være gyldig, la oss se et eksempel på inkludering av disse to egenskapene:
 CREATE TABLE table_for_properties (int id, text name, text property, varint number, PRIMARY KEY (id)) WITHcompression = {'sstable_compression': 'DeflateCompressor', 'chunk_length_kb': 64} ANDcompaction = {'class': 'SizeTieredCompactionSateg 'min_threshold': 6};
Som vi kan se har vi endret komprimeringstype, og vi har definert størrelsen for den, i tillegg for komprimering vi har forlatt den vanlige strategien med verdien klasse og vi har definert min_grense like 6 økte standardverdien slik, for å fullføre, la oss se hvordan dette ser ut når vi kjører det i kommandokonsollen:

I den siste opplæringen kunne vi se at disse er opprettet som et resultat av å definere mer enn en primærnøkkel gruppering av nøkler og fortell oss veien Cassandra sorterer informasjonen, som standard er rekkefølgen definert i stigende rekkefølge, og å spørre i synkende rekkefølge kan forårsake ytelsesproblemer, men Cassandra har en løsning på ethvert problem, og det er med setningen KLASTERING ***** AV. La oss se hvordan du bruker det.
 OPPRETT TABELL beordret_brukere (brukertekst, dato tidsstempel, lønnsflyt, avdelingstekst, veiledertekst, PRIMÆR NØKKEL (bruker, dato)) MED KLUSTERING ***** BY (dato DESC);
La oss kjøre syntaksen i kommandokonsollen og se hvordan den ser ut:

Som vi kunne se, var det ganske enkelt å løse dette problemet med bare en enkel linje, men enda viktigere var det at vi kunne utvide kunnskapen vår når det gjelder håndtering av bord i Cassandra, som vi fullfører denne opplæringen med, der vi har dekket alt vi trenger å vite for optimal bordopprettelse i Cassandra.
wave wave wave wave wave