w praktyce Prelegent: Michał Cywiński
Czym jest NoSQL? Wstęp do RavenDB
-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
(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
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!
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
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
Przykład JSON
Instalacja, konfiguracja, podpięcie do projektu
Instalacja 1. WWW: 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
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ń
DEMO: Działanie przykładowej aplikacji i wygląd danych serializowanych do JSON z poziomu panelu zarządzania bazą danych
Zarządzanie bazą danych
DEMO: Podpinanie bibliotek do obsługi RavenDB przez NuGet
Poznajemy podstawy RavenDB + C#
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
DocumentStore rzybowski/RavenDB- demo 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!
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()
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
DEMO: Używamy podstawowych funkcjonalności RavenDB
Lucene Syntax syntax.html var results = session.Advanced.LuceneQuery ().Where("name:*wa*").ToList(); foreach (Person p in results) { Console.WriteLine(p.name); }
DEMO: Lucene Syntax
Kolejne warsztaty: Sharding w RavenDB
Dziękuję!