NoSQL i MongoDB Wstęp.

Slides:



Advertisements
Podobne prezentacje
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
Advertisements

Wyszukiwanie informacji w Internecie. Czym jest wyszukiwarka? INTERNET ZASOBY ZAINDEKSOWANE PRZEZ WYSZUKIWARKI Wyszukiwarka to mechanizm, który za pomocą.
Urząd Transportu Kolejowego, Al. Jerozolimskie 134, Warszawa, Polityka regulacyjna państwa w zakresie dostępu do infrastruktury na.
Harmonogram rekrutacji do szkół ponadgimnazjalnych oraz kryteria przeliczania punktów.
Literary Reference Center Przewodnik
Jeśli chcesz przejść do konkretnego zagadnienia, wybierz je z listy: Dopisanie narzędzia Modyfikacja narzędzia Usunięcia narzędzia Lokalizacja domyślna.
Projekt Regulaminu Działania Komitetu Monitorującego Regionalny Program Operacyjny Województwa Pomorskiego na lata
WSPÓŁRZĘDNE GEOGRAFICZNE.  Aby określić położenie punktu na globusie stworzono siatkę geograficzną, która składa się z południków i równoleżników. Południk.
„Gdański model aktywizacji społeczności lokalnych” Gdańsk, 27 kwietnia 2009.
Model warstwowy OSI Model OSI (Open Systems Interconnection) opisuje sposób przepływu informacji między aplikacjami programowymi w jednej stacji sieciowej.
Wytyczne do opracowania wojewódzkich, powiatowych i gminnych programów ochrony środowiska Aleksandra Malarz dyrektor Departamentu Strategii i Komunikacji.
Instalacja nienadzorowana windows xp Jakub klafta.
POLITECHNIKA RZESZOWSKA im. Ignacego Łukasiewicza WYDZIAŁ ELEKTROTECHNIKI I INFORMATYKI ZAKŁAD METROLOGII I SYSTEMÓW POMIAROWYCH METROLOGIA Andrzej Rylski.
ACCESS - RELACJE TEMAT:. Tworzenie i edycja relacji Relacje w bazach danych tworzone są w celu powiązania z sobą danych z wielu tabel. Tworzymy (edytujemy)
Optymalna wielkość produkcji przedsiębiorstwa działającego w doskonałej konkurencji (analiza krótkookresowa) Przypomnijmy założenia modelu doskonałej.
Podsumowanie wdrażania części Osi „Przedsiębiorczość” RPO Warmia i Mazury 2007–2013 w 2008 roku.
WYDZIAŁ OSWIATY URZEDU MIASTA POZNANIA REKRUTACJA ZASADY REKRUTACJI DO SZKÓŁ PONADGIMAZJALNYCH WSPOMAGANEJ SYSTEMEM KOMPUTEROWYM.
Sieci przepływowe: algorytmy i ich zastosowania.
1 Definiowanie i planowanie zadań budżetowych typu B.
Relacyjny model danych. 2 Model danych Struktury danych Ograniczenia integralnościowe Operacje.
PODSTAWY TEORII BAZ DANYCH
Konstruowanie robotów z wykorzystaniem Vex IQ
DEFINICJA I ZASTOSOWANIE W JĘZYKU HASKELL
Nazwa firmy Plan biznesowy.
Full Text Finder Przegląd Publication Finder
Zmysły i Zdarzenia.
Liczby pierwsze.
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Umowa darowizny Mgr Aleksandra Pasek Instytut Prawa Cywilnego Wydział Prawa, Administracji i Ekonomii Uniwersytetu Wrocławskiego.
Quick Tips Tutorial Jak uzyskać dostęp do raportów EBSCOhost i EBSCO Discovery Service w EBSCOadmin support.ebsco.com.
Rekursje Tak jak w innych językach funkcje mogą odwoływać się same do siebie Możemy regulować głębokość przed stwierdzeniem błędu (MaxRecursion, $RecursionLimit,
ALGORYTMY I STRUKTURY DANYCH
Akademia C# lab. 9 Zdarzenia i delegaty.
Który system wybrać?.
Budowa, typologia, funkcjonalność
Maszyna wirtualna Viua Poznańska Impreza Wolnego Oprogramowania 2015
Optymalizacja programów Open-Source
Przewodnik Udoskonalanie listy wyników w wyszukiwarce naukowej
Lekcja 1 – Hello World! Visual Studio, coś łatwego na początek 
Wstęp do Informatyki - Wykład 10
Wstęp do Informatyki - Wykład 8
Kurs języka C++ – wykład 13 ( )
Elementy fizyki kwantowej i budowy materii
Tytuł – [najlepiej aby jak najtrafniej oddawał opisywane rozwiązanie]
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Git - system kontroli wersji
Bezpieczeństwo dostępu do danych w systemie Windows
Języki programowania.
Jak dostosować witrynę internetową usługi Microsoft SharePoint Online
Spotkanie informacyjno-szkoleniowe
Multicast Visualization Tool
Laboratorium 1 – obsługa wejść i wyjść
Prezentacja planu biznesowego
Koszyk danych.
Podstawy informatyki Zygfryd Głowacz.
Pobranie logo programu Microsoft Partner Network Instrukcja
PGO Kolekcje Michail Mokkas.
Tytuł – [najlepiej aby jak najtrafniej oddawał opisywane rozwiązanie]
J2EE: Bazy danych c.d. Język zapytań EJB QL.
Implementacja rekurencji w języku Haskell
Jak szukać błędów w Eclipsie?
Nazwa firmy Biznesplan.
POZNAJEMY PULPIT Opracowanie: mgr Barbara Benisz SP nr 20 w Rybniku
Bufory.
Obsługa bazy danych z poziomu phpMyAdmin
Kwerendy funkcjonalne (Action queries)
Autor: Magdalena Linowiecka
Andrzej Majkowski informatyka + 1.
Zapis prezentacji:

NoSQL i MongoDB Wstęp

MongoDB Nierelacyjna baza danych Brak schematów Zapis w oparciu o kolekcje i dokumenty (naturalny zapis danych) Duże wsparcie w wielu językach i bibliotekach (ODM) Zapytania oparte o składnie ES i JSON Wsparcie dla Geospatial Queries (odległość, zawieranie się) Przechowuje dane w formacie BSON (binarny JSON) Szerokie zastosowania (praktycznie każda baza SQL może być zastąpiona MongoDB) Skalowalność (auto-sharding), replikowalność https://www.mongodb.com/mongodb-scale Bardzo łagodna krzywa nauki (Learning curve)

Narzędzia Serwer Klient MongoDB Community Server – instalowany lokalnie https://mlab.com/ - Database-as-a-Service https://cloud.mongodb.com – chmura Klient MogoDB shell – konsola MongoDB Compass – oficjalny klient GUI (darmowy) Robo 3T – prosty i intuicyjny (darmowy) Studio 3T – rozbudowany IDE (darmowy dla studentów) Mongo Management Studio (darmowy i płatny) Nosqlclient – webowy (darmowy) Wbudowane w środowisko (np. Mongo Explorer w Webstorm)

Serwer lokalny Nie wymaga logowania, dobry do tworzenia oprogramowania https://www.mongodb.com/download-center/community Usługa systemowa lub uruchamiany z linii poleceń: "c:\Program Files\MongoDB\Server\4.0\bin\mongod.exe" --dbpath=e:\MongoDB\ Stwórz kopie bazy danych mongodump --db myDatabase Przywróć kopie bazy danych Przywraca baze z katalogu backup_db do bazy myDatabase --drop – usuwa istniejącą bazę jeśli istnieje (w przeciwnym wypadku kolekcje zostaną połączone) mongorestore.exe backup_db --db myDatabase --drop

Zapytania Wyświetl bazy danych show dbs Stwórz lub użyj bazy danych use ie2018 Stwórz kolekcję db.createCollection("mojaKolekcja") Wyświetl kolekcje: db.getCollectionNames() Usuń kolekcje: db.mojaKolekcja.drop()

Zapytania Dodaj dokument do kolekcji db.mojaKolekcja.insert({ manufacturer: "Opel", model: "Corsa", year: 2015, damaged: true }) Znajdź wszystkie dokumenty w kolekcji db.mojaKolekcja.find() Usuń dokument db.mojaKolekcja.remove({_id: ObjectId("5be45a5030c2f96f5fb48cab")})

Indeksy Dodaj nowy index db.mojaKolekcja.createIndex({"name" : 1}) Każda kolekcja ma domyślny niusuwalny index na polu _id które musi być unikalny. _id jest polem typu ObjectID (12 bajtowa wartość przechowuje wartość o timestamp, licznik, oraz losową liczbę) Dodaj nowy index db.mojaKolekcja.createIndex({"name" : 1}) Dodaj nowy unikalny index db.mojaKolekcja.createIndex({"name" : 1}, {"unique": true}) Dodaj nowy index z czasem wygaśnięcia (po tym czasie dokument zostanie usunięty) db.mojaKolekcja.createIndex({"expireAt" : 1}, {"expireAfterSeconds": 3600}) Wyświetl indeksy db.manufacturer.getIndexes() Usuń index db.manufacturer.dropIndex( {"expireAt": 1} )

Dokumenty Dokumenty z tablicami i dokumentami zagnieżdżonymi (wbudowanymi) db.mojaKolekcja.insert({ manufacturer: "Opel", model: "Meriva", year: 2015, doors: [2,4], dimensions: { _id: new ObjectId(), length: 3622, width: 1532, height: 1360 } })

Relacje Dokumenty z referencją db.mojaKolekcja.insert({ manufacturer: "Opel", model: "Meriva", year: 2015, engine: ObjectId("5be45cb730c2f96f5fb48cac") }) Referencje stosujemy gdy planujemy odpytywać różne kolekcje z osoba lub potrzebujemy relację jeden do wielu Dokumenty zagnieżdżone stosujemy dla danych nie mających sensu bez kontekstu (np. komentarz do artykułu) Można przeszukiwać dokumenty zagnieżdżone Referencje i dokumenty zagnieżdżone mogą być umieszczane w tablicach

Operacja na tablicach db.mojaKolekcja.update({ _id: ObjectId("5be45cb730c2f96f5fb48cac") }, { $push: { doors: 5 } }) $pop: { doors: -1 } - usuwa pierwszy (-1) lub ostatni (1) $pull: { doors : { $gte: 3 } } } - usuwa wszystkie spełanijące warunek $set: {"doors.0" : 2 }} - zmienia element o zadanym indeksie (0) na podaną wartość

