Relacyjna baza danych | Elasticsearch | |
Sposób przechowywania danych | Tabele zawierające kolumny i wiersze | Dokumenty JSON zawierające pary typu: klucz – wartość. |
Indeksowanie danych | Indeksy przypisane do tabel i kolumn zawierają informację w którym wierszu w danej tabeli i kolumnie jest wyszukiwana wartość. Możliwe jest używanie jednej kolumny w wielu indeksach. | Odwrócone indeksy, które zawierają listę unikalnych słów ze wszystkich dokumentów. Do każdego słowa przypisana jest lista dokumentów, w których dane słowo występuje. Możliwe jest używanie jednego pola w wielu indeksach (np. do pełnotekstowego wyszukiwania, do sortowania oraz grupowania) |
Typy danych | Statyczne. Jawnie przypisane typy danych do każdej z kolumn w każdej z tabel. | Dynamiczne. Typy danych są automatycznie wykrywane na podstawie zawartości dokumentów podczas procesu indeksowania. Wykrywane są: boolean, floating point, integer, string, data. Użytkownik może jednak jawnie określić znaczenie danego typu i rozróżnić np. free-text od tekstu, który powinien zawierać symbol sformatowany w bardzo konkretny sposób. |
Wyszukiwanie | Strukturalne SQL po konkretnych tabelach i kolumnach. Istnieje również możliwość zdefiniowania indeksu do wyszukiwania pełnotekstowego. | Równorzędne dwa sposoby wyszukiwania: strukturalne po konkretnych polach w konkretnym indeksie (podobnie jak SQL), ale również pełnotekstowe. Możliwe jest również wyszukiwanie kontekstowe, wyszukiwanie z podpowiadaniem oraz wyszukiwanie wg podobieństw |
Żądania zapytań | SQL, dedykowane klienty, dedykowane sterowniki JDBC, ODBC | Wbudowane REST-API, wyszukiwanie dla developerów w Kibanie oraz dedykowany klient Elasticsearch do wykorzystania w aplikacjach. Dostępne są również sterowniki JDBC i ODBC. |