Heroku rät davon ab wegen möglicher Probleme. Ich bin ein SQL-Noob, können Sie die Art von Problemen erklären, die bei der Verwendung unterschiedlicher Datenbanken auftreten können?
Verschiedene Datenbanken interpretieren und befolgen den SQL-Standard unterschiedlich. Wenn Sie beispielsweise Code aus SQLite in PostgreSQL kopieren möchten, besteht eine große Chance, dass es nicht sofort funktioniert. Wenn es nur einfache Abfragen sind, dann vielleicht, aber wenn es um etwas Bestimmtes geht, gibt es eine sehr geringe Chance auf vollständige Kompatibilität.
Einige Datenbanken sind auch aktueller mit dem Standard. Es ist ein ähnliches Schlachtfeld wie das von Internet-Browsern. Wenn Sie schon einmal Websites erstellt haben, wissen Sie, dass Kompatibilität eine Qual für Sie ist, da Sie sie für ältere Versionen und Internet Explorer verwenden müssen. Da einige Datenbanken älter als andere sind und manche sogar älter als die Standards, hätten sie ihre eigene Art, Dinge zu tun, die sie nicht einfach verwerfen und zum Standard springen können, weil sie die Unterstützung für ihre bestehenden größeren Kunden verlieren würden ( Dies ist insbesondere der Fall bei einer Datenbank-Engine namens Oracle). PostgreSQL ist so etwas wie Google Chrome, ziemlich weit oben auf Standards Compliance, aber immer noch mit einigen seiner eigenen kleinen Macken. SQLite ist, wie der Name schon sagt, ein leichtgewichtiges Datenbanksystem. Man könnte annehmen, dass einige der fortgeschritteneren Funktionen aus den Standards fehlen.
Die Datenbank-Engines führen die gleichen Aktionen auch anders aus. Es lohnt sich, eine Datenbank kennen zu lernen und zu verstehen, wie sie funktioniert (tiefer als nur die Abfrageebene), damit Sie das Beste daraus machen können.
Ich habe sqlite3 schon eine Weile in der Entwicklung und Postgres in der Produktion verwendet, bin aber kürzlich überall auf postgres umgestiegen.
Dinge zu beachten, wenn Sie beide verwenden:
Es gibt Unterschiede zwischen sqlite3 und postgres, die Sie beißen werden. Eine allgemeine Sache, die ich fand, ist, dass postgres strenger über Arten in den Fragen ist ( where :string_column => <integer>
funktioniert gut in sqlite und bricht in postgres). Sie möchten definitiv einen Staging-Bereich, der postgres verwendet, wenn Ihr Entwickler sqlite ist und es wichtig ist, wenn Ihre Produktions-App wegen eines SQL-Fehlers ausfällt.
Sqlite ist viel einfacher auf Ihrem lokalen Rechner einzurichten, und es ist großartig, einfach .sqlite-Dateien im db / -Verzeichnis löschen / verschieben zu können.
taps
können Sie Ihre post-grus-Daten von heroku in Ihre lokale sqlite db spiegeln. Es wird viel langsamer, wenn die Datenbank größer wird, und bei einigen 10s von Tabellen und 100K + Zeilen dauert es 20+ mehr Minuten, um es wiederherzustellen.
Sie werden keine postgres-Funktionen wie ilike, die neuen Schlüssel / Wert-Speicher, Volltextsuche
Da Sie nur weit verbreitete SQL-Funktionen verwenden müssen, ist es möglicherweise einfacher, Ihre Anwendung auf mysql
Warum habe ich gewechselt? Ich wollte ein paar Postgres-Features, traf immer wieder Fehler, die beim Testen nicht auffielen, und musste meine Produktions-Db schneller spiegeln können (pg_restore benötigt ~ 1 Minute vs 20+ für Taps). Mein Rat ist, wegen der Einfachheit bei sqlite in dev zu bleiben und dann zu wechseln, wenn / wenn du die Straße runter musst. Der Wechsel von SQLite zu Postgres für die Entwicklung ist so einfach wie das Einrichten von Postgres - es gibt keine zusätzliche Komplexität beim Warten.
Ich war in einer ähnlichen Situation. Im Allgemeinen ist es eine sehr schlechte Idee, verschiedene Datenbank-Engines für Produktion und Test zu verwenden. Es gibt mehrere Gründe,
Man sollte bei einer db-Engine bleiben, es sei denn, man hat einen wirklich guten Grund. Ich kann mir keine vorstellen.
Heroku rät davon ab wegen möglicher Probleme. Ich bin ein SQL-Noob, können Sie die Art von Problemen erklären, die bei der Verwendung unterschiedlicher Datenbanken auftreten können?
Verschiedene Datenbanken interpretieren und befolgen den SQL-Standard unterschiedlich. Wenn Sie beispielsweise Code aus SQLite in PostgreSQL kopieren möchten, besteht eine große Chance, dass es nicht sofort funktioniert. Wenn es nur einfache Abfragen sind, dann vielleicht, aber wenn es um etwas Bestimmtes geht, gibt es eine sehr geringe Chance auf vollständige Kompatibilität.
Einige Datenbanken sind auch aktueller mit dem Standard. Es ist ein ähnliches Schlachtfeld wie das von Internet-Browsern. Wenn Sie schon einmal Websites erstellt haben, wissen Sie, dass Kompatibilität eine Qual für Sie ist, da Sie sie für ältere Versionen und Internet Explorer verwenden müssen. Da einige Datenbanken älter als andere sind und manche sogar älter als die Standards, hätten sie ihre eigene Art, Dinge zu tun, die sie nicht einfach verwerfen und zum Standard springen können, weil sie die Unterstützung für ihre bestehenden größeren Kunden verlieren würden ( Dies ist insbesondere der Fall bei einer Datenbank-Engine namens Oracle). PostgreSQL ist so etwas wie Google Chrome, ziemlich weit oben auf Standards Compliance, aber immer noch mit einigen seiner eigenen kleinen Macken. SQLite ist, wie der Name schon sagt, ein leichtgewichtiges Datenbanksystem. Man könnte annehmen, dass einige der fortgeschritteneren Funktionen aus den Standards fehlen.
Die Datenbank-Engines führen die gleichen Aktionen auch anders aus. Es lohnt sich, eine Datenbank kennen zu lernen und zu verstehen, wie sie funktioniert (tiefer als nur die Abfrageebene), damit Sie das Beste daraus machen können.
Ich habe sqlite3 schon eine Weile in der Entwicklung und Postgres in der Produktion verwendet, bin aber kürzlich überall auf postgres umgestiegen.
Dinge zu beachten, wenn Sie beide verwenden:
Es gibt Unterschiede zwischen sqlite3 und postgres, die Sie beißen werden. Eine allgemeine Sache, die ich fand, ist, dass postgres strenger über Arten in den Fragen ist ( %code% funktioniert gut in sqlite und bricht in postgres). Sie möchten definitiv einen Staging-Bereich, der postgres verwendet, wenn Ihr Entwickler sqlite ist und es wichtig ist, wenn Ihre Produktions-App wegen eines SQL-Fehlers ausfällt.
Sqlite ist viel einfacher auf Ihrem lokalen Rechner einzurichten, und es ist großartig, einfach .sqlite-Dateien im db / -Verzeichnis löschen / verschieben zu können.
%code% können Sie Ihre post-grus-Daten von heroku in Ihre lokale sqlite db spiegeln. Es wird viel langsamer, wenn die Datenbank größer wird, und bei einigen 10s von Tabellen und 100K + Zeilen dauert es 20+ mehr Minuten, um es wiederherzustellen.
Sie werden keine postgres-Funktionen wie ilike, die neuen Schlüssel / Wert-Speicher, Volltextsuche
Da Sie nur weit verbreitete SQL-Funktionen verwenden müssen, ist es möglicherweise einfacher, Ihre Anwendung auf mysql
Warum habe ich gewechselt? Ich wollte ein paar Postgres-Features, traf immer wieder Fehler, die beim Testen nicht auffielen, und musste meine Produktions-Db schneller spiegeln können (pg_restore benötigt ~ 1 Minute vs 20+ für Taps). Mein Rat ist, wegen der Einfachheit bei sqlite in dev zu bleiben und dann zu wechseln, wenn / wenn du die Straße runter musst. Der Wechsel von SQLite zu Postgres für die Entwicklung ist so einfach wie das Einrichten von Postgres - es gibt keine zusätzliche Komplexität beim Warten.
Tags und Links sqlite ruby-on-rails postgresql heroku