NoSQL. Technologie zarządzania treścią. dr inż. Robert Perliński rperlinski@icis.pcz.pl

Podobne dokumenty
Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Projektowanie bazy danych

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy danych. Andrzej Łachwa, UJ, /15

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

API transakcyjne BitMarket.pl

Procedura weryfikacji badania czasu przebiegu 1 paczek pocztowych

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Kancelaris - Zmiany w wersji 2.50

Ewidencja abonentów. Kalkulacja opłat

PRESTASHOP INTEGRATOR XL BY CTI INSTRUKCJA

Programowanie Zespołowe

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Microsoft Management Console

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

Praca na wielu bazach danych część 2. (Wersja 8.1)

Załącznik nr 2 WZÓR SPRAWOZDANIE CZĘŚCIOWE/KOŃCOWE 1 Z WYKONANIA ZADANIA DOTOWANEGO Z FUNDUSZU KOŚCIELNEGO CZĘŚĆ I.

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

Oprogramowanie FonTel służy do prezentacji nagranych rozmów oraz zarządzania rejestratorami ( zapoznaj się z rodziną rejestratorów FonTel ).

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Chemoinformatyczne bazy danych - Wprowadzenie do technologii baz danych. Andrzej Bąk

Zobacz to na własne oczy. Przyszłość już tu jest dzięki rozwiązaniu Cisco TelePresence.

System Zarządzania Relacyjną Bazą Danych (SZRBD) Microsoft Access 2010

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Drodzy Państwo, CAPITAL SERVICE Oferujemy kompleksowe wsparcie w prowadzeniu własnego biznesu.

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Gdańsku

Nowości w module: BI, w wersji 9.0

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

Na podstawie art.4 ust.1 i art.20 lit. l) Statutu Walne Zebranie Stowarzyszenia uchwala niniejszy Regulamin Zarządu.

Systemy mikroprocesorowe - projekt

Jeśli jednostka gospodarcza chce wykazywać sprawozdania dotyczące segmentów, musi najpierw sporządzać sprawozdanie finansowe zgodnie z MSR 1.

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

OmniTouch 8400 Instant Communications Suite 4980 Softphone

Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych osobowych

Strona główna góra

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Wykorzystanie synergii obszarowych odpowiedzią na wzrastającą konkurencyjność rynku

Sieć komputerowa grupa komputerów lub innych urządzeo połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów, na przykład:

Zapytanie ofertowe dotyczące wyboru wykonawcy (biegłego rewidenta) usługi polegającej na przeprowadzeniu kompleksowego badania sprawozdań finansowych

REGULAMIN. przeprowadzania naboru nowych pracowników do korpusu służby cywilnej w Kuratorium Oświaty w Szczecinie.

Opis modułu analitycznego do śledzenia rotacji towaru oraz planowania dostaw dla programu WF-Mag dla Windows.

System kontroli wersji SVN

Sieci komputerowe cel

Zapytanie ofertowe M.M. Druk Serwis Sp. z o.o.

ZAGADNIENIA PODATKOWE W BRANŻY ENERGETYCZNEJ - VAT

Bazy danych informacje podstawowe

Charakterystyka systemów plików

Szczegółowe zasady obliczania wysokości. i pobierania opłat giełdowych. (tekst jednolity)

INSTRUKCJA DLA UCZESTNIKÓW ZAWODÓW ZADANIA

Archiwum Prac Dyplomowych

Bazy Danych. Laboratorium 2

Współczesne nowoczesne budownictwo pozwala na wyrażenie indywidualnego stylu domu..

Regulamin Zarządu Pogórzańskiego Stowarzyszenia Rozwoju

Metody wyceny zasobów, źródła informacji o kosztach jednostkowych

Harmonogramowanie projektów Zarządzanie czasem

2.Prawo zachowania masy

SPRAWOZDANIE FINANSOWE. Fundacja Uniwersytet Dzieci

ECDL Advanced Moduł AM3 Przetwarzanie tekstu Syllabus, wersja 2.0

Obliczenia arytmetyczne. Konkatenacja pól. Aliasy kolumn. Aliasy tabel. Co dalej? Rozdział 4. Korzystanie z funkcji. Zastosowanie funkcji

UMOWA PORĘCZENIA NR [***]

CitiDirect EB - Mobile

zgubił całą naszą korespondencję Można by tak wymieniać bez bezpieczeństwa, gdyby była wykonana dnia poprzedniego rozwiązałaby niejeden problem.

Waldemar Pietrzak s5207. Projekt Wypożyczalnia Samochodów

