CODB (ang. column-oriented DBMS) – kolumnowy system zarządzania bazą danych. W przeciwieństwie do tradycyjnych systemów bazodanowych (RDBMS) gdzie dane składowane są poziomo czyli wierszami, w CODB dane przechowywane są pionowo – kolumnami.
Weźmy na przykład tabelę customer z dużej firmy ubezpieczeniowej. Przyjmijmy, że tabela ma 2 miliony wierszy, każdy z nich zajmuje 800 bajtów. Chcemy wiedzieć ile jest nieubezpieczonych mężczyzn w województwie mazowieckim.
select count(*) from customer where plec = 'M' and woj = 'MAZ' and ubezp = 'N'.
W tradycyjnej relacyjnej bazie danych wygląda to tak.
... | Plec | ... | Woj | ... | Ubezp |
---|---|---|---|---|---|
→ | K | → | MAZ | → | T |
→ | M | → | SLA | → | T |
→ | K | → | LUB | → | N |
→ | M | → | MAZ | → | T |
→ | K | → | LUB | → | T |
Wymaga to przeglądania wszystkich danych dla każdego wiersza (o ile nie ma indeksów). Liczba operacji wejścia/wyjścia wynosi
Podczas gdy w systemie CODB odczytujemy tylko trzy interesujące nas kolumny. Przy tym zapytanie SQL wygląda identycznie.
Płeć | Woj | Ubezp |
---|---|---|
K ↓ | MAZ ↓ | T ↓ |
M ↓ | SLA ↓ | T ↓ |
K ↓ | LUB ↓ | N ↓ |
M ↓ | MAZ ↓ | T ↓ |
K ↓ | LUB ↓ | T ↓ |
Interesujące nas kolumny mają długości odpowiednio: 1, 3 i 1. Liczba operacji wejścia/wyjścia wynosi w tym przypadku
Im więcej wierszy w tabeli tym większy zysk. Systemy typu CODB są zaprojektowane do celów raportowych i analitycznych (Systemy DSS) w przetwarzaniu ogromnych ilości danych. Stosowane są najczęściej do implementacji hurtowni danych. Nie nadają się do przetwarzania transakcji (Systemy OLTP).
Liderem w tej kategorii jest SAP ze swoją bazą SAP IQ. Inni producenci to Vertica, ParAccel and GreenPlum.