PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jaki jest właściwy sposób korzystania z modułu postgresql node.js?

Jestem autorem node-postgres. Po pierwsze, przepraszam, że dokumentacja nie wyjaśniła właściwej opcji:to moja wina. Spróbuję to poprawić. Napisałem właśnie teraz Gist, aby to wyjaśnić, ponieważ rozmowa stała się zbyt długa dla Twittera.

Korzystanie z pg.connect to droga do zrobienia w środowisku internetowym.

Serwer PostgreSQL może obsłużyć tylko 1 zapytanie na raz na połączenie. Oznacza to, że masz 1 globalny new pg.Client() połączona z Twoim backendem, cała Twoja aplikacja jest wąska w zależności od tego, jak szybko postgrescan odpowiada na zapytania. Dosłownie uporządkuje wszystko, kolejkując każde zapytanie. Tak, jest asynchroniczny, więc to jest w porządku... ale czy nie pomnożyłbyś swojej przepustowości 10-krotnie? Użyj pg.connect ustaw pg.defaults.poolSize do czegoś rozsądnego (robimy 25-100, nie jestem jeszcze pewien właściwej liczby).

new pg.Client jest wtedy, gdy wiesz, co robisz. Kiedy z jakiegoś powodu potrzebujesz jednego długowiecznego klienta lub musisz bardzo dokładnie kontrolować cykl życia. Dobrym tego przykładem jest użycie LISTEN/NOTIFY . Klient nasłuchujący musi być w pobliżu i podłączony, a nie udostępniany, aby mógł poprawnie obsłużyć NOTIFY wiadomości. Innym przykładem może być otwieranie pojedynczego klienta w celu zabicia czegoś lub w skryptach wiersza poleceń.

Bardzo pomocną rzeczą jest scentralizowanie całego dostępu do bazy danych w aplikacji w jednym pliku. Nie zaśmiecaj pg.connect połączeń lub nowych klientów w całym tekście. Miej plik taki jak db.js wygląda to mniej więcej tak:

module.exports = {
   query: function(text, values, cb) {
      pg.connect(function(err, client, done) {
        client.query(text, values, function(err, result) {
          done();
          cb(err, result);
        })
      });
   }
}

W ten sposób możesz zmienić swoją implementację z pg.connect do niestandardowej puli klientów lub czegokolwiek innego i musisz zmieniać rzeczy tylko w jednym miejscu.

Spójrz na moduł node-pg-query, który właśnie to robi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować wielkość liter w PostgreSQL

  2. Kolumna PostgreSQL 'foo' nie istnieje

  3. Zapytanie SQL, aby uzyskać wszystkie wartości, jakie może mieć wyliczenie

  4. Zapytanie Railsowe typu danych Postgres JSON

  5. STWÓRZ JĘZYK plpython3u – PostgreSQL 9.6