Cassandra CQL-taulukko: esimerkki luomisesta, muokkaamisesta ja katkaisemisesta

⚡ Älykäs yhteenveto

Cassandra Taulukkotoiminnot kattavat luomisen, muuttamisen ja poistamisenpingja sarakeperheiden katkaiseminen CQL:llä. Tällä sivulla selitetään jokainen komento, kolme ensisijaista avainmuotoa, jotka määrittävät datan jakautumisen, sekä rivien ja taulukon poistamisen väliset erot.

  • 🏗️ Luo taulukko: Taulukko tarvitsee avainavaruuden, sarakemääritelmät ja ensisijaisen avainlausekkeen, joka määrittää jakauman ja lajittelujärjestyksen.
  • 🔑 Yksi ensisijainen avain: Yksi sarake toimii osioavaimena, joten jokainen kyseisen arvon rivi päätyy samaan solmuun.
  • 🧩 Yhdistetty ensisijainen avain: Ensimmäinen sarake osioituu, loput sarakkeet ryhmittelevät ja lajittelevat rivejä osion sisällä.
  • 🧮 Yhdistelmäosioavain: Kahden sarakkeen sulkeminen jakaa ylisuuren osion moneen pienempään osioon.
  • ✏️ Muuta rajoja: Sarakkeita voi lisätä tai poistaa, mutta ensisijaisia ​​avainsarakkeita ei voi koskaan muuttaa.
  • 🗑️ Pudota vs. katkaise: Drop poistaa skeeman ja tiedot; truncate tyhjentää jokaisen rivin, mutta säilyttää taulukkomääritelmän.

Cassandra Taulukon luonti Muuta pudotusta

Syntaksi Cassandra kyselykieli (CQL) muistuttaa SQL Kieli.

Kuinka luoda taulukko sisään Cassandra

Sarakeperhe sisään Cassandra on samanlainen kuin RDBMS-taulukko. Sarakeperhettä käytetään tietojen tallentamiseen.

Komentoa "Luo taulukko" käytetään sarakeperheen luomiseen Cassandra.

Syntaksi

CREATE TABLE KeyspaceName.TableName (
    ColumnName DataType,
    ColumnName DataType,
    ColumnName DataType,
    PRIMARY KEY (ColumnName)
) WITH PropertyName = PropertyValue;

1. Ensisijainen avain: On olemassa kahdenlaisia ensisijainen avain.

  • Yksi ensisijainen avain: Yksi ensisijainen avain määritetään seuraavalla syntaksilla.

Syntaksi

PRIMARY KEY (ColumnName)

Yhdessä ensisijaisessa avaimessa on vain yksi sarake. Tätä saraketta kutsutaan myös osiointiavaimeksi. Tiedot osioidaan kyseisen sarakkeen perusteella. Tiedot levitetään eri solmuille osioavaimen perusteella.

2. Yhdistetty ensisijainen avain: Yhdistetty ensisijainen avain määritetään seuraavalla syntaksilla.

Syntaksi

PRIMARY KEY (ColumnName1, ColumnName2, ...)

Yllä olevassa syntaksissa SarakkeenNimi1 on osiointiavain ja SarakkeenNimi2 on Clusteravain. Tiedot osioidaan sarakkeenNimi1 perusteella ja tiedot klusteroidaan SarakkeenNimi2 perusteella. Clustering on prosessi, joka lajittelee tiedot osiossa.

3. Yhdistetty osiointiavain: Yhdistetty osiointiavain määritetään seuraavalla syntaksilla.

Syntaksi

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

Yllä olevassa syntaksissa ColumnName1 ja ColumnName2 ovat yhdistettyjä osioavaimia. Data osioidaan sekä ColumnName1- että ColumnName2-sarakkeiden perusteella ja data klusteroidaan ColumnName3-sarakkeen perusteella. Jos yhdellä osiolla on liikaa dataa, käytetään yhdistettyä osioavainta. Yhdistetyn osioavaimen avulla luodaan useita osioita datalle.

  • Clausen kanssa

Lauseella määritetään mikä tahansa ominaisuus ja sen arvo määritetylle taulukolle. Esimerkiksi jos haluat pakata Cassandra taulukon tiedot. Voit asettaa pakkausominaisuuden määrittämällä pakkausalgoritmiominaisuuden arvon "With"-lausekkeessa. Sama lauseke asettaa myös CLUSTERING ORDER BY -lausekkeen kääntämään klusterointisarakkeen lajittelusuunnan ja default_time_to_live -lausekkeen vanhenemaan jokaisen rivin automaattisesti.

esimerkki

Tässä on komennon "Create table" suorittaminen, joka luo taulukon nimen "Student" avaintilaan "Yliopisto".

Cassandra Luo taulukko

CREATE TABLE University.Student (
    RollNo int,
    Name text,
    dept text,
    PRIMARY KEY (RollNo)
);

Kun komennon 'Create table' suorittaminen on onnistunut, avainavaruuteen 'University' luodaan taulukko 'Student' sarakkeilla RollNo, Name ja dept. RollNo on ensisijainen avain. RollNo on myös osioavain, joten jokainen opiskelija käyttää omaa yksirivistä osiota.

Cassandra Vaihtopöytä

Komentoa Muuta taulukkoa käytetään sarakkeen pudotukseen, uuden sarakkeen lisäämiseen, sarakkeen nimen muuttamiseen, sarakkeen tyypin muuttamiseen ja taulukon ominaisuuksien muuttamiseen.

Syntaksi

Seuraava on komennon "Alter Table" syntaksi.

ALTER TABLE KeyspaceName.TableName
    ADD ColumnName ColumnDataType;

ALTER TABLE KeyspaceName.TableName
    DROP ColumnName;