Administrator Konta - osoba wskazana Usługodawcy przez Usługobiorcę, uprawniona w imieniu Usługobiorcy do korzystania z Panelu Monitorującego.

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Łabiszynie

Szukaj miejsc i wydarzeń pozytywnie nakręconych!

Wyciąg z taryfy prowizji i opłat za czynności i usługi bankowe dla Klientów Banku Spółdzielczego Ziemi Kaliskiej Stan aktualny na dzień r.

Tworzymy oprogramowanie. Prezentacja oferty oprogramowania dla administracji publicznej. Poznań, r.

Jak korzystać z Group Tracks w programie Cubase na przykładzie EWQLSO Platinum (Pro)

Zebranie Mieszkańców Budynków, zwane dalej Zebraniem, działa na podstawie: a / statutu Spółdzielni Mieszkaniowej WROCŁAWSKI DOM we Wrocławiu,

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Barcinie

INSTRUKCJA TESTOWANIA USŁUG NA PLATFORMIE ELA-ENT

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Gminy Wągrowiec

Niniejszy ebook jest własnością prywatną.

InsERT GT Własne COM 1.0

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

Instrukcja Obsługi STRONA PODMIOTOWA BIP

OPIS PRZEDMIOTU ZAMÓWIENIA DO ZAPYTANIA KE1/POIG 8.2/13

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

REGULAMIN MOBIPARKING W SYSTEMIE SKYCASH

ARKUSZ OCENY OKRESOWEJ DLA STANOWISK PRACOWNICZYCH

1. PODMIOTEM ŚWIADCZĄCYM USŁUGI DROGĄ ELEKTRONICZNĄ JEST 1) SALESBEE TECHNOLOGIES SP. Z O.O. Z SIEDZIBĄ W KRAKOWIE, UL.

Użytkowanie elektronicznego dziennika UONET PLUS.

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

INSTRUKCJA Panel administracyjny

SPECYFIKACJA ISTOTNYCH WARUNKÓW ZAMÓWIENIA. na obsługę bankową realizowaną na rzecz Gminy Solec nad Wisłą

Warszawska Giełda Towarowa S.A.

DANE UCZESTNIKÓW PROJEKTÓW (PRACOWNIKÓW INSTYTUCJI), KTÓRZY OTRZYMUJĄ WSPARCIE W RAMACH EFS

TAJEMNICA BANKOWA I OCHRONA DANYCH OSOBOWYCH W PRAKTYCE BANKOWEJ

Procedura działania Punktu Potwierdzającego. Profile Zaufane epuap. w Urzędzie Miejskim w Miłakowie

Transkrypt:

NoSQL Technologie zarządzania treścią dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej

NoSQL 2/36 Plan wykładu 1 NoSQL 2 Model danych zorientowanie na agregacje bazy grafowe 3 Bazy danych bez schematu 4 Źródła

Najpopularniejsze bazy NoSQL NoSQL 3/36

NoSQL 4/36 Najnowszy ranking systemów baz danych http://db-engines.com/en/ranking 34 spośród 100 najważniejszych SZBD obecnych na rynku, to bazy NoSQL. Bardzo dynamiczna branża przemysłu informatycznego: nowe bazy NoSQL powstają co roku, powstają też nowe funkcjonalności.

NoSQL 5/36 Termin NoSQL Termin NoSQL odnosi się: do niezidentyfikowanego zestawu baz danych, przeważnie typu open source, przeważnie stworzonych w XXI wieku, przeważnie nie wykorzystujących języka SQL. Bazy NoSQL - bazy relacyjne nie są jedynym wyborem - poliglotyczne przechowywanie danych. Bazy NoSQL najlepiej nadają się jako bazy aplikacji - enkapsulacja baz danych w usługi.

NoSQL 6/36 Model danych Model danych: model za pomocą którego przeglądamy dane i manipulujemy nimi, konkretny model danych aplikacji, np. konkretny diagram encji, przede wszystkim model, zgodnie z którym baza organizuje dane - metamodel. Model przechowywania opisuje, w jaki sposób dane są przechowywane i manipulowane wewnętrznie.

Podział baz NoSQL ze względu na model danych Model danych Przykładowe bazy Model danych Przykładowe bazy Klucz - wartość BerkeleyDB Rodzina kolumn Amazon SimpleDB Memcached Cassandra Project Voldemort HBase Redis Hypertable Riak Dokument CouchDB Bazy grafowe FlockDB MongoDB HyperGraphDB OrientDB Infinite Graph RavenDB Neo4J Terrastore OrientDB Niektóre bazy danych pasują do więcej niż jednej kategorii. Inne są na granicy kategorii. Pełana lista baz NoSQL (i nie tylko) na stronach: http://nosql-database.org/ http://nosql.mypopescu.com/kb/nosql NoSQL 7/36

