Zamierzam stworzyć małą (Java) aplikację do zarządzania moimi finansami. Uważam, że muszę użyć wbudowanej bazy danych, ale nie mam doświadczenia w tej kwestii. Próbowałem przyjrzeć się niektórym z dostępnych produktów , ale nie mogę się zdecydować, który będzie dla mnie bardziej odpowiedni. H2 , HSQLDB , Derby i Berkeley DB wydają się być dobrymi kandydatami, ale wciąż nie widzę ich porównania. Doceniam twoją pomoc w porównaniu ich i pomaganiu mi zdecydować, którego użyć.
Zamierzam używać Hibernate w mojej aplikacji (chyba że poleciłbyś używanie API dostarczonego przez DBMS), ale chcę też mieć możliwość łatwej edycji bazy danych za pomocą narzędzia do przeglądania SQL (modyfikowanie schematu i zmiana danych).
Dziękuję Ci.
java
database
comparison
embedded-database
Hosam Aly
źródło
źródło
Odpowiedzi:
Zarówno
lub
To, którego użyjesz, zależy od Ciebie, w zależności od tego, ile wydajności i stabilności potrzebujesz.
Twórca H2 przedstawił dobrą ocenę wydajności:
http://www.h2database.com/html/performance.html
źródło
Używam Apache Derby do prawie wszystkich moich potrzeb związanych z wbudowaną bazą danych. Możesz także użyć Java DB firmy Sun opartej na Derby, ale najnowsza wersja Derby jest znacznie nowsza. Obsługuje wiele opcji obsługiwanych przez komercyjne, natywne bazy danych, ale jest znacznie mniejszy i łatwiejszy do osadzenia. Miałem kilka tabel bazy danych z ponad milionem rekordów bez żadnych problemów.
Używałem HSQLDB i Hypersonic około 3 lata temu. Ma w tym czasie poważne problemy z wydajnością i przechodzę z niego na Derby z powodu tych problemów. Derby było solidne, nawet gdy znajdowało się w inkubatorze w Apache.
źródło
W jednym z moich projektów potrzebowałem użyć bazy danych wbudowanej w Javę i przeprowadziłem wiele badań, rozumiejąc zalety i wady każdej bazy danych. Napisałem bloga z listą zalet i wad popularnych wbudowanych baz danych Java (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), możesz na to spojrzeć. Wybrałem H2, ponieważ uważałem, że najlepiej odpowiada moim wymaganiom. Link do bloga: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html Mam nadzieję, że to pomoże!
źródło
Poszedłbym z H2, wydajność jest znacznie lepsza niż w Derby. Przeczytaj http://www.h2database.com/html/performance.html, aby uzyskać więcej informacji.
źródło
HSQLDB to dobry kandydat (fakt, że jest używany w OpenOffice może przekonać niektórych z Was), ale dla tak małej aplikacji personalnej dlaczego nie skorzystać z obiektowej bazy danych (zamiast klasycznej relacyjnej bazy danych)?
Użyłem DB4O w jednym z moich projektów i jestem z niego bardzo zadowolony. Będąc zorientowanym obiektowo, nie potrzebujesz całej warstwy Hibernacji i możesz bezpośrednio wstawiać / aktualizować / usuwać / wyszukiwać obiekty! Co więcej, nie musisz martwić się o schemat, pracujesz bezpośrednio z obiektami, a DB4O zajmie się resztą!
Zgadzam się, że przyzwyczajenie się do tego nowego typu bazy danych może zająć trochę czasu, ale zapoznaj się z samouczkiem DB40, aby zobaczyć, jak łatwa jest praca z DB!
EDYCJA: Jak wspomniano w komentarzach, DB4O automatycznie obsługuje nowsze wersje klas. Ponadto narzędzie do przeglądania i aktualizacji bazy danych poza aplikacją dostępne jest tutaj: http://code.google.com/p/db4o-om/
źródło
Java DB (dystrybucja Apache Derby firmy Sun) jest teraz dostępna w JDK 6!
Chciałem zrobić coś takiego jak Jason Cohen i pomyślałem, że to najłatwiejszy sposób bycia w dystrybucji JDK (która z zeszłego tygodnia jest teraz wymagana dla mojej aplikacji). A może jestem po prostu leniwy w ten sposób.
źródło
Używamy HSQLDB w produkcji jako opcji "bez konfiguracji" dla naszej aplikacji. Pozwala ludziom na próbę bez kłopotów z konfigurowaniem prawdziwej bazy danych.
Jednak nie obsługujemy go do normalnego użytkowania. Powodów jest kilka:
Przynajmniej dla (2) i (3) można to obejść, ale jest to trudne; dużo łatwiej jest np. zainstalować MySQL.
źródło
neo4j to:
Nie miałem jeszcze okazji tego spróbować - ale wygląda to bardzo obiecująco. Zwróć uwagę, że to nie jest baza danych SQL - Twój wykres obiektu jest dla Ciebie utrwalony - więc może nie być odpowiedni dla Twojej istniejącej aplikacji.
źródło
Dobre narzędzie do porównywania można znaleźć tutaj: http://www.jpab.org/All/All/All.html
Zwróć również uwagę na porównania Head to Head DBMS / JPA
źródło
Większość rzeczy już powiedziano, ale mogę tylko dodać, że użyłem HSQL, Derby i Berkely DB w kilku moich domowych projektach i wszystkie działały dobrze. Więc nie sądzę, żeby było to naprawdę ważne, żeby być szczerym. Warto wspomnieć, że HSQL zapisuje się jako plik tekstowy z instrukcjami SQL, co jest całkiem niezłe. Sprawia, że jest to naprawdę łatwe, gdy tworzysz oprogramowanie, aby szybko wykonać testy i skonfigurować dane. W razie potrzeby może też szybko edytować. Chyba możesz łatwo przenieść to wszystko do dowolnej bazy danych, jeśli kiedykolwiek zajdzie potrzeba zmiany :)
źródło
HSQLDB może powodować problemy w przypadku dużych aplikacji, ponieważ nie jest tak stabilny.
Najlepsze, jakie słyszałem (ale nie z pierwszej ręki), to berkleyDB. Ale jeśli go nie otworzysz, korzystanie z niego będzie kosztować rękę i nogę ze względu na licencję ... zobacz http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html dla szczegółów.
ps. berkleyDB nie jest relacyjną bazą danych na wypadek, gdybyś tego nie wiedział.
źródło
Jestem wielkim fanem DB4O zarówno dla .Net, jak i Java .
Wydajność stała się znacznie lepsza od czasu wczesnych wydań. Model licencjonowania też nie jest zły. Szczególnie podoba mi się dostępne opcje wyszukiwania obiektów. Zapytanie na podstawie przykładu jest bardzo potężne i łatwe do przyzwyczajenia.
źródło
Jakich kryteriów użyjesz do ich oceny? Jeśli jeszcze nie wiesz, nie musisz teraz podejmować decyzji. Postaraj się, aby Twoja aplikacja była jak najbardziej niezależna od implementacji bazy danych - zapewniając odpowiednie opakowania, obiekty dostępu do danych itp. I podejmij tę decyzję, gdy masz wszystkie fakty i musisz zdecydować.
Jeśli używasz relacyjnych baz danych i SQL, powyższe nie powinno być zbyt trudne (używanie JDBC itp.). Upewnij się, że masz wiele otaczających testów, aby przełączając się między bazami danych, można było stwierdzić, że funkcjonalność aplikacji pozostaje taka sama.
Już jakiś czas temu napotkałem ten sam problem. Nie wiedziałem, do której bazy danych się wybrać, więc moje pierwsze rozwiązanie korzystało z Derby (lub HSQLDB?), A później mogłem przełączyć się na HSQLDB (lub Derby? Nie pamiętam, które rozwiązanie zadziałało) po ustaleniu, gdzie Miałem problemy (związane z wydajnością) i które rozwiązanie naprawdę by mi pasowało.
źródło
Użyłem Derby i naprawdę nienawidzę jego funkcji konwersji typu danych, zwłaszcza funkcji daty / czasu. (Typ liczby) <--> Konwersja Varchar to ból.
Jeśli więc planujesz używać konwersji typów danych w swoich instrukcjach DB, rozważ użycie innej wbudowanej bazy danych, uczę się tego za późno.
Najnowsze konwersje typów danych w wersji Derby
źródło
Osobiście wolę HSQLDB, ale głównie dlatego, że był to pierwszy, którego spróbowałem.
Mówi się, że H2 jest szybszy i zapewnia ładniejszą nakładkę GUI (która jest ogólna i współpracuje z każdym sterownikiem JDBC).
Przynajmniej HSQLDB, H2 i Derby zapewniają tryby serwera, które są świetne do programowania, ponieważ możesz uzyskać dostęp do bazy danych za pomocą aplikacji i jakiegoś narzędzia w tym samym czasie (co zwykle nie pozwala na tryb wbudowany).
źródło
Wydaje mi się, że trochę się spóźniłem (bardzo późno ;-)) z tym postem, ale chciałbym dodać Perst, osadzoną bazę danych o otwartym kodzie źródłowym dla Javy i .NET. do rozważenia. Perst to wbudowana baza danych typu open source / z podwójną licencją dla języka Java. Dystrybucja jest kompatybilna z platformą Google Android, a także zawiera Perst Lite for Java ME. Stworzyliśmy nawet test porównawczy Androida i opracowaliśmy raport na ten temat ... możesz zajrzeć tutaj: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133
Wszystkiego najlepszego, Chris
źródło
Jeśli mam rację, H2 pochodzi od tych samych gości, którzy napisali HSQLDB. O wiele lepiej, jeśli ufasz testom porównawczym ich witryny. Istnieje również pogląd, że społeczność Sun zbyt szybko wskoczyła do Derby.
źródło
Zdaję sobie sprawę, że wspomniałeś o przeglądaniu SQL, ale wszystko inne w twoim pytaniu sprawia, że chcę zasugerować, abyś również rozważył DB4O , który jest świetnym, prostym obiektowym DB .
źródło