Tomasz Zadora

Tomasz Zadora programuję

Temat: H2 Databse

Witam,

czy ktoś z odwiedzających tą grupę ma doświadczenia z bazą danych H2 - http://www.h2database.com ? Jeżeli tak proszę o wyrażenie swojej opinii szczególnie pod kątem większych baz danych :)
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: H2 Databse

Witam

Korzystam z bazy H2 w jednym w projektów, które tworzę i rozwijam.
Uzywamy jej w trybie embedded in-memory, to znaczy, używamy jej w trybie osadzonym w aplikacji (te sama maszyna JVM), a dane trzymane są jedynie w pamięci.
Używamy tej H2 jako cache read-only do przechowywania pewnych danych konfiguracyjnych, które rzadko mutują. Przez to obniżyliśmy ilość zapytań lecących do głównej bazy danych. Dane w H2 są jedynie odczytywane, a odświeżane są jedynie raz na dobę.

W sumie nie jeździmy po tej H2 czystym JDBC, a jeździmy po niej via Hibernate (dopiero Hibernate jeździ po H2 na poziomie JDBC).

Do H2 strzela SELECT-ami kilka wątków.

Trzymanych jest tam około 50 tys. rekordów.

W H2 można zakładać indeksy - zaobserwowaliśmy zwiększenie wydajności, po dodaniu odpowiednio skrojonych pod nasze zapytania indeksów na bazie H2.

Jedyne, co nie za bardzo mi się w H2 podoba, to ponoć fakt, że nie za bardzo się ona skaluje w środowiskach wielowątkowych (wielu klientów H2). Ponoć niektóre zadania H2 sobie po prostu kolejkuje, więc przy dużym obciążeniu i wielu wątkach, możemy zacząć dostrzega problemy ze skalowalności.

Uzycie bazy H2 jest stosunkowo proste. Na Twoim miejscu, poza tym postem na forum, jednak zrobiłbym swoje testy, aby przekonać się, czy wydajność i skalowalność H2 jest dla Ciebie wystarczająca.

Pozdrawiam, Adam Woźniak

PS.
Zdefiniuj, co rozumiesz przez "większa baza danych".
Tomasz Zadora

Tomasz Zadora programuję

Temat: H2 Databse

Dzięki za podzielenie się doświadczeniami.

Rzeczywiście "większa baza danych" to trochę nieprecyzyjnie, więc chodzi mi o bazę danych:

1)
liczba rekordów: co najmniej kilka milionów, rozłożonych na co najmniej kilkanaście relacji powiązanych ze sobą kluczami

2)
wielkość danych (bez indeksów): około 10 GB

I teraz kwestia jak się zachowuje H2 kiedy zaczyna brakować pamięci operacyjnej na kesz indeksów etc.
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: H2 Databse

Tomasz Zadora:
1)
liczba rekordów: co najmniej kilka milionów, rozłożonych na co najmniej kilkanaście relacji powiązanych ze sobą kluczami

2)
wielkość danych (bez indeksów): około 10 GB

I teraz kwestia jak się zachowuje H2 kiedy zaczyna brakować pamięci operacyjnej na kesz indeksów etc.

Powtórzę się:
Aby to rozstrzygnąć, na Twoim miejscu poczytałbym dokumentację do H2 **oraz** przeprowadził eksperymenty z wolumenem danych, takim jaki przewidujesz w dającej się przewidzieć przyszłości.

Pozdrawiam, Adam
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: H2 Databse

Tomasz Zadora:
czy ktoś z odwiedzających tą grupę ma doświadczenia z bazą danych H2 - http://www.h2database.com ? Jeżeli tak proszę o wyrażenie swojej opinii szczególnie pod kątem większych baz danych :)

Dodam jeszcze 3 grosze:
Rozumiem, ze przy pomocy H2 planujecie cacheować / buforować jakieś dane.
Zwrócę uwagę, za poza takimi rozwiązaniami w tym obszarze jak H2 (in-memory embedded database) może warto rozważyć alternatywne rozwiązania takie jak "Hibernate Second Level Cache". Może to rozwiązanie będzie odpowiedniejszym w przypadku waszego systemu.

O Hibernate Second Level Cache więcej Tobie nie napiszę, bo sam dopiero zamierzam rozpoznać ten temat (w porównaniu do bazy H2 w szczególności).

Pozdrawiam, Adam
Tomasz Zadora

Tomasz Zadora programuję

Temat: H2 Databse

H2 lub inna baza danych nie służyłaby jako cache ale jako główny "back-end database" - szukam po prostu darmowej bazy danych która mogła by tutaj zastąpić MySQL/PostgreSQL.

W tej chwili baza danych nie osiągnęła jeszcze takiego rozmiaru o jakim pisałem ale jest to kwestia kilku(nastu) miesięcy kiedy osiągnie, dlatego szukam rozwiązania wcześniej.

Z uwagi na to, że są to początki poszukiwań chciałem uniknąć dokładnego wgłębiania się w dokumentacje i przeprowadzania testów.

Dlatego zadałem to pytanie między innymi tutaj szukając kogoś kto być może z powodzeniem używa tej bazy w takim charakterze a nie jako embedded.

H2 wydawało się idealne - między innymi ze względu na "przyjemne" triggery/procedury które można pisać bezpośrednio w Javie a nie SQL, PL/SQL lub czymś innym niż java.

Jednak z tego co już przeczytałem na sieci, H2 raczej nie będzie dobrym wyborem pod bazy danych w rozmiarze o którym pisałem.

Pozdrawiam,
TZ
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: H2 Databse

Tomasz Zadora:
H2 wydawało się idealne - między innymi ze względu na "przyjemne" triggery/procedury które można pisać bezpośrednio w Javie a nie SQL, PL/SQL lub czymś innym niż java.

W PostgreSQL możesz pisać procedury w Javie i paru innych językach (Python, Ruby, Perl, PHP, ...).
Tomasz Zadora

Tomasz Zadora programuję

Temat: H2 Databse

Okey :) Dzięki za informacje dotyczącą Postgres-a.



Wyślij zaproszenie do