NoSQL 8/36 Dane w modelu zorientowanym na agregacje Model zorientowany na agregacje: operujemy na na złożonych strukturach, takie złożone struktury nazwiemy agregacją. Agregacje: można myśleć jako o rekordach, które zawierają inne rekordy czy listy, kolekcja obiektów traktowana jako jednostka, taką jednostkę, agregację przechowujemy, przesyłamy i poprzez nią manipulujemy na danych, ułatwiają pracę w klastrach - są naturalną jednostką do replikacji i współdzielenia.

NoSQL 9/36 Relacyjny model danych Przykład ze sprzedażą towarów użytkownikowi:

NoSQL 10/36 Relacyjny model danych Dane w bazie relacyjnej po normalizacji: Żadne dane się nie powtarzają, jest integralność referencyjna.

NoSQL 11/36 Model danych zorientowany na agregacje Przykład ze sprzedażą towarów użytkownikowi:

NoSQL 12/36 Model danych zorientowany na agregacje w klientach { } "id":28, "nazwa":"jan Kowalski", "adresplatnika": [{"miejscowosc":"częstochowa"}] w zamówieniach { } "id":99, "klientid":28, "pozycjezamowienia": [ { "produktid":25, "cena": 32.45, "produktnazwa": "NoSQL Databases" } ], "adreswysylki": [{"miejscowosc":"częstochowa"}], "zamowienieplatnosc": [ { "numerkarty":"1500-1200", "NIP": "2345678901", "adresplatnika": {"miejscowosc":"częstochowa"} } ]

NoSQL 13/36 Model danych zorientowany na agregacje Przykład ze sprzedażą towarów użytkownikowi Dwie podstawowe agregacje: klient i zamówienie. Lista adresów w kliencie, adres ustalony na dzień zakupów. Zamówienie zawiera listę pozycji zamówienia, płatności oraz adres wysyłki. Płatność zawiera wykorzystany adres płatnika. Pojedynczy adres pojawia się trzy razy! Nie potrzebne jest ID adresu. Adres płatności i wysyłki nie ulegają zmianie. Połączenie między klienetem a zamówieniami poprzez ID klienta - należy odczytać z relacji między agregacjami.

NoSQL 14/36 Inne wyznaczenie granic agregacji Przykład ze sprzedażą towarów użytkownikowi:

NoSQL 15/36 Wszystkie zamówienia w agregacji klienta w klientach { } "id": 28, "nazwa": "Jan Kowalski", "adresplatnika": [{"miejscowosc": "Częstochowa"}], "zamowienia": [ { "id": 99, "klientid": 28, "pozycjezamowienia": [ { "produktid": 25, "cena": 32.45, "produktnazwa": "NoSQL Databases" } ], "adreswysylki": [ {"miejscowosc": "Częstochowa"} ], "zamowienieplatnosc": [ { "numerkarty": "1500-1200", "NIP": "2345678901", "adresplatnika": {"miejscowosc": "Częstochowa"} } ] } ]

NoSQL 16/36 Wybór sposobu podziału na agregacje Podział modelu danych na agregacje: zależy od sposobu, w jaki będziemy na nich manipulowali, pierwszy model - pobieranie osobno każdego zamówienia, drugi model - pobieranie klientów ze wszystkimi ich zamówieniami.

NoSQL 17/36 Konsekwencje orientacji na agregacje Model relacyjny - agregacje realizowane przez klucze obce. Relacje agregacji nie różną się od pozostałych relacji. Model relacyjny ignoruje agregacje. Bazy zorientowane na agregacje: znacznie prostsza semantyka danych, semantyka zależy od sposobu wykorzystania danych przez aplikację, skupiamy się na interakcji z magazynem danych. Agregacje również są ignorowane przez bazy grafowe. Model ignorujący agregacje pozwala na łatwe przeglądanie danych w dowolny sposób.

NoSQL 18/36 Model agregacyjny i transakcje Bazy relacyjne: zapewniają obsługę transakcji (ACID), można manipulować dowolnymi wierszami w różnych tabelach bez obawy uzyskania niespójności. Bazy NoSQL: nie wspierają transakcji ACID obejmujących kilka agregacji, wspierają atomowe operacje w ramach jednej agregacji, jednoczesna manipulacja na wielu agregacjach wymaga zapewnienia atomowiści w kodzie aplikacji, należy tak projektować, aby utrzymać potrzeby atomowoego dostępu do danych w ramach jednej agregacji.