Manufacturer Carmodel

Zapytania Znajdź wszystkie: find Znajdź jeden: findOne Znajdź jeden i wykonaj operację: findOneAndDelete, findOneAndReplace, findOneAndUpdate Znajdź dokument przez ID: db.carmodel.findOne("5be46e49d4e0a9a0c76b7ebd") Znajdź dokumenty których pole ma określoną wartość: db.carmodel.find({year: 1994}) Znajdź dokumenty których pole spełnia warunki: db.carmodel.find({year: {$gt: 1990}}) $gt, $gte, $eq, $ne, $lt, $lte Znajdź dokumenty z tablicą zawierającą: db.carmodel.find({doors: {$in: [2,4]}})

Zapytania Znajdź dokument i dodaj pole: Znajdź dokument i usuń pole: update – wykonuje atomową aktualizację dla jednego lub więcej dokumentów pasujących do zapytania. Zwraca ilość zmodyfikowanych dokumentów findOneAndUpdate - Wykonuje aktualizację dla jednego dokumentu i zwraca jego zawartość. Domyślnie zwraca dokument sprzed modyfikacji, chyba, że opcja "returnNewDocument" ma wartość prawda Znajdź dokument i dodaj pole: db.manufacturer.findOneAndUpdate({ name: "Fiat" }, { $set: { favourite: true } }) Znajdź dokument i usuń pole: $unset: { favourite: "" }, { returnNewDocument: true

Zapytania Znajdź dokument zawierający w osadzonym dokumencie pole spełniające warunek: db.carmodel.find({"dimensions.length" : { $gt : 4000 }}) Znajdź dokumenty spełniające wszystkie warunki: db.carmodel.find({ $and: [{ year: { $gt: 2000 } }, { doors: { $size: 1 } } ] }) Znajdź dokumenty spełniające choć jeden warunek: $or: [{ year: { $gt: 2000 } doors: { $size: 4 }

Zapytania Znajdź dokumenty i posortuj względem pola: db.carmodel.find({}).sort({year: -1}) -1 – malejąco 1 – rosnocą Znajdź dokumenty pomiń n pierwszych i wyświetl m (paginacja): db.carmodel.find({}).skip(10).limit(10) Zlicz dokumenty db.carmodel.find({}).count() Znajdź dokumenty pasujące do wyrażenia regularnego db.manufacturer.find({name: {$regex: "op.*", $options: "$i"}})

Aggregation framework Aggregation framework przetwarza dane w potoku i zwraca obliczony wynik $group – Groups documents by some specified expression and outputs to the next stage a document for each distinct grouping. The output documents contain an _id field which contains the distinct group by key db.manufacturer.aggregate([ { "$group" : { _id: "$origin", companies: { $push: "$name" } } ]) db.manufacturer.aggregate([ { "$group" : { _id: null, youngest: {$min: "$founded"}, oldest: {$max: "$founded"} } ])

Aggregation framework $project - Passes along the documents with the requested fields to the next stage in the pipeline. db.manufacturer.aggregate([ { "$project" : { old: { $subtract: [new Date().getFullYear(), "$founded"] } } ])

Aggregation framework $lookup - Performs a left outer join to a collection to filter in documents from the “joined” collection for processing. $match - Filters the documents to pass only the documents that match the specified condition(s) to the next pipeline stage. db.carmodel.aggregate([{ "$lookup": { from: "manufacturer", localField: "manufacturer", foreignField: "_id", as: "manufacturerInfo" } }, { $match : { "manufacturerInfo.origin" : "Germany" ])