Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Derby oder MySQL oder...?

Warum sind Derby und MySQL das einzige RDMBS, das Sie in Betracht ziehen? Wenn Sie Derby sagen , sollten Sie sich HSQLDB ansehen , H2 , SQLite auch. Wenn Sie MySQL sagen , sollten Sie sich Postgres ansehen auch (das viel mehr Funktionen hat).

Dies ist nur um einige kostenlose RDBMS zu nennen. Natürlich, wie Charlie es bereits ausdrückte, gibt es noch viele andere und viele Gründe, in beide Richtungen zu gehen. Schauen Sie sich diese (meiner Meinung nach ausgezeichnete) Vergleichsseite auf Wikipedia an, auf der Sie die Vorteile und Einschränkungen aller RDBMS finden:

http://en.wikipedia.org/wiki/Vergleich_von_relationalen_Datenbankverwaltungssystemen

Was Ihre Anforderung betrifft, dass Ihre Webanwendung "herunterladbar" sein soll, können Sie natürlich ein RDBMS (eines von Derby, H2, HSQLDB) in Ihre Webanwendung einbetten. Sie können aber auch einfach Ihre MySQL- oder Postgres- oder was auch immer-Integration konfigurierbar machen und Ihren Downloadern Anweisungen geben, wie sie Ihre Webapp selbst einrichten können. Immerhin, wenn Sie eine Container-konfigurierte DataSource verwenden für Ihre Webapp kann diese Konfiguration einfach durchgeführt werden.

Nun, auch wenn Sie denken, dass es für Sie einfacher sein könnte, Ihre Webapp mit einer eingebetteten Datenbank zu entwickeln, sollten Sie immer einen Schritt voraus denken. Fragen wie:

  • Werden Sie sich direkt mit dieser Datenbank verbinden können, um Dateninkonsistenzen einfach zu korrigieren? (Es wird uns allen passieren)
  • Können Sie das Schema einfach ändern?
  • Können Sie Ihre Daten einfach sichern?
  • etc etc... es gibt auch noch mehr Wartungsfragen

Da Ihre Kommentare darauf hindeuten, dass Ihre Daten mit der Zeit zunehmen und bestehen bleiben sollten, würde ich keine eingebettete Version wählen, sondern die Daten von der Anwendung getrennt halten. Beachten Sie, dass dies Derby nicht aus Ihrem Anwendungsdesign ausschließt. Es bedeutet lediglich, dass Sie Derby als eigenständigen Server ausführen müssen.