NoSQL 19/36 Model klucz-wartość Bazy klucz-wartość: dane są przezroczyste dla bazy - są nic nie znaczącym zbiorem bitów, pozwalają przechowywać co tylko się chce, jedynym ograniczeniem jest rozmiar, dostęp do danych tylko za pośrednictwem klucza.

Model dokumentów Bazy dokumentów: rozumieją struktury przechowywanych agregacji, ograniczają to, co można w nich przechowywać, poprzez definicję dopuszczalnych struktur i typów, większa elastyczność w dostępnie do danych: wysyłanie zapytań w oparciu o pola agregacji, pobieranie tylko części agregacji, tworzenie indeksów na podstawie zawartości agregacji. NoSQL 20/36

NoSQL 21/36 Modele klucz-wartość i dokumentów - porównanie Zacieranie się różnic: pole z identyfikatorem w bazie dokumentów jako dostęp typu klucz-wartość, niektóre bazy klucz-wartość pozwalają: dodawać metadane do przechowywanych wartości na potrzeby indeksowania i relacji między agregacjami (Riak), rozbijanie agregacji do poziomu list czy zestawów (Redis), dodawanie wsparcia dla wykonywania zapytań.

NoSQL 22/36 Model rodziny kolumn Jednostka przechowywania to: wiersz - najczęstszy przypadek, grupa kolumn - kiedy rzadko występuje zapis, a często odczytujemy kilka kolumn z wielu wierszy. Najlepiej patrzeć na model rodzina kolumn jako: dwuwymiarową mapę, tabelę z luźnym schematem kolumn. Bazy przechowujące grupy kolumn (rodziny kolumn) nazywamy bazami rodziny kolumn.

Model rodziny kolumn - przykład Dwupoziomowa struktura agregująca Pierwszy klucz - wiersz, wybór agregacji (mapa bardziej szczegółowych wartości). Drugi klucz - kolumna. Pobieranie cały wiersz: get( 1234 ) wybrana kolumna: get( 1234, nazwa ) NoSQL 23/36

NoSQL 24/36 Model rodziny kolumn Myślenie o strukturze baz rodziny kolumn przez pryzmat wiersza: patrzymy na całą agregację, jeden wiersz - jedna agregacja, np. klient o id 1234, rodziny kolum w danym wierszu reprezentują użyteczne części danych wewnątrz tej agregacji, np. profil klienta, historia zamówień, Myślenie o strukturze baz rodziny kolumn przez pryzmat kolumn: każda rodzina kolumn definiuje typ rekordu, np. profil klienta, z wierszami dla każdego z rekordów, wiersz funkcjonuje jako połączenie rekordów ze wszystkich kolumn.

NoSQL 25/36 Model rodziny kolumn Bazy rodziny kolumn: kolumny są organizowane w rodziny, każda kolumna musi być częścią pojedynczej rodziny, rodzina kolumn funkcjonuje jako jednostka dostępu, dana rodzina kolumn jest za zwyczaj pobierana razem. Rodzina kolumn: pozwala dodawać dowolne kolumny do wierszy, wiersze mogą mieć bardzo różne zestawy kolumn, nowe kolumny można dodawać do wierszy w trybie normalnego dostępu do danych, zdefiniowanie nowej rodziny kolumn może wymagać zatrzymania bazy danych.

NoSQL 26/36 Model rodziny kolumn Nietypowy aspekt tego modelu danych: rodzina kolumn Zamówienia, dodwanie kolumn pozwala zamodelować listę (w jednej kolumnie!). W bazie Cassandra używa się dwóch terminów: szeroki i chudy. Chude wiersze - mają niewiele kolumn, które jednak powtarzają się w wielu wierszach. Szerokie wiersze - mają wiele kolumn (nawet tysiące), ale kolumny poszczególnych wierszy bardzo się różnią. Jest to model listy, każda kolumna to element listy. Dla szerokich wierszy można definiować porządek sortowania. Dostęp, np. do Zamówienia, za pośrednictwem kluczy porządkowych. Wiersze chude i szerokie mogą (z technicznego punktu widzenia) współistnieć nawet w ramach jednej rodziny kolumn!

NoSQL 27/36 Podsumowanie modeli zorientowanych na agregacje Cechy wspólne trzech modeli (klucz-wartość, dokument, rodzina kolumn): Agregacje indeksowane za pomocą klucza, pozwalającego na jej pobranie. Cała agregacja jest przechowywana na jednym serwerze - podstawa działania modeli tego typu w klastrach. Agragacja jako jednostka atomowa podczas aktualizacji danych - użyteczna choć ograniczona kontrola transakcyjna. W ramach pojęcia agregacji uwidaczniają się różnice pomiędzy omówionymi trzema typami danych.

