Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
w praktyce Prelegent: Michał Cywiński mcywinski@hotmail.co m @mcywinskipl www.michal-cywinski.pl
2
Czym jest NoSQL? Wstęp do RavenDB
3
-Big Data! -Brak wielu tabel i skomplikowanych relacji… -…Więc także brak licznych kluczy! -Jak największa prostota użycia -Zachowanie odpowiedników relacji za pomocą zagnieżdżania kolekcji -Wysoka skalowalność -Skalowalność pozioma NoSQL Rozwiązania hybrydowe
4
(Nie)Skalowalność tradycyjnych baz SQL-owych Serwer bazy danych w przedsiębiorstwie zaczyna zwalniać i kończy się miejsce na jego dyskach Przedsiębiorstwo dokupuje serwer i prosi administratora o rozproszenie bazy danych Administrator jest sfrustrowany, Występują liczne problemy przy migracji i wdrażaniu drugiego serwera Przedsiębiorstwo kupuje nowe dyski SSD, wymienia procesor i dorzuca dodatkowe 64 GB pamięci RAM Jakiś czas później, administrator informuje, że serwer znowu jest wolny i wracamy na początek
5
Skalowalność rozwiązań NoSQL – Skalowanie horyzontalne Przedsiębiorstwo może łatwo dodawać kolejne serwery do swojej infrastruktury, może nawet część z nich mieć u siebie w firmie, a inne w chmurze!
6
Jakie zagrożenia niesie NoSQL? -Brak relacyjności i potrzeba przestawienia myślenia programistów -Obsługa relacyjności musi być realizowana wewnątrz kodu aplikacji -Brak JOIN-ów ;) -Stosunkowo młode rozwiązania
7
Co przechowujemy w bazie RavenDB? -Dokumenty, dokumenty, dokumenty – czyli JSON! -JSON to ładny sposób zapisu obiektu i jego właściwości, będący podzbiorem języka Javascript. -Mimo to jest on niezależny od języka i jest standardem podobnym do np.: XML -Możemy zatem w RavenDB przechowywać obiektu serializowane do JSON! -Relacje możemy obsłużyć np.: zagnieżdżając hierarchicznie listy
8
Przykład JSON
9
Instalacja, konfiguracja, podpięcie do projektu
10
Instalacja 1. WWW: http://ravendb.net 2. Dostępne dwie opcje: -Zip -Instalator 3. Instalujemy wersję development 4. Wersja dev zawiera przydatne biblioteki dla programistów 5. Biblioteki podpinamy do projektu najlepiej przez NuGet
11
Raven.Server.exe – Tutaj zaczynamy zabawę Działanie oparte o API dla.net oraz API HTTP dla innych technologii Wygodny interfejs zarządznia w Silverlight Log działań
12
DEMO: Działanie przykładowej aplikacji i wygląd danych serializowanych do JSON z poziomu panelu zarządzania bazą danych https://github.com/mcywinski/KsiazkaTel
13
Zarządzanie bazą danych
14
DEMO: Podpinanie bibliotek do obsługi RavenDB przez NuGet
15
Poznajemy podstawy RavenDB + C#
16
Potrzebne przestrzenie nazw Raven.Client – klasy i metody do podłączania się do bazy danych Raven.Client.Document – klasy i metody do zarządania zawartością bazy danych
17
DocumentStore https://github.com/JG rzybowski/RavenDB- demo http://ravendb.net/do cs/2.0/server/scaling- out/sharding -Może reprezentować bazę danych na pojedynczej instancji serwera -Może reprezentować bazę rozproszoną pomiędzy różnymi maszynami. Jest to rozwiązanie niewidoczne z punktu widzenia programisty (Sharding!) -1 DocumentStore/Aplikacja, ale wiele sesji -Polecam po warsztatach zapoznać się z linkami podanymi obok!
18
DocumentStore i jego sesja oraz podstawowe metody Złota zasada: 1 sesja oznacza dla nas 1 transakcję RavenDB został zaprojektowany z transakcyjnością w podstawowych założeniach -DocumentStore.Initialize() -IDocumentSession -DocumentStore.OpenSession() -IDocumentSession.Query () -LINQ to podstawa! -IDocumentSession.Store() -IDocumentSession.SaveChanges() IDocumentSession.Delete()
19
DocumentStore i jego sesja oraz podstawowe metody Blok using! Inicjalizacja DocumentStore Otwarcie sesji Działania C# w domyśle działa referencyjnie, więc wybrane dokumenty z bazy modyfikujemy w locie Odpowiednio używamy Store() i Delete() Zatwierdzamy transakcję SaveChanges() Transakcja zostaje zamknięta na życzenie programisty, zmiany są zapisane
20
DEMO: Używamy podstawowych funkcjonalności RavenDB
21
Lucene Syntax http://www.lucenetutorial.com/lucene-query- syntax.html var results = session.Advanced.LuceneQuery ().Where("name:*wa*").ToList(); foreach (Person p in results) { Console.WriteLine(p.name); }
22
DEMO: Lucene Syntax
23
Kolejne warsztaty: Sharding w RavenDB
24
Dziękuję!
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.