kolonne familier
en kolonnefamilie er en gruppe af kolonner i en tabel, der er gemt som et enkelt nøgleværdipar i den underliggende nøgleværdibutik. Kolonnefamilier reducerer antallet af nøgler, der er gemt i nøgleværdilageret, hvilket resulterer i forbedret ydeevne under operationer INSERT
, UPDATE
og DELETE
.
denne side forklarer, hvordan Kakerlakdb organiserer kolonner i familier samt tilfælde, hvor du måske manuelt vil tilsidesætte standardadfærden.
sekundære indekser respekterer kolonnefamiliedefinitionerne anvendt på tabeller. Når du definerer et sekundært indeks, bryder Kakerlakdb de sekundære indeksnøgleværdipar i kolonnefamilier i henhold til familie-og lagrede kolonnekonfigurationer.
standardadfærd
når en tabel oprettes, gemmes alle kolonner som en enkelt kolonnefamilie.
denne standardmetode sikrer effektiv nøgleværdiopbevaring og ydeevne i de fleste tilfælde. Men når ofte opdaterede kolonner er grupperet med sjældent opdaterede kolonner, bliver de sjældent opdaterede kolonner ikke desto mindre omskrevet på hver opdatering. Især når de sjældent opdaterede kolonner er store, er det mere effektivt at opdele dem i en særskilt familie.
manuel tilsidesættelse
Tildel kolonnefamilier ved oprettelse af tabel
hvis du manuelt vil tildele en kolonnefamilie ved oprettelse af tabel, skal du bruge nøgleordet FAMILY
.
lad os for eksempel sige, at vi vil oprette en tabel til at gemme en uforanderlig klat af data (data BYTES
) med et sidst tilgængeligt tidsstempel (last_accessed TIMESTAMP
). Fordi vi ved, at klat af data aldrig bliver opdateret, bruger vi nøgleordet FAMILY
til at opdele det i en separat kolonnefamilie:
> CREATE TABLE test ( id INT PRIMARY KEY, last_accessed TIMESTAMP, data BYTES, FAMILY f1 (id, last_accessed), FAMILY f2 (data));
> SHOW CREATE test;
Tildel kolonnefamilier når du tilføjer kolonner
når du bruger sætningen ALTER TABLE .. ADD COLUMN
til at føje en kolonne til en tabel, kan du tildele kolonnen til en ny eller eksisterende kolonnefamilie.
- brug nøgleordet
CREATE FAMILY
til at tildele en ny kolonne til en ny familie. For eksempel vil følgende tilføje endata2 BYTES
kolonne tiltest
tabellen ovenfor og tildele den til en ny kolonnefamilie:
> ALTER TABLE test ADD COLUMN data2 BYTES CREATE FAMILY f3;
- brug nøgleordet
FAMILY
til at tildele en ny kolonne til en eksisterende familie. For eksempel vil følgende tilføje enname STRING
kolonne tiltest
tabellen ovenfor og tildele den til familief1
:
> ALTER TABLE test ADD COLUMN name STRING FAMILY f1;
- brug nøgleordet
CREATE IF NOT EXISTS FAMILY
til at tildele en ny kolonne til en eksisterende familie eller, hvis familien ikke findes, til en ny familie. For eksempel ville følgende tildele den nye kolonne til den eksisterendef1
familie; hvis den familie ikke eksisterede, ville den oprette en ny familie og tildele kolonnen til den:
> ALTER TABLE test ADD COLUMN name STRING CREATE IF NOT EXISTS FAMILY f1;
- hvis en kolonne føjes til en tabel, og familien ikke er angivet, føjes den til den første kolonnefamilie. For eksempel vil følgende tilføje den nye kolonne til familien
f1
, da det er den første kolonnefamilie:
> ALTER TABLE test ADD COLUMN last_name STRING;
Se også
CREATE TABLE
ADD COLUMN
- andre KKL-erklæringer
var denne side nyttig?
Ja Nej