NoSQL 28/36 Podsumowanie modeli zorientowanych na agregacje Najważniejsze kwestie: Agregacja jest zestawem danych, które funkcjonują w bazie jako jednostka. Bazy klucz-wartość, dokumentów i rodzyny kolumn to bazy zorientowane na agregacje. Dzięki agregacjom przechowywanie danych w klastrach jest łatwiejsze. Bazy zrorientowane na agregacje najlepiej działają, kiedy interakcje z danymi są podejmowane w ramach jednej agregacji.

NoSQL 29/36 Bazy z dużą liczbą relacji Dane w bazie połączone relacjami dobrze jest, jeśli baza wie o połączeniach między danymi, duża liczba połączeń - model relacyjny ale... bazy grafowe - wyspecjalizowane w dużej liczbie relacji między danymi bazy grafowe to też NoSQL

Bazy grafowe NoSQL 30/36

NoSQL 31/36 Bazy grafowe Powstały dzięki kiepskiej obsłudze rozbudowanych relacji w modelu relacyjnym. Dane w bazie grafowej to węzły połączone krawędziami. W bazach grafowych mamy do czynienia z niewielkimi rekordami i rozbudowanymi połączeniami między nimi. Węzły zawierają mało informacji, jest bardzo rozbudowana sieć połączeń. Zbudowany graf (węzły i krawędzie) można odpytywać. Możliwe zapytania: znajdź książki z kategori bazy danych napisane przez kogoś, kogo lubi ktoś z moich znajomych. Idealna struktura do przechowywania danych zawierających skomplikowane powiązania (np. sieci społecznościowe).

NoSQL 32/36 Bazy grafowe Kosztowne złączenia w bazach relacyjnych - tanie w bazach grafowych (zysk trafersowania po grafie kosztem wolniejszego wstawiania danych). Nadanie indeksów niektórym węzłom pozwala na określenie miejsca początkowego (zaytanie sprawdź osoby o imionach Anna i Barbara ). Zapytania przechodzące po krawędziach, np. pokaż mi wszystkie rzeczy, które lubią Anna i Barbara. Duży nacisk na relacje powoduje dużą odmienność od baz zrorientowanych na agregacje. Częściej działają na pojedynczym serwerze niż na klastrze. Udostępniają transakcje ACID. Cechy wspólne z bazami NoSLQ: odrzucenie modelu relacyjnego, wzrost polularności w tym samym czasie co inne bazy NoSQL.

NoSQL 33/36 Bazy NoSQL - podsumowanie Ze strony: https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/

Bazy bez schematu - wady i zalety Zalety baz danych bez schematu Można przechowywać dowolne dane w dowolnym miejscu - duża elastyczność i wolność. W bazach relacyjnych nie da się łatwo zmieniać schematu, gdy są już dane, tutaj inaczej... Rozwój bazy wraz z rozwojem aplikacji, usługi. Łatwa zmiana liczby kolumn, dodawania danych niestandardowych, usuwania niepotrzebnych,... Problemy przy bazach danych bez schematu Program korzystający z naszej bazy musi znać nazwy kolum czy kluczy. Musi znać typy danych. Pola: osobatelefon i telefonosoby to nie to samo. Trzeba wiedzieć czy po kluczem licznik znajdują się liczby czy może znaki alfabetu...? NoSQL 34/36

NoSQL 35/36 Bazy bez schematu - domniemany schemat Prawie zawsze korzystamy z jakiegoś domniemanego schematu. Domniemany schemat w kodzie aplikajci - trzeba przeglądać kod żeby poznać strukturę bazy. Bardzo ważna jakość kodu - czasem może być ciężko coś wyczytać. Baza nie uznaje schematu - nie da się walidować danych. Brak schematu - trudno określić jak lepiej przechowywać i pobierać dane. Różne aplikacje - inne sposoby współpracy z bazą. Brak schematu występuje tylko w granicy agregacji. Zmiana granic agregacji - proces tak skomplikowany jak w bazach relacyjnych.

NoSQL 36/36 Źródła W wykładzie wykorzystano materiały: Pramod J. Sadlage, Martin Folwer, NoSQL Kompendium wiedzy, Helion, 2015 https://highlyscalable.wordpress.com/2012/03/01/ nosql-data-modeling-techniques/