ALTER TABLE KeyspaceName.TableName
    RENAME ColumnName TO NewColumnName;

ALTER TABLE KeyspaceName.TableName
    WITH PropertyName = PropertyValue;

Jokainen lomake annetaan erillisenä lausuntona. Nykyisessä lainsäädännössä on kaksi rajoitusta. Cassandra julkaisut: olemassa olevan sarakkeen tietotyyppiä ei voi enää muuttaa, ja RENAME toimii vain ensisijaisen avaimen klusterointisarakkeessa.

esimerkki

Tässä on tilannekuva komennosta 'Alter Table', joka lisää uuden sarakkeen taulukkoon Opiskelija.

Cassandra Vaihtopöytä

ALTER TABLE University.Student ADD Semester int;

Kun komennon 'Alter Table' on suoritettu onnistuneesti, uusi sarake 'Semester', jossa on 'int'-tietotyyppi, lisätään taulukkoon Student.

Tässä on kuvakaappaus, joka näyttää päivitetyn opiskelijataulukon.

Cassandra Vaihtopöytä

Cassandra Pudota taulukko

Komento 'Pudota taulukko' pudottaa määritetyn taulukon, mukaan lukien kaikki tiedot avainavaruudesta. Ennen pudotustaping pöytä, Cassandra ottaa tilannekuvan tiedoista, ei skeemasta varmuuskopiona.

Syntaksi

DROP TABLE IF EXISTS KeyspaceName.TableName;

esimerkki

Tässä on tilannekuva suoritetusta komennosta 'Drop Table', joka pudottaa taulukon opiskelijan avaintilasta 'Yliopisto'.

Cassandra Pudota taulukko

DROP TABLE University.Student;

Kun komento "Poista taulukko" on suoritettu onnistuneesti, taulukko Student pudotetaan avaintilasta University.

Tässä on tilannekuva, joka näyttää virheen, jonka palauttaa Cassandra kun yritettiin käyttää opiskelijataulukkoa, jota ei ole olemassa.

Cassandra Pudota taulukko

Cassandra Katkaise taulukko

Komento "Truncate table" poistaa kaikki tiedot määritetystä taulukosta. Ennen tietojen katkaisemista, Cassandra ottaa tilannekuvan tiedoista varmuuskopioksi.

Syntaksi

TRUNCATE KeyspaceName.TableName;

esimerkki

Taulukossa on kolme tietuetta Opiskelija. Nämä ovat taulukon tietueita.

Cassandra Katkaise taulukko

Tässä on tilannekuva suoritetusta komennosta "Truncate table", joka poistaa kaikki tiedot taulukosta Opiskelija.

Cassandra Katkaise taulukko

Kun komento "Truncate Table" on suoritettu onnistuneesti, kaikki tiedot poistetaan taulukosta Opiskelija.

Tässä on tilannekuva tietokannan tilasta, jossa ei ole tietueita taulukossa Opiskelija.

Cassandra Katkaise taulukko

Katkaisu edellyttää, että jokainen solmu on tavoitettavissa, koska se suoritetaan koko klusterissa samanaikaisesti. Jos jokin solmu on alhaalla, lause epäonnistuu, mikä on tarkoituksellinen suojatoimi osittaisen datan jäämisen estämiseksi.

Pudota vs. katkaise vs. poista Cassandra

Kolme komentoa poistaa tietoja, ja väärän komennon valitseminen joko tuhoaa skeeman tai jättää jälkeensä suorituskykyongelman.

Komento Mitä se poistaa Kaava säilytetty Hinta
PUDOTA PÖYTÄ Kaikki rivit ja taulukon määritelmä Ei Halpa. SSTables-taulukoista otetaan snapshot-tiedosto ja ne hylätään.
KATKAISTA Kaikki rivit Kyllä Halpa, mutta vaatii jokaisen solmun ylhäällä. Hautakiviä ei synny.
POISTA Valitut rivit tai sarakkeet Kyllä Kallis mittakaavassa. Jokainen poisto luo hautakiven, jossa lukee "on ohitettava, kunnes tiivistys on tehty".

Käytännön sääntönä on suosia TRUNCATE-komentoa joukkopoiston sijaan koko taulukon tyhjentämisessä, koska tuhannet hautakivet hidastavat kyseisen osion jokaista seuraavaa lukua. Rivitason poistoa käsitellään kohdassa CQL-lisäys, -päivitys ja -poisto opetusohjelma.

UKK

Ei. Ensisijainen avain määrittää fyysisen datan sijoittelun, joten se on kiinteä luonnin yhteydessä. Sen muuttaminen tarkoittaa uuden taulukon luomista halutulla avaimella ja rivien siirtämistä sen läpi.

Lisää WITH CLUSTERING ORDER BY (ColumnName DESC) luonnin yhteydessä. Sen asettaminen kaavaan on paljon halvempaa kuin lajittelu kyselyn yhteydessä jokaisella lukukerralla.

Ei. Sarake piilotetaan kyselyiltä heti, mutta sen tiedot pysyvät olemassa olevien SSTable-taulukoiden sisällä, kunnes tiivistys kirjoittaa ne uudelleen. Tilaa vapautetaan vähitellen.

Sarakeluettelo muunnetaan siististi, mutta tekoäly pitää usein sijaistunnuksen osioavaimena, mikä luo yksiriviset osiot. Muotoile kyselymalli uudelleen siten, että avain valitaan lukuja varten.

Kyllä, kuviotason ongelmissa, kuten puuttuvissa klusterointisarakkeissa, rajattomissa osioissa tai kokoelmasarakkeissa, jotka todennäköisesti ylittävät rajat. Varmista, että kardinaliteetti on todellinen ennen toimimista.

Tiivistä tämä viesti seuraavasti: