Pavisam nesen man bija uzdots mājasdarbs aprakstīt NoSQL datubāzes tipus un tās salīdzināt pēc tradicionālajām relāciju datubāzēm. Domāju, ka ik palaikam iemetīšu sadaļas no šī mājasdarba un iespējams pieliekšu vēl kādu vērtīgu atziņu.
Sākumā sāksim ar vienkāršākajām NoSQL tipiem, kas manuprāt ir key-value
.
Populārākās implementācijas - Redis, Riak, Voldemort. Key-value datu glabātuves satur unikālas atslēgas key
un katrai atslēgai ir piekaisīta sava vērtība value
. Šāda veida datubāzes nav piesaistītas noteikta datu shēmai, kas piešķir datubāzei elastīgumu. Pieprasījumu valoda parasti ir API metožu izsaukumi.
Plusi:
- liela ātrdarbība - Redis un dažās citās implementācijas dati glabājas operatīvajā atmiņā;
- vienkārša mērogojamība - master/slave konfigurācija, datu replikācija, particionēšana (hash-ring);
- elastīgums - vairāki datu tipi nepieskaitīti shēmai, Riak atslēgu grupēšana (bucket);
- vienkāršība - vienkārši uztverama ideja (key-value).
Mīnusi:
- datu zudums - Redis gadījumā (dati tomēr glabājās atmiņā) labāk izmantot vairākus serverus, Riak iesaka vispār sāk tikai tad, ja ir vismaz 5 serveri;
- operatīva atmiņa ir dārga - Redis gadījumā, ierobežojumi uz aktīvo datu daudzumu;
- nav datu relācijas - visas relāciju savienošanas (JOIN) jārealizē pašam;
- nav standartizēta, datu modelēšana sarežģīta;
- datu integritāte jānodrošina pašam.
Tipiskākais pielietojums – var tikt izmantots kā keša slānis jebkura sistēmā. Sistēmas kur nepieciešamas īss pieprasījumu apstrādes laiks, kas nevar būt vairāk kā dažas milisekundes.