Ostatnio rozważam stworzenie aplikacji, która używa bazy danych h2 jako głównej bazy danych (ponieważ jest dostarczana z JBoss), ale jestem trochę zaniepokojona. Czytałem w kilku miejscach (głównie na forach dyskusyjnych), że nie należy używać h2 w produkcji. Czy istnieją konkretne powody?Czy istnieją powody, dla których baza danych h2 nie powinna być wykorzystywana w produkcji?
Odpowiedz
głównych powodów, aby nie używać H2 (lub hsqldb lub Derby) do produkcji są:
Prawdopodobieństwo błędów krytycznych: w porównaniu do 'duże' baz danych Oracle, IBM DB 2, MS SQL Server , MySQL, PostgreSQL, bazy danych Java są stosunkowo nowe i dlatego prawdopodobnie nie są tak stabilne (mają błędy). Należy pamiętać, że dotyczy to wszystkich nowszych produktów, w tym baz danych NoSQL i nowych wydań "dużych" baz danych. Ogólnie rzecz biorąc, im więcej testowany jest produkt, tym mniejsze prawdopodobieństwo wystąpienia błędów. Oczywiście to zależy od twojego przypadku użycia, czy ma sens płacić (prawdopodobnie dużo pieniędzy) za tę przewagę. W każdym przypadku będziesz musiał wykonać kopię zapasową danych, na przykład w przypadku awarii sprzętu.
Brakujące funkcje i optymalizacje: "duże" bazy danych mają więcej funkcji i optymalizacje do specjalnych zastosowań. To, czy potrzebujesz tych funkcji, zależy od Ciebie.
Wsparcie komercyjne: łatwiej jest uzyskać wsparcie dla większych baz danych. Pamiętaj także o commercial support is available for H2. HSQLDB zapewnia również wsparcie komercyjne. IBM zapewniał wsparcie dla Apache Derby (dobrze, IBM Cloudscape), ale uważam, że przestali.
Czy twoja pozycja ewoluowała 2 lata później? – Stephan
Nie, myślę, że sytuacja jest wciąż taka sama. –
Czy Twoja pozycja uległa zmianie 3 lata później? : D (z myślą o nowym MVStore?) –
W moim osobistym doświadczeniem, H2 w wersji 1.2.147 wydaje się bardzo wiarygodne, 100% Sukces w około 60 instalacjach, ale moi klienci mają jedynie stosunkowo małych baz danych (400 MB są większe rozmiary) i mój program wykorzystuje tylko jedno połączenie (lol), dopiero niedawno zacząłem używać więcej niż jednego połączenia, ale z błędem multi_threaded. Miałem zepsucie w poprzednich wersjach i boję się wypróbować nowsze wersje.
Kiedy mówisz, że używasz tylko jednego połączenia - masz na myśli tylko jednego użytkownika uzyskującego dostęp do bazy danych, czy też byłoby to równoznaczne z wdrożeniem go na JBoss i JBoss zarządzającym nim? – bjedrzejewski
Dla mnie nie ma potrzeby, by nie używać H2DB w produkcji dla średnich projektów. Wdrożyliśmy system produkcyjny dla około piętnastu klientów przy użyciu H2DB, doświadczyliśmy bardzo łatwych instalacji i tworzenia kopii zapasowych, a jednocześnie zero problemów związanych z bazą danych.
- 1. Powody, dla których Redis zwolni
- 2. Baza danych tworzenia i produkcji?
- 3. C++ 11: Czy istnieją powody, dla których niektóre typy regularne nie powinny mieć specjalizacji `std :: hash`?
- 4. Jak niezawodna jest baza danych h2?
- 5. Baza danych H2 Szybsze ładowanie danych CSV
- 6. Czy istnieją platformy, dla których separatorem plików nie jest "/"?
- 7. Czy istnieją powody, aby nie przechowywać wartości logicznych w SQL jako typy danych bitowych?
- 8. Jakie mogą być powody, dla których dane narzędzia Performance są wysokie. [pokazując w Xcode VM tracker]
- 9. Czy są jakieś powody, dla których powinienem/powinienem nie używać ObjectId's w moim URLU RESTOWN?
- 10. Powody, dla których przyjęta intencja byłaby NULL w onStartCommand
- 11. Powody, dla których Hibernate's sessionFactory jest bezpieczny dla wątków
- 12. Nie można przeglądać pliku bazy danych H2?
- 13. Czy istnieją ORM (OKM) dla magazynów klucz-wartość?
- 14. Jakie są powody, dla których warto wybrać SQL Server 2008 w roku 2005?
- 15. Czy istnieją powody, aby nie używać stanów i ról ARIA jako selektorów w CSS?
- 16. Jakie są powody, dla których użycie procesora nie idzie w 100% za pomocą C# i APM?
- 17. Powody, dla których NIE jest zwiększanie skali w stosunku do -out?
- 18. Czy istnieją struktury hurtowni danych?
- 19. Zintegrowana baza danych dla mojej aplikacji JavaSE
- 20. SQL Alchemia ResultProxy.rowcount nie powinna być zerem
- 21. Czy istnieją uzasadnione powody, aby ukrywać metody statyczne?
- 22. Jakiekolwiek powody, dla których nie powinieneś używać dokumentu w formacie HTML 5?
- 23. Czy funkcja `constexpr` również powinna być` noexcept`?
- 24. Czy moja klasa sesji powinna być statyczna?
- 25. Jakie są powody, dla których usługa ServicePointManager.ServerCertificateValidationCallback została zaprojektowana w ten sposób?
- 26. Heroku z bazą danych H2
- 27. Czy cała logika biznesowa powinna być w modelach domenowych czy?
- 28. Możliwe powody, dla których urządzenie z Androidem nie może otrzymywać powiadomień w grach Google Play?
- 29. React.js i ES6: Dowolne powody, dla których nie należy wiązać funkcji w konstruktorze
- 30. Dobre powody, dla których nie należy korzystać z elementów iframe w treści strony
podobna do: http://stackoverflow.com/questions/4687156/how-reliable-is-h2-database – TJD
Dziękuję za skierowanie mnie tam. Jeśli jest coś ekstra do dodania, również jestem szczęśliwy, ponieważ te odpowiedzi mają 18 miesięcy. – bjedrzejewski
Druga odpowiedź na powiązane pytanie zapewnia bezpośredni link do dokumentacji; ten link powinien zawierać odpowiedź na pytanie, czy problemy związane z wielowątkowością uległy zmianie. Jeśli nie, jest to główny powód, aby nie używać go w produkcji, IMO. –