2015-06-17 16 views
5

Używam PLV8 do pisania wyzwalacza i procedur przechowywanych dla PostgreSQL. Do tej pory nie widzę wad w porównaniu z PLPGSQL. Zwłaszcza jeśli pracujesz z JSON wydaje się jeszcze bardziej inteligentny niż PLPGSQL. Czy są jakieś wady lub ograniczenia związane z używaniem PLV8? Czy PLV8 może być pełnym zamiennikiem PLPGSQL? Byłoby wspaniale, gdyby ktoś mógł podzielić się z tym swoim doświadczeniem.wady lub ograniczenia plv8?

+0

Jedyną (bardzo małą) wadą, jaką widzę: należy jawnie zainstalować ją dla każdej tworzonej bazy danych. PL/pgSQL jest zawsze dostępny domyślnie. Ale tylko ty ** możesz zdecydować, czy jest to pełny zamiennik, czy nie: ponieważ to całkowicie zależy od wymagań, które masz dla danego języka. –

+0

dzięki. Pytam, ponieważ chcę wiedzieć, czy są jakieś problemy, o których obecnie nie myślę. Jeśli zdecyduję się dzisiaj użyć PLV8 do nowego projektu i po 3 miesiącach muszę się nauczyć, że ograniczenia będą złe. – Rainer

+1

'plpgsql' używa natywnie typów danych SQL, co jest zaletą w łatwości użycia, której nie ma żaden inny język PL. Jeśli planujesz używać złożonych typów danych, takich jak 'hstore' lub' ltree', będziesz musiał poradzić sobie z ich reprezentacją tekstową w plv8. Ale obsługuje tablice, typy kompozytowe, setof, ... które są już całkiem dobre. –

Odpowiedz

7

Zalety i wady PLV8 są takie same jak zalety i wady PLPerl, PLPython i innych języków PL.

  • Nie jest zintegrowany z silnikiem PostgreSQL - przetwarzanie wyników instrukcji SQL może być wolniejsze. PLpgSQL jest w pełni zintegrowany z silnikiem PostgreSQL.
  • SQL nie jest zintegrowany z językiem - nie można wykonać statycznej analizy wbudowanego SQL. Jest to możliwe z PLpgSQL - patrz plpgsql_check.
  • Potrafi wykonać tańsze obliczenia matematyczne, manipulacje ciągami i tablicami są zwykle szybsze niż w PLpgSQL.
  • Może korzystać z bibliotek opracowanych dla języków - Perl - CPAN, ...
  • JavaScript, Perl, Python są językami ogólnymi - więc wszelkie ogólne zadania są tam dobrze zaimplementowane.
  • PLpgSQL to dojrzały język przeznaczony do manipulowania danymi w środowisku bazy danych relacji. Prawie wszystko, czego potrzebują deweloperzy do pracy danych z danymi. Iteracja nad wynikiem, pobieranie danych z bazy danych wymaga mniej czytelnego kodu.

PLpgSQL jest idealnym językiem do manipulacji danymi za pośrednictwem języka SQL. Inne PL jest lepsze dla czegokolwiek innego - IO, Sieć, specjalnego formatowania, powolne obliczenia numeryczne, ...

+0

Wspomniany rodzaj analizy jest punktem, o którym nie wiedziałem, dziękuje Pavel. O wydajności .. W międzyczasie redaguję niektóre artykuły i mam wrażenie, że w "normalnych" przypadkach (np. Typowych portali e-commerce) różnice są bardzo małe. Ale na pewno są specjalne przypadki. Tak więc, jeszcze raz dziękuję! – Rainer

+0

Wydajność - to zależy - rozmiar bazy danych, złożoność zapytania, rozmiar zwróconego zestawu wyników, ... –

0

Trochę późno, ale nie może kill zapytania uruchomiony skrypt plv8, jedynym sposobem jest ponowne uruchomienie cały serwer postgresql. To ogromna wada, a nasz zespół myśli o migracji do PLpgPython.