NoSQL databáze

Big Data

Big Data označuje soubory dat, která jsou příliš velká nebo komplexní na zpracování tradičními nástroji. Definují ho tzv. 3V (někdy 5V):

Příklady: clickstream z webů, transakce bank, logy serverů, záznamy ze senzorů, příspěvky na sociálních sítích.

NoSQL databáze

NoSQL (Not Only SQL) označuje databáze, které nespoléhají na relační model a pevné schéma. Vznikly pro potřeby Big Data a webových aplikací.

Datové formáty v NoSQL

FormátPopisPříklad
JSONTextový formát klíč-hodnota, hierarchický{"jmeno":"Jan"}
BSONBinární JSON (efektivnější, více typů)Interní formát MongoDB
XMLZnačkovací jazyk, silně hierarchický<jmeno>Jan</jmeno>
CSVTabulková data oddělená čárkouJan,20,Praha

Typy NoSQL databází

TypModel datPříklady
DokumentovéJSON/BSON dokumentyMongoDB, CouchDB
Klíč–hodnotaJednoduchý slovníkRedis, DynamoDB
SloupcovéData uložena po sloupcíchCassandra, HBase
GrafovéUzly a hrany (vztahy)Neo4j, ArangoDB

Relační vs. NoSQL

Relační (SQL)NoSQL
SchémaPevné (tabulky)Flexibilní (dokumenty)
ŠkálováníVertikální (silnější server)Horizontální (více serverů)
ACIDPlná podporaOmezená (BASE model)
Vhodné proStrukturovaná data, složité dotazyBig Data, rychlé zápisy, nestálé schéma

MongoDB

MongoDB je dokumentová NoSQL databáze. Data ukládá ve formátu BSON (Binary JSON). Základní pojmy:

Struktura dokumentu

{ "_id": ObjectId("..."), "jmeno": "Jan Novák", "vek": 25, "adresa": { "mesto": "Praha", "psc": "110 00" }, "hobbies": ["programování", "šachy"] }

CRUD operace

Čtyři základní operace s daty:

OperaceSQLMongoDB
CreateINSERTinsertOne / insertMany
ReadSELECTfind / findOne
UpdateUPDATEupdateOne / updateMany
DeleteDELETEdeleteOne / deleteMany
// Vložení dokumentu db.uzivatele.insertOne({ jmeno: "Jana", vek: 22 }); // Výběr — všichni uživatelé starší 18 db.uzivatele.find({ vek: { $gt: 18 } }); // Aktualizace — zvýšení věku o 1 db.uzivatele.updateOne( { jmeno: "Jana" }, { $set: { vek: 23 } } ); // Smazání db.uzivatele.deleteOne({ jmeno: "Jana" });

Agregace a MapReduce

Agregační pipeline

Zpracování dokumentů ve více krocích (stages).

db.objednavky.aggregate([ { $match: { stav: "zaplaceno" } }, // filtr { $group: { _id: "$zakaznik", // seskupení celkem: { $sum: "$castka" } } }, { $sort: { celkem: -1 } } // řazení ]);

MapReduce

Programovací model pro zpracování velkých dat. Skládá se ze dvou fází:

// Map: vydej počet objednávek za zákazníka const mapFn = function() { emit(this.zakaznik, 1); }; // Reduce: sečti const reduceFn = function(key, values) { return Array.sum(values); };

V moderním MongoDB je MapReduce nahrazeno efektivnější agregační pipeline.

Kvíz

BETA
1 / 10

Kde se JavaScript primárně spouští?

Jaký příkaz v JavaScriptu deklaruje proměnnou s blokovou platností?

Co je to DOM?

Co dělá `document.getElementById('id')`?

Co je to JSON?

Co je to async/await v JavaScriptu?

Co je Node.js?

Jaká metoda Fetch API slouží k získání dat ze serveru?

Co je to Canvas v HTML/JavaScript?

Jak se označuje funkce v JavaScriptu?