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:
FORSTØRRE
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:
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: