NoSQL Duomenų Bazės Dokumentas PDF
Document Details
Uploaded by MagnanimousCloisonnism
Vilnius University
Tags
Summary
Šis dokumentas aprašo NoSQL duomenų bazių tipus, pvz., dokumentinį, raktą-reikšmę, stulpelinį ir grafinių duomenų bazes. Pateikiamos skirtingos NoSQL duomenų bazių funkcijos, jų privalumai ir naudojimo pavyzdžiai. Taip pat pateikiamos MongoDB užklausos standartai ir CRUD operacijos.
Full Transcript
NoSQL NoSQL NoSQL (Not Only SQL, NO SQL, NewSQL?) – nereliacinių duomenų bazių šeima Nereliacinės duomenų bazės – tai duomenų bazės, nesiremiančios pirminio – antrinio rakto ryšio modeliu Nauda Netvarkytų duomenų saugojimas Mastelio keitimas (scalability) Prieinamumas...
NoSQL NoSQL NoSQL (Not Only SQL, NO SQL, NewSQL?) – nereliacinių duomenų bazių šeima Nereliacinės duomenų bazės – tai duomenų bazės, nesiremiančios pirminio – antrinio rakto ryšio modeliu Nauda Netvarkytų duomenų saugojimas Mastelio keitimas (scalability) Prieinamumas ACID BASE SQL – ACID, NoSQL - BASE ACID: Atomicity - užklausos įvyksta kartu (transakcijos); Consistency – duomenys yra nuoseklūs (pakitus vienam vartotojui keičiasi ir kitiems); Isolation – transakcijos suveikia tik kitoms baigus darbą; Durability - Įvykus išoriniams trikdžiams, informacija išsaugoma. BASE: Basically Available – priešinga Isolation; Soft state – duomenys gali būti laikinose būsenose; Eventually consistent – duomenys galiausiai tampa nuoseklūs. NoSQL tipai Dokumentinės (Document) Rakto-reikšmės (Key-value) Stulpelinės (Column-family) Grafikinės (graph) Dokumentinė Saugo duomenis dokumentuose ir kolekcijose Leidžia visus duomenis apie vieną objektą išsaugoti viename dokumente (neskaidant į kelis) Rakto-reikšmės Saugo duomenis dviejuose stulpeliuose Tarpinis variantas tarp SQL ir Document Stulpelinė ((-s) šeimos) Saugo duomenis eilutė-raktas su jose esančiais stulpeliais tipu Leidžia saugoti skirtingus duomenis skirtingiems įrašams (eilutėms) Grafikinės (grafos) Saugo duomenis mazguose (nodes), kurie susieti ryšiais (relationships) ir kraštais (edges) Gali saugoti duomenis tiek lentelėse / dokumentuose / rakto reikšmės lentelėse Suranda informaciją pasitelkus semantinius sakinius, pvz. SPARQL Užduotis Pagalvokite, kokio tipo duomenų bazę parinktumėte: pokalbių (chat) programai; bibliotekai Lietuvoje; socialiniam tinklui; mokyklos tinklapiui; bankinei sistemai; MMO (massive multiplayer online) žaidimui (10000 vartotojų). Išbandykite MongoDB (Document tipo) užklausas: https://www.mongodb.com/docs/manual/tutorial/getting-started/ MongoDB Dokumentų tipo NoSQL duomenų bazė Dokumentai saugomi kolekcijose Valdoma pasitelkiant Mongo Shell (mongosh) Standartinės darbo komandos: show dbs (show databases) - esamų duomenų bazių atvaizdavimas use database_name - darbo pradžia su duomenų baze (database_name – duomenų bazės pavadinimas) show collections - esamų kolekcijų (turimų duomenų rinkinių) atvaizdavimas MongoDB CRUD CRUD – Create, Read, Update, Delete programavime Atitikmuo Insert, Select, Update, Delete duomenų bazėse Atitinkami metodai: find() – SELECT atitikmuo insertOne() – INSERT vienai eilutei (insertMany() - daugiau) updateOne() – UPDATE deleteOne() – DELETE vienai eilutei (deleteMany() - daugiau) find() metodas Naudojamas išvesti įrašus db.collection_name.find() – išvedami kolekcijoje esantys įrašai (collection_name – kolekcijos pavadinimas) db.collection_name.find({field: value}) – specifinių įrašų radimas. field - ieškomas laukas (eilutės raktas), value – ieškoma reikšmė tame lauke (stulpelis = reikšmė atitikmuo SQL). Teksto paieška – kabutėse. Pvz.: db.collection_name.find({_id: 1052}) db.collection_name.find({field: value}, {field1:1/0, field2:1/0}) - specifinių įrašų radimas, nurodant spausdinamus (arba ne) stulpelius. Antrame {} derinyje nurodomi stulpeliai, kuriuos spausdinti (1 – taip, 0 - ne) Pvz.: db.collection_name.find({name: “A nice house”}, {name:1, _id:0}) insertOne() metodas Naudojamas vieno įrašo įvedimui db. collection_name.insertOne({field1: value1, field2: value2,...}) – įvedamas vienas įrašas field1 – lauko pavadinimas, value1 – atitinkama reikšmė Pvz.: db.collection_name.insertOne({_id: 5, name: “A nice house”}) Atitinkamas daugelio įrašų įvedimas: db. collection_name.insertMany({field1: value1, field2: value2,...}, {field5: value5, field6: value6...}) updateOne() metodas Naudojamas įrašų atnaujinimui db. collection_name.updateOne({field: value},{$set: {field: newValue}}) – esamo įrašo (-ų) atnaujinimas pagal sąlygą Pirmas {field: value} derinys – paieškos sąlyga $set deklaruoja pakeitimą, {} nurodoma, kurie laukai keičiami Pvz.: db.collection_name.updateOne({name: “A nice house”}, {$set: {name: “An ugly house“}}) Atitinkamas daugelio įrašų atnaujinimas: db. collection_name.updateMany({field: value},{$set: {field: newValue}}) deleteOne() metodas Naudojamas ištrinti įrašą db. collection_name.deleteOne({field: value}) – vieno įrašo ištrynimas pagal sąlygą ({field: value} derinys – paieškos sąlyga Pvz.: db.collection_name.deleteOne({name: “An ugly house”}) Atitinkamas daugelio įrašų ištrynimas: db. collection_name.deleteMany({field: value})