ElasticSearch - NoSQL DataBase
Marcin Kopacz
Department of Automatics
November 13, 2012
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
1 / 43
ElasticSearch - NoSQL DataBase
Baz ˛
a danych
Baz ˛
a danych nazywamy zbiór danych o okre´slonej strukturze,
zapisany na zewn ˛etrznym no´sniku pami ˛eciowym komputera, mog ˛
acy
zaspokoi´c potrzeby wielu u˙zytkowników korzystaj ˛
acych z niego w
sposób selektywny w dogodnym dla siebie czasie (pierwsza definicja
sformułowana w 1962-1963).
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
2 / 43
ElasticSearch - NoSQL DataBase
Pocz ˛
atki
Wraz z powstawaniem i rozwojem technologi informatycznych pojawiła
si ˛e potrzeba przechowywania i zarz ˛
adzania olbrzymimi ilo´sciami
danych. Pojawiły si ˛e wtedy dwa podstawowe modele danych: sieciowy
i hierarchiczny. Były ona niedoskonałe i ich głównymi wadami były
nadmierno´s´c danych, słaba integralno´s´c i silna zale˙zno´s´c od fizycznej
implementacji. W 1970 E. F. Codd zaproponował relacyjny model
danych, który był pozbawiony wad ówczesnych modeli.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
3 / 43
Relacyjne Bazy Danych - zalety
z
Olbrzymia i niegasn ˛
aca popularno´s´c na rynku.
z
Posiadaj ˛
a prost ˛
a budow ˛e opieraj ˛
ac ˛
a si ˛e na relacjach i
powi ˛
azaniach pomi ˛edzy nimi, co jest naturalnym sposobem
odbierania danych przez człowieka.
z
Operacje na rekordach s ˛
a bardzo proste.
z
S ˛
a oparte na teorii relacji co daje solidny i łatwy zobrazowania
fundament teoretyczny.
z
Wyst ˛epuje w nich bardzo du˙za niezale˙zno´s´c fizyczna i logiczna
danych.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
4 / 43
Relacyjne Bazy Danych - wady
z
W procesie modelowania tracimy informacj ˛e o tym, ˙ze w ´swiecie
rzeczywistym istniej ˛
a dwa identyczne obiekty.
z
„Sztuczny” j ˛ezyk opisu rzeczywisto´sci – s ˛
a nim dwuwymiarowe
tabelki.
z
Trudno´sci w przechowywaniu informacji zmiennych w czasie.
z
Trudno´sci w przechowywaniu informacji niepełnej,
z
Rozbudowane systemy posiadaj ˛
a tabele z setkami pól, ale cz ˛esto
tylko cz ˛e´s´c z nich jest istota w danym rekordzie czy zapytaniu.
z
Proces normalizacji bazy prowadzi do tworzenia wielu relacji, co
powoduje, ˙ze struktura danych przypomina drzewo. Poci ˛
aga to za
sob ˛
a ogromne konsekwencje w kwestii wydajno´sci (niestety
głównie negatywne).
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
5 / 43
Skalowanie
Skalowanie
Skalowalno´s´c staje si ˛e jednym z wa˙zniejszych zagadnie ´n je´sli
wcze´sniej projektowy system zaczyna mie´c problemy z wydajno´sci ˛
a
(gwałtownie wzrasta ilo´s´c u˙zytkowników i danych). Jest to powszechne
zjawisko dotykaj ˛
ace wiele obecnych systemów.
Istniej ˛
a dwa podej´scia do tego zagadnienia:
z
skalowanie poziome (ang. scalling out)
z
skalowanie pionowe (ang. scalling up)
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
6 / 43
ElasticSearch - NoSQL DataBase
Skalowanie pionowe
Skalowanie pionowe polega na dodawaniu do serwera lepszego
procesora (szybszego, z wi ˛eksz ˛
a liczb ˛
a rdzeni), zwi ˛ekszeniu pami ˛eci
operacyjnej, wprowadzeniu szybszych kanałów dyskowych (IDE SATA
SCSI), itd.
Ten typ rozbudowy, poza kosztami poniesionymi na jego zakup i
wdro˙zenie nie wi ˛
a˙ze si ˛e z ˙zadnymi dodatkowymi nakładami, a
jednocze´snie od razu pozwala cieszy´c si ˛e lepsz ˛
a wydajno´sci ˛
a.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
7 / 43
ElasticSearch - NoSQL DataBase
Skalowanie poziome
Polega na dodawaniu kolejnych serwerów. Wi ˛ekszo´s´c SZBD
umo˙zliwia stosowanie takiego rozwi ˛
azania, wi ˛
a˙ze si ˛e to jednak z
konieczno´sci ˛
a zakupu dodatkowych licencji oraz serwerów.
Jest równie˙z trudniejsze we wdra˙zaniu i utrzymaniu, a co
najwa˙zniejsze dodawanie kolejnych serwerów nie zawsze przynosi
oczekiwane rezultaty.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
8 / 43
ElasticSearch - NoSQL DataBase
Skalowanie poziome - replikacji
Najpopularniejsze podej´scia do poziomego skalowania to replikacja w
oparciu o schemat master-slave. Istnieje jeden w ˛ezeł master, który
odpowiada za obsług ˛e operacji modyfikacji danych oraz kilka w ˛ezłów
slave, które komunikuj ˛
a si ˛e z w ˛ezłem głównym aktualizuj ˛
ac posiadane
w replikach dane. Ich zadaniem jest wykonywanie operacji odczytu.
Drugim sposobem replikacji jest podział bazy na cz ˛e´sci (and.
sharding). Polega to na wył ˛
aczeniu grup tabel u˙zywanych razem w
zapytaniach i przenoszeniu ich na osobne serwery. Wymaga to zmian
w logice aplikacji i nie zawsze jest mo˙zliwe do zastosowania.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
9 / 43
Twierdzenie CAP
Wysuni ˛ete przez Erica Brewera w 2000 roku podczas Symposium on
Principles of Distributed Computing.
System rozproszony nie mo˙ze jednocze´snie zapewnia´c:
z
spójno´sci (ang. consistency) - otrzymywanie identycznych
odpowiedzi na zapytania kierowane w tym samym kwancie czasu
do ró˙znych w ˛ezłów,
z
dost ˛epno´sci (ang. availability) - nieuszkodzony w ˛ezeł systemu
musi niezwłocznie wysła´c odpowied´z na ka˙zde zapytanie, jakie
otrzyma,
z
odporno´sci na podziały (ang. partition tolerance) — utrata
wiadomo´sci w przesyle nie mo˙ze skutkowa´c utraceniem spójno´sci
lub dost ˛epno´sci.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
10 / 43
Twierdzenie CAP cd.
Relacyjne bazy danych zapewniaj ˛
a spójno´s´c i dost ˛epno´s´c, czego
kosztem s ˛
a problemy ze skalowalno´sci ˛
a na wielu maszynach. Obecne
systemy przetwarzaj ˛
a olbrzymie ilo´sci informacji, dlatego dalsza
skalowalno´s´c jest niezb ˛edna.
Bazy danych NoSQL pozwalaj ˛
a rozwi ˛
aza´c problem skalowalno´sci
jednak za cen ˛e utraty cz ˛e´sci spójno´sci b ˛
ad´z dost ˛epno´sci.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
12 / 43
ElasticSearch - NoSQL DataBase
Co to jest „NoSQL”?
Termin „NoSQL” jest rozwini ˛eciem “Not only SQL i oznacza szerok ˛
a
gam ˛e systemów zarz ˛
adzania bazami danych, identyfikowanych
poprzez brak przynale˙zno´sci do systemów opartych o model relacyjny.
Termin ten został wyprowadzony przez Carlo Strozzi w 1998, a w 2009
roku Eric Evans u˙zył tego terminu w kontek´scie „the emergence of a
growing number of non-relational, distributed data stores”.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
13 / 43
ElasticSearch - NoSQL DataBase
„NoSQL” DataBases
z
Nie s ˛
a zbudowane na tablicach (relacjach).
z
Generalnie, nie u˙zywaj ˛
a j ˛ezyka SQL (structured query language)
do manipulacji danymi.
z
Zwykle nie u˙zywaj ˛
a operacji zł ˛
acze ´n.
z
Umo˙zliwiaj ˛
a łatwe skalowanie w poziomie.
z
Najcz ˛e´sciej wysoce zoptymalizowanie w kierunku operacji
pobierania i doł ˛
aczania.
z
Cz ˛esto oferuj ˛
a mał ˛
a funkcjonalno´s´c zwi ˛
azan ˛
a z
przechowywaniem danych (np. poprzez klucz-warto´s´c)
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
14 / 43
ACID
Transakcje w relacyjnych bazach posiadaj ˛
a szereg wła´sciwo´sci
okre´slonych jako ACID:
z
atomowo´s´c - ka˙zda transakcja jest jedn ˛
a jednostk ˛
a przetwarzania,
co oznacza, ˙ze wykonuje si ˛e w cało´sci albo nie wykonuje si ˛e w
ogóle.
z
spójno´s´c - ˙zadne wykonanie transakcji nie jest w stanie naruszy´c
zasad integralno´sci systemu.
z
izolacja - współbie˙znie wykonuj ˛
ace si ˛e transakcje nie widz ˛
a
wprowadzonych przez inne transakcje zmian, a˙z do zako ´nczenia
ich wykonywania.
z
trwało´s´c - gwarancja, ˙ze zmiany wprowadzone przez zako ´nczon ˛
a
sukcesem transakcje s ˛
a na stałe zapisane w systemie i dost ˛epne.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
15 / 43
BASE
Podej´scie w całkowitej opozycji do wcze´sniejszego to BASE, które
opiera si ˛e na :
z
podstawowa dost ˛epno´s´c - system pozostaje dost ˛epny, ale nie
musi koniecznie zapewnia´c dost ˛epno´sci wszystkich elementów w
ka˙zdej chwili czasu.
z
niestały stan - wprowadzone informacje, mog ˛
a one ulec
automatycznej zmianie lub usuni ˛eciu, gdy nie zostan ˛
a w
ustalonym czasie od´swie˙zone przez u˙zytkownika, innymi słowy
informacje mog ˛
a straci´c wa˙zno´s´c.
z
ostateczna spójno´s´c - dane w bazie nie zawsze s ˛
a spójne.
Zakładamy jednak, ˙ze po odpowiednio długim czasie bez nowych
zamian wszystkie repliki w w ˛ezłach b ˛ed ˛
a identyczne.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
16 / 43
Podział wzgl ˛edem struktury danych:
z
Bazy dokumentowe (ang. document stores) (CouchDB,
MongoDB, OrientDB, ElasticSearch, Terrastore, SimpleDB)
z
Bazy grafowe (ang. graph stores) (Triplestores: Virtuoso)
z
Bazy klucz-warto´s´c (ang. key-value stores) (Dynamo, Cassandra,
Voldemort, Riak, Redis, Membase, Membrain)
z
Bazy obiektowe (ang. object databases) (Loxim)
z
Bazy kolumnowe (ang. tabular stores) (BigTable, Mnesia,
HyperTable, ScaleDB)
z
Przestrzenie krotek (ang. tuple stores) (Jini, Apache River -
JavaSpaces)
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
17 / 43
ElasticSearch - NoSQL DataBase
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
18 / 43
ElasticSearch - NoSQL DataBase
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
19 / 43
ElasticSearch - NoSQL DataBase
z
Jest to rozproszony, open source’owy silnik wyszukiwania oparty
na bibliotece Apache Lucene.
z
Został napisany od podstaw przez Shay Banon’a jako “skalowalne
rozwi ˛
azanie do wyszukiwa ´n” dla Projektu Compose.
z
Pierwsza wersja została wydana w lutym 2010 roku.
z
W pełni wykorzystuje wzorzec architektury REST (ang.
Representational State Transfer).
z
Jest napisany w j ˛ezyku Java i rozpowszechniany zgodnie
warunkami licencji Apache.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
20 / 43
Representational State Transfer (REST)
REST - jest to styl architektury oprogramowania dla systemów
rozproszonych takich jak sie´c WWW. Stał on si ˛e dominuj ˛
acym
modelem dla Web serwisów. Jest efektem wielu lat do´swiadcze ´n przy
projektowaniu protokołu HTTP.
Model ten opisuje charakterystyki i ograniczenia makro-interakcji
pomi ˛edzy czterema elementami sieci, mianowicie: bazowymi
serwerami, portami, serwerami proxy i klientami, bez zakładania
ogranicze ´n na poszczególnych uczestników. REST zasadniczo
reguluje prawidłowe zachowanie tych uczestników (skalowanie
interakcji, powszechno´s´c interfejsu, niezale˙zno´s´c rozmieszczenia
elementów, elementy po´srednicz ˛
ace w celu zmniejszenia opó´znie ´n,
egzekwowanie bezpiecze ´nstwa i hermetyzacji starszych systemów).
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
21 / 43
ElasticSearch - NoSQL DataBase
ElasticSearch - indeksowanie
ElasticSearch jest w stanie osi ˛
agn ˛
a´c bardzo szybk ˛
a odpowied´z
poniewa˙z zamiast wyszukiwania bezpo´srednio poprzez tekst u˙zywa
wyszukiwania po indeksach. Indeksowanie odbywa si ˛e przez indeks
inwersyjny. Jego działanie mo˙zna zobrazowa´c do pobierania stron w
ksi ˛
a˙zce zwi ˛
azanych z pewnym kluczem poprzez skanowanie indeksu
na ko ´ncu ksi ˛
a˙zki zawieraj ˛
acego podane słowo klucz.
Do tworzenia tych indeksów wykorzystywane s ˛
a bezpo´srednio
rozwi ˛
azania zawarte w bibliotece Apache Lucene
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
22 / 43
ElasticSearch - reprezentacja danych
Dane w ElasticSearch reprezentowane s ˛
a wył ˛
acznie w postaci JSON
(ang. JavaScript Object Notation). Równie˙z wi ˛ekszo´s´c konfiguracji jest
zapisana w tym formacie (cz ˛e´s´c jest w YAML-u). Poni˙zej przykład
opisania ksi ˛
a˙zki w tym j ˛ezyku.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
23 / 43
ElasticSearch - NoSQL DataBase
ElasticSearch - główne elementy
z
Cluster
z
Node
z
Shard and Replica
z
Index
z
Dokument
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
24 / 43
ElasticSearch - struktura danych
W ElasticSearch’u jednostk ˛
a wyszukiwania i indeksowania jest
dokument. Indeks składa si ˛e z jednego lub wi ˛ecej dokumentów, a
dokument mo˙ze składa´c si ˛e z jednego lub wi ˛ecej pól. W terminologii
bazodanowej, dokument odpowiada wierszu tabeli, a pole odpowiada
kolumnie tabeli. Pole tworzy para klucz-warto´s´c.
Dzi ˛eki temu rozwi ˛
azaniu ElasticSearch nie ma sztywnego schematu,
przynajmniej w teorii. W praktyce chocia˙z nie jest wymagane aby
okre´sli´c schemat przed indeksowaniem dokumentu, to jednak
niezb ˛edne jest dodanie deklaracji mapowania je˙zeli wymagamy
czegokolwiek ponad najbardziej podstawowe pola i operacje.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
25 / 43
ElasticSearch - struktura danych
Mapowanie opisuje:
z
jakie pola wyst ˛epuj ˛
a,
z
które pola powinny by´c u˙zywane jako klucze unikalne i
podstawowe,
z
które pola s ˛
a wymagane,
z
jak indeksowa´c i przeszukiwa´c ka˙zde pole,
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
26 / 43
ElasticSearch - NoSQL DataBase
ElasticSearch - reprezentacja danych
W ElasticSearch, indeks mo˙ze przechowywa´c dokumenty ró˙znych
"typów mapowania". Mo˙zna skojarzy´c wiele definicji mapowania dla
ka˙zdego typu mapowania. Typ mapowania jest sposób rozdzielania
dokumentów w indeksie w logiczne grupy.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
27 / 43
ElasticSearch - NoSQL DataBase
Moduły
ElasticSearch składa si ˛e z kilkunastu modułów, z których ka˙zdy
odpowiada za wydzielon ˛
a funkcjonalno´s´c:
z
Discovery (wykrywanie na bie˙z ˛
aco nodów w clustrze)
z
Gateway (utrwalanie zmian w metadanych clustra)
z
HTTP (udost ˛epnienie ElasticSearch’owego API poprzez HTTP)
z
Transport (wewn ˛etrzna komunikacja pomi ˛edzy nodami)
z
Network (udost ˛epnianie ustawie ´n sieciowych pomi ˛edzy nodami)
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
28 / 43
ElasticSearch - NoSQL DataBase
z
Indices (kontrola globalnie zarz ˛
adzanych ustawie ´n wszystkich
indeksów)
z
Cluster (zarz ˛
adzanie alokacj ˛
a shardów dla nodów)
z
Scripting (obsługa wykonywania skryptów)
z
Thread Pool (zarz ˛
adzanie pulami w ˛
atków i ich konsumpcj ˛
a
pami ˛eci)
z
Node (kontrola zaawansowanych ustawie ´n nodów)
z
Plugins, JMX, memcached, Thrift
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
29 / 43
ElasticSearch - instalacja
z
Pobieramy i rozpakujemy paczk˛e oficjalnej dystrybucji
ElasticSearch’a.
z
Uruchamiamy z konsoli “bin/elasticsearch -f” dla unix’a lub
“bin/elasticsearch.bat” dla systemu windows.
z
W oddzielnej konsoli testujemy działanie za pomoc ˛
a komendy
“curl -X GET http:/localhost:9200/”. Je´sli instalacja zako ´nczyła si ˛e
sukcesem otrzymamy informacje w stylu:
{ "ok" : true, "status" : 200, "name" : "Tommy Lightning",
"version" : { "number" : "0.19.11", "snapshot_build" : false },
"tagline" : "You Know, for Search" }
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
30 / 43
ElasticSearch - Tworzenie node’a
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
31 / 43
Wstawienie elementu do indeksu
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
32 / 43
Pobieranie elementu z indeksu
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
34 / 43
Usuwanie elementów z indeksu
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
35 / 43
Korporacje wykorzystuj ˛
ace ElasticSearch:
z
Mozilla Foundation
z
StumbleUpon
z
Sony Computer Entertainment
z
InSTEDD
z
IGN
z
Sonian Inc.
z
Comarch
z
inne ...
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
41 / 43
Podsumowanie:
z
Bazy NoSQL prze˙zywaj ˛
a rozkwit ze wzgl ˛edu na:
I
łatw ˛
a skalowalno´s´c,
I
wysok ˛
a wydajno´s´c,
I
elastyczny model danych,
I
nowo´s´c.
z
Wybór SZBD powinien zale˙ze´c od konkretnych zastosowa ´n.
z
U˙zycie nierelacyjnych baz danych jest nadu˙zywane i cz ˛esto nie
odpowiada im efektywnym obszarom zastosowa ´n.
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
42 / 43
ElasticSearch - NoSQL DataBase
Dzi ˛ekuje za uwag ˛e
M. Kopacz (AGH)
ElasticSearch - NoSQL DataBase
November 13, 2012
43 / 43