SQLite in der Entwicklung, PostgreSQL in der Produktion - warum nicht?

8

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?

    
Matt Fieldhouse 02.06.2012, 01:42
quelle

3 Antworten

2

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.

    
Bilal Akil 02.06.2012, 01:48
quelle
11

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.

  • Mit
  • 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

  • bekommen
  • Da Sie nur weit verbreitete SQL-Funktionen verwenden müssen, ist es möglicherweise einfacher, Ihre Anwendung auf mysql

  • zu migrieren

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.

    
spike 02.06.2012 01:52
quelle
0
___ qstnhdr ___ SQLite in der Entwicklung, PostgreSQL in der Produktion - warum nicht? ___ answer 10859276 ___

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,

  • SQL-Syntax Unterschiede einschließlich DML, DDL-Anweisungen, gespeicherte Prozeduren, Trigger usw.
  • Performance-Optimierungen, die für eine DB ausgeführt werden, sind auf der anderen nicht gültig.
  • SQLite ist eine eingebettete Datenbank, PostgreSQL ist nicht
  • Sie unterstützen nicht die gleichen Datentypen
  • Unterschiedliche Syntax / Befehle zum Konfigurieren / Setup db. SQLite verwendet PRAGMAs

Man sollte bei einer db-Engine bleiben, es sei denn, man hat einen wirklich guten Grund. Ich kann mir keine vorstellen.

    
___ qstntxt ___

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?

    
___ answer10859210 ___

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.

    
___ tag123postgresql ___ PostgreSQL ist ein Open-Source-Objektrelationales Datenbankverwaltungssystem (ORDBMS), das für alle wichtigen Plattformen einschließlich Linux, UNIX, Windows und OS X verfügbar ist. Bitte geben Sie Ihre genaue Version von Postgres an, wenn Sie Fragen stellen. Fragen zur Administration oder erweiterten Funktionen richten Sie am besten auf dba.stackexchange.com. ___ tag123heroku ___ Heroku ist eine Cloud-Plattform für Ruby, Node.js, Python, Go, PHP und JVM-basierte Anwendungen. Es bietet Git-basierte, GitHub- und API-Bereitstellungsstrategien, eine große Anzahl von als Add-Ons angebotenen Diensten und eine vollständige API. ___ tag123rubyonrails ___ Ruby on Rails ist ein Open-Source-Full-Stack-Webanwendungsframework, das in Ruby geschrieben wurde. Es folgt dem populären MVC-Framework-Modell und ist bekannt für seinen "convention over configuration" -Ansatz für die Anwendungsentwicklung. ___ tag123sqlite ___ SQLite ist eine Softwarebibliothek, die eine eigenständige, serverlose Transaktions-SQL-Datenbank-Engine ohne Konfiguration implementiert. ___ answer10859232 ___

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.

  • Mit
  • %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

  • bekommen
  • Da Sie nur weit verbreitete SQL-Funktionen verwenden müssen, ist es möglicherweise einfacher, Ihre Anwendung auf mysql

  • zu migrieren

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.

    
___
Aditya Naidu 02.06.2012 02:07
quelle