Innehållsförteckning
I tidigare tutorials gick vi helt in med CQL och hur det hjälper oss att hantera Cassandra, såg vi de grundläggande operationerna för nyckelutrymmen och tabellerna i Cassandra, kan vi tillämpa dem för att skapa en initial struktur i databasen, men det finns en avsevärd mängd avancerade koncept som vi behöver veta för att få ut det mesta av Cassandra.Dessa koncept eller egenskap att kalla dem på något sätt gör att vi kan uppnå olika funktioner i våra tabeller, vilket ger oss en rad möjligheter som är mycket större än resten av de andra. NoSQL -databas.
Tidigare skapade vi några tabeller och använde värden som text eller datum för våra kolumner, men detta är inte allt det CQL har tillgänglig, låt oss se vilka typer av data vi har för vår verksamhet:
asciiUS-ASCII teckensträng.
bigintEtt 64-bitars långt heltal.
klickDatatyp uttryckt som en hexadecimal i kommandokonsolen för CQLDessutom har den ingen validering och är baserad på godtyckliga byte.
boolesktDen klassiska booleska datatypen där dess värden kan vara sanna eller falska.
diskencounter är en ny datatyp för oss som kommer från relationsvärlden och indikerar att den är 64-bitars distribuerad.
decimal-En annan typ av data som vi kan känna igen, vilket ger oss decimalprecision för vår information.
dubbelFlytpunktdatatyp men baserad på 64 bitar.
flytaLiksom den föregående är det en datatyp med flytande punkter men baserad på 32 bitar.
inetDenna typ är ganska speciell och mycket användbar samtidigt och tillåter oss att lagra en rad tecken i en IP -adress, den stöder både formatet IPV4 Vad IPV6.
intDen klassiska heltalstypen som stöder nummer upp till 32 bitar.
listaEn annan typ av data som gör sin debut i Cassandra och gör att vi kan lagra en beställd samling element.
KartaGilla -listan är en annan typ av ny data, och den tillåter oss att lagra en associerad matris, vilket är mycket användbart för applikationsutveckling.
uppsättningI likhet med listdatatypen lagrar den en samling artiklar men i ingen specifik ordning.
textLagrar en kodad teckensträng.
tidsstämpelDatatyp som lagrar datum och tid, kodat som ett 8-byte heltal.
varintPrecisionsdatatyp för godtyckliga heltal.
Som vi kan se finns det många typer av data som vi kan känna igen om vi kommer från relationsvärlden, till exempel andra som vi kommer att se för första gången och som gör Cassandra sticker ut över andra databaser.
I Cassandra vi har inte bara datatyper för våra tabeller, tack vare CQL Vi kan tilldela tabellerna i våra databasegenskaper som hjälper oss enormt i underhålls- och utvecklingsuppgif.webpter, låt oss se vad vi har tillgängligt.
CacharDen här egenskapen ger oss cacheminneoptimering. De tillgängliga nivåerna för den här fastigheten är där eller alla, nycklar_ bara eller bara nycklar, rader_ bara eller bara rader och ingen eller ingen. Alla alternativ är dock ganska användbara row_only måste användas med försiktighet som Cassandra lägg en betydande mängd data i minnet när det alternativet används.
KommentarEtt alternativ som finns i relationsmodellen och används av administratörer eller utvecklare för att göra anteckningar och markera viktiga detaljer i tabeller.
KomprimeringDenna egenskap gör det möjligt att definiera strategin för hantering av mynta, kan vara av följande typer: Den första Storlek som utlöses när tabellen passerar en gräns, är fördelen med att använda denna strategi att den inte försämrar skrivprestandan, men det har en nackdel att den ibland använder dubbelt så stor som data på disken, vilket resulterar i dålig prestanda läsning. Den andra strategin är LeveledCompaction och det fungerar på olika nivåer över tiden, sammanfogar bord med längre sådana, vilket resulterar i ganska bra läsprestanda.
KompressionDen här egenskapen avgör hur informationen kommer att komprimeras. Vi kan välja att få fördelar i hastighet eller utrymme, där ju högre hastighet, desto mindre diskutrymme sparas.
Gc_grace_secondsDen här egenskapen definierar väntetiden för att ta bort informationen från gravstenarna. Som standard är det 10 dagar.
Populate_io_cache_on_flushDen här egenskapen är inaktiverad som standard, och vi bör bara aktivera den om vi hoppas att all information kommer att passa i cacheminnet.
Read_repair_chanceEn mycket intressant egenskap som indikerar ett tal mellan 0 och 1,0 som anger sannolikheten för att reparera informationen när beslutsföretaget inte nås. Standardvärdet är 0,1.
Replicate_on_writeDen här egenskapen gäller endast tabeller av typen disken. När de definieras skriver kopior till alla berörda repliker, utan att ignorera den angivna konsistensnivån.
Så vi vet redan vad vi har, både när det gäller datatyper och egenskaper, det är dags att sedan tillämpa några av de lärda sakerna på våra tabeller i Cassandra.
Först ska vi skapa en enkel tabell som vi kommer att tillämpa kommentaregenskapen på, låt oss se syntaxen som vi kommer att använda för den:
SKAPA TABELL -artiklar (textrubrik, textinnehåll, textkategori, primärnyckel (titel)) MED kommentar = 'Tabell för att lagra artikelinformation';Vi öppnar vår kommandokonsol CQL och vi skapar vårt bord med den nämnda egenskapen, låt oss se hur det ser ut:
Som vi redan vet returnerar kommandokonsolen ingenting förutom att det inte finns något fel, men om vi vill se dessa ändringar kan vi gå till vår OpsCenter och kontrollera att allt har gått rätt:
FÖRSTORA
Som vi kan se kan vi se vår kommentar och andra egenskaper med deras standardvärden. Det är viktigt att nämna att definitionen av resten av fastigheterna i Cassandra det är ganska enkelt, som vi kunde se med föregående exempel, med hjälp av syntaxen MED vi kan göra det utan problem.Vi kommer att utföra ett annat exempel där vi ska definiera egenskaperna kompression Y packning men för detta är det viktigt att veta att de har en serie subalternativ för deras användning, låt oss se för kompression som vi borde veta:
Sstable_compressionDet här alternativet anger komprimeringsalgoritmen som ska användas, dess värden är: LY4Kompressor, SnappyKompressor, Y DeflateCompressor.
Chunck_length_kbTabeller komprimeras av block. Längre värden ger generellt bättre komprimering men ökar storleken på den information som ska läsas. Som standard är detta alternativ inställt på 64 kb.
Manipulering av komprimeringsalternativ kan leda till en betydande prestandahöjning, inklusive många implementeringar av Cassandra De har de standardvärdena, men för perfektion är det nödvändigt att använda dessa värden. Låt oss nu se vad vi måste veta packning:
AktiveradAvgör om egenskapen körs i tabellen, men som standard har alla egenskaper packning aktiverad.
KlassHär definierar vi vilken typ av strategi för hantering av tabellerna.
min_tröskelDetta värde är tillgängligt med strategin Storlek y representerar det minsta antal tabeller som behövs för att starta en komprimeringsprocess. Den definieras som standard vid 4.
max_tröskelFinns på samma sätt i strategin Storlek y definierar det maximala antalet tabeller som bearbetas i kompakten. Den är som standard definierad till 32.
Detta är några av de viktigaste alternativen för dessa egenskaper, det som är viktigt att nämna är att för definitionen av dessa alternativ måste vi använda en syntax JSON För att vara giltig, låt oss se ett exempel på inkluderingen av dessa två egenskaper:
SKAPA TABELL table_for_properties (int id, textnamn, textegenskap, varintnummer, PRIMARY KEY (id)) WITHcompression = {'sstable_compression': 'DeflateCompressor', 'chunk_length_kb': 64} ANDcompaction = {'class': 'SizeTieredCompactionSateg 'min_tröskel': 6};Som vi kan se har vi ändrat typen av komprimering och vi har definierat storleken för den, dessutom för packning vi har lämnat den vanliga strategin med värdet klass och vi har definierat min_tröskel som 6 ökade standardvärdet så här, för att avsluta låt oss se hur det ser ut när vi kör det i vår kommandokonsol:
I den senaste handledningen kunde vi se att dessa som ett resultat av att definiera mer än en primär nyckel skapas som klustring av nycklar och berätta vägen Cassandra sorterar informationen, som standard är ordningen definierad i stigande ordning och att göra en fråga i fallande ordning kan orsaka prestandaproblem, men Cassandra har en lösning för alla problem och det är med meningen KLUSTERING ***** BY. Låt oss se hur du använder det.
SKAPA TABELL order_users (användartext, datumstämpel, löneskift, avdelningstext, handledartext, primär nyckel (användare, datum)) MED KLUSTERING ***** BY (datum DESC);Låt oss köra vår syntax i kommandokonsolen och se hur den ser ut:
Som vi kunde se var det ganska enkelt att lösa detta problem med bara en enkel rad, men ännu viktigare, vi kunde utöka vår kunskap när det gäller hantering av tabeller i Cassandra, som vi avslutar den här självstudien med, där vi har täckt allt vi behöver veta för att optimera bordet Cassandra.