Ich überlege gerade, eine Anwendung zu erstellen, die die h2-Datenbank als Hauptdatenbank verwendet (weil sie mit JBoss geliefert wird), aber ich bin etwas besorgt darüber. Ich habe an einigen Stellen (vor allem Diskussionsrunden) gelesen, dass man h2 nicht in der Produktion verwenden sollte. Gibt es dafür bestimmte Gründe?Gibt es Gründe, warum die h2-Datenbank nicht in der Produktion verwendet werden sollte?
Antwort
Die wichtigsten Gründe nicht H2 zu verwenden (oder HSQLDB oder Derby) für die Produktion sind:
Wahrscheinlichkeit kritischer Fehler: Im Vergleich zu den 'großen' Datenbanken Oracle, IBM DB 2, MS SQL Server , MySQL, PostgreSQL, die Java-Datenbanken sind relativ neu und daher möglicherweise nicht so stabil (haben Bugs). Beachten Sie, dass dies für alle neueren Produkte gilt, einschließlich NoSQL-Datenbanken und neue Versionen der "großen" Datenbanken. Im Allgemeinen gilt: Je mehr ein Produkt getestet wird, desto geringer ist die Wahrscheinlichkeit von Fehlern. Natürlich hängt es von Ihrem Anwendungsfall ab, ob es sinnvoll ist, für diesen Vorteil (möglicherweise viel Geld) zu zahlen. In jedem Fall müssen Sie die Daten sichern, z. B. im Falle eines Hardwarefehlers.
Fehlende Funktionen und Optimierungen: Die 'großen' Datenbanken haben mehr Funktionen und Optimierungen für spezielle Anwendungsfälle. Ob Sie diese Funktionen benötigen oder nicht, bleibt Ihnen überlassen.
Kommerzielle Unterstützung: Es ist einfacher, Unterstützung für größere Datenbanken zu erhalten. Bitte beachten Sie auch commercial support is available for H2. HSQLDB bietet auch kommerzielle Unterstützung. IBM hat früher Apache Derby (IBM Cloudscape) unterstützt, aber ich glaube, sie haben aufgehört. nur
Hat sich Ihre Position 2 Jahre später weiterentwickelt? – Stephan
Nein, ich denke, die Situation ist immer noch dieselbe. –
Hat sich Ihre Position 3 Jahre später geändert? : D (mit dem neuen MVStore im Hinterkopf?) –
In meiner persönlichen Erfahrung, H2 Version 1.2.147 scheint sehr zuverlässig, 100% Erfolg über 60 Installationen in, aber meine Kunden haben nur relativ kleine Datenbanken (400 MB sind die größeren Größen) und mein Programm verwendet eine Verbindung (lol), erst vor kurzem habe ich mehr als eine Verbindung benutzt, aber mit multi_threaded false. Ich hatte Korruption mit einigen früheren Versionen und ich habe Angst, noch neuere Versionen zu versuchen.
Wenn Sie sagen, dass Sie nur eine Verbindung verwenden, meinen Sie damit, dass nur ein Benutzer auf die Datenbank zugreift, oder wäre dies gleichbedeutend damit, dass sie auf JBoss und JBoss implementiert wird? – bjedrzejewski
Für mich ist es kein Problem H2DB in der Produktion für mittelgroße Projekte nicht zu verwenden. Wir haben ein Produktionssystem für ungefähr fünfzehn Kunden implementiert, die alle mit H2DB arbeiten. Wir haben sehr einfache Installationen und Backups erlebt und trotzdem keine Probleme bezüglich der Datenbank.
- 1. Warum sollte der "=" R-Operator nicht in Funktionen verwendet werden?
- 2. Gibt es irgendwelche Gründe, warum ich ObjectId in meiner RESTful-URL nicht verwenden sollte
- 3. Warum sollte Ruby nicht zum Erstellen einer Spinne verwendet werden?
- 4. Warum sollte die Iteration anstelle der Tail-Rekursion verwendet werden?
- 5. In Java, warum sind Arrays Objekte? Gibt es bestimmte Gründe?
- 6. Autorotation in ios5 - die häufigsten Gründe warum es scheitert?
- 7. Warum sollte ich Entity Framework Code zuerst verwenden, wenn es nicht sicher in der Produktion verwendet werden kann und Dinge wie Indizes nicht beschrieben werden können
- 8. Gibt es irgendwelche Gründe, warum ein C# -Entwickler Emacs/Vim lernen sollte?
- 9. Warum wird DirectFB nicht häufiger in GNU/Linux verwendet? Gibt es lähmende Einschränkungen, die es in X11 nicht gibt?
- 10. Was ist std :: Verfall und wann sollte es verwendet werden?
- 11. Wird CocoaPods in der Produktion verwendet?
- 12. Warum werden die Standarddatentypen in der Win32-API nicht verwendet?
- 13. Wann sollte Flask.g verwendet werden?
- 14. Wann sollte die didMoveToWindow-Methode verwendet werden?
- 15. Gründe, warum PHP Mail möglicherweise nicht funktioniert
- 16. Xcode | Warum sollte eine Startbildschirmdatei über die Startbilderquelle verwendet werden?
- 17. Gründe, warum abstrakte und strictfp-Schlüsselwörter nicht zusammen in einer Methodendeklaration verwendet werden können?
- 18. BackgroundTask gibt null zurück Warum? Es sollte die Zeichenfolge zurückgegeben werden, die in try-Block
- 19. Wird Entity Framework in der Produktion verwendet?
- 20. Kann WampServer erfolgreich in der Produktion verwendet werden?
- 21. Gibt es Gründe, die CSS-Regel "@import" noch zu verwenden?
- 22. Kryo Serialisierungsbibliothek: Wird es in der Produktion verwendet?
- 23. Was ist die Javascript-Methode CollectGarbage()? Wann und warum sollte es verwendet werden?
- 24. Warum gibt es in PHP PHP nicht?
- 25. Warum sollte in diesem Fall eine ConcurrentQueue verwendet werden?
- 26. Gibt es Gründe, warum das StringPiece/StringRef-Idiom nicht beliebter ist?
- 27. Sollte ViewData niemals verwendet werden?
- 28. Warum sollte session_write_close in langen Abfragen verwendet werden?
- 29. Wann sollte dynamic_cast der Referenz verwendet werden?
- 30. Wann sollte "dev-master" in composer.json verwendet werden?
ähnlich wie: http://stackoverflow.com/questions/4687156/how-reliable-is-h2-database – TJD
Vielen Dank für die Anweisung mich dort. Wenn es noch etwas hinzuzufügen gibt, freue ich mich auch zu lesen, da diese Antworten 18 Monate alt sind. – bjedrzejewski
Die zweite Antwort auf die verknüpfte Frage bietet einen direkten Link zu der Dokumentation; Dieser Link sollte die Antwort liefern, ob sich die Multithreading-Probleme geändert haben oder nicht. Wenn nicht, ist das ein wichtiger Grund, es nicht in der Produktion zu verwenden, IMO. –