Alternatywa dla ElasticSearch?
Rozwój trwa
Clickhouse to system do OLAP czyli Online analytical processing – przetwarzania informacji z wykorzystaniem wielowymiarowej bazy danych. Jest szybki i całkowicie open source’owy. Pozwala na generowanie raportów analitycznych w czasie rzeczywistym i z wykorzystaniem zapytań SQL. Przez tylko ostatni miesiąc rozwój Clickhouse to ponad 800 zaakceptowanych pull requestów – na tle uznanego rywala, jakim jest Elasticsearch (1076 pull requestów w tym samym okresie) to naprawdę dobry wynik, świadczący o tym że projekt żyje. A propos – czytałeś już o nowych licencjach na Elasticsearch?
Clickhouse jest zorientowany kolumnowo
Co to oznacza? Że dane w tej bazie danych są zorganizowane niejako odwrotnie (o 90 stopni) w stosunku do tego co mamy w takich popularnych systemach bazodanowych jak MySQL, PostgreSQL czy MS SQL Server. Różne metody organizowania przechowywanych danych są lepiej dostosowane do różnych scenariuszy. Scenariusz dostępu do danych odnosi się do tego, jakie zapytania są wykonywane, jak często i w jakiej proporcji. Korzystanie z OLAP cechuje się m.in. tym, że:
- zdecydowana większość żądań dotyczy dostępu do odczytu
- dane są aktualizowane w dość dużych partiach (> 1000 wierszy), a nie w pojedynczych wierszach; albo nie są w ogóle aktualizowane
- dane są dodawane do bazy danych, ale nie są modyfikowane
- tabele są „szerokie”, co oznacza, że zawierają dużą liczbę kolumn
- transakcje nie są konieczne
- zapytania są stosunkowo rzadkie (zwykle setki zapytań na serwer lub nawet mniej na sekundę)
- wartości kolumn są dość małe: liczby i krótkie ciągi
Bazy danych zorientowane na kolumny lepiej nadają się do scenariuszy OLAP: są co najmniej 100 razy szybsze w przetwarzaniu większości zapytań.
SQL i JSON
Clickhouse to nowoczesny silnik, który został zaprojektowany i zbudowany, gdy JSON był już w użyciu (w przeciwieństwie do staruszków MySQL i PostgreSQL). Nie musi on więc nosić bagażu kompatybilności wstecznej i surowych standardów SQL tych super popularnych rozwiązań. To pozwala na szybkie dodawanie nowych funkcji i ulepszeń. Programiści Clickhouse mieli więcej okazji do znalezienia równowagi między ścisłymi schematami bazodanowymi a elastycznością JSON i wykonali tutaj dobrą robotę. Clickhouse stara się konkurować z Google Big Query i innymi dużymi graczami w dziedzinie analityki, więc ma wiele ulepszeń w stosunku do „standardowego” SQL, co sprawia, że jego składnia jest w wielu przypadkach znacznie lepsza niż w tradycyjnych RDBMS, przynajmniej gdy potrzebujesz takiego systemu do analiz i różnego rodzaju obliczeń.
Swoboda to nie dowolność
W przypadku niektórych zadań dokładny schemat danych często ewoluuje w trakcie trwania projektu. ElasticSearch umożliwia w takich przypadkach umieszczenie ogromnego obiektu JSON w indeksie a następnie określenie typów pól i części indeksującej. Clickhouse pozwala zastosować to samo podejście. Możesz umieścić dane w polu JSON i filtrować je stosunkowo szybko. Następnie, gdy często potrzebujesz szybkiego wykonania zapytania na określonych danych, dodajesz kolumny do tabeli dzienników, a te kolumny wyodrębniają wartości z istniejącego formatu JSON (wszystko w locie). Pozwala to na znacznie szybsze zapytania dotyczące nawet dużych ilości danych.
Clickhouse jest bardzo szybki w wykonywaniu SELECT
Clickhouse może być nawet 5-6 razy bardziej wydajny w przechowywaniu w porównaniu do ElasticSearch, a jednocześnie jest dosłownie o rząd wielkości szybszy pod względem zapytań.
Sprawdź oferty pracy na TeamQuest
Jeśli mówimy o MySQL, każde niedoskonałe zapytanie, brakujący indeks w tabeli zawierającej zaledwie 100 milionów wierszy danych dziennika może spowodować, że serwer będzie się krztusił. MySQL nie nadaje się do zapytań na dużą skalę. Wprawdzie jeśli chodzi o pamięć, skompresowane tabele InnoDB nie są takie złe, ale i tak jest znacznie gorzej pod względem kompresji w porównaniu z Clickhouse – a to ze względu na charakter pracy oparty na wierszach.