2015-06-17 16 views
5

Tôi đang chơi xung quanh với PLV8 để viết trình kích hoạt và các thủ tục được lưu trữ cho PostgreSQL. Cho đến nay tôi không thực sự thấy bất lợi so với PLPGSQL. Đặc biệt là nếu làm việc với JSON, nó có vẻ thông minh hơn PLPGSQL. Có những nhược điểm hay hạn chế nào nếu sử dụng PLV8? PLV8 có thể thay thế hoàn toàn cho PLPGSQL không? Sẽ thật tuyệt nếu ai đó có thể chia sẻ kinh nghiệm của anh về điều này.plv8 bất lợi hoặc hạn chế?

+0

Chỉ bất lợi (rất nhỏ) tôi có thể thấy: bạn cần cài đặt nó một cách rõ ràng cho mỗi và mọi cơ sở dữ liệu bạn tạo. PL/pgSQL luôn có sẵn theo mặc định. Nhưng chỉ ** bạn ** mới có thể quyết định xem nó có phải là một sự thay thế hoàn toàn hay không: bởi vì điều đó hoàn toàn phụ thuộc vào các yêu cầu bạn có cho một ngôn ngữ. –

+0

cảm ơn. Tôi hỏi vì tôi muốn biết nếu có vấn đề tôi hiện không nghĩ đến. Nếu tôi quyết định ngày hôm nay sử dụng PLV8 cho một dự án mới và sau 3 tháng tôi phải học có những hạn chế sẽ là xấu. – Rainer

+1

'plpgsql' sử dụng các kiểu dữ liệu SQL nguyên bản, một lợi thế trong tính dễ sử dụng mà không có PL nào khác có. Nếu bạn dự định sử dụng các kiểu dữ liệu phức tạp như 'hstore' hoặc' ltree', bạn sẽ phải xử lý văn bản đại diện của chúng trong plv8. Nhưng nó hỗ trợ mảng, các loại tổng hợp, setof, ... mà là khá tốt rồi. –

Trả lời

7

Những ưu điểm và nhược điểm của PLV8 cũng giống như ưu điểm và nhược điểm của PLPerl, PLPython và các ngôn ngữ PL khác.

  • Nó không được tích hợp với công cụ PostgreSQL - kết quả câu lệnh SQL xử lý có thể chậm hơn. PLpgSQL được tích hợp đầy đủ vào công cụ PostgreSQL.
  • SQL không được tích hợp với ngôn ngữ - không thể phân tích tĩnh SQL nhúng. Có thể với PLpgSQL - xem plpgsql_check.
  • Có thể thực hiện các phép tính toán học đắt hơn, thao tác với chuỗi và mảng thường nhanh hơn trong PLpgSQL.
  • Có thể sử dụng thư viện được phát triển cho các ngôn ngữ - Perl - CPAN, ...
  • JavaScript, Perl, Python là các ngôn ngữ chung - vì vậy mọi tác vụ chung đều được triển khai ở đó.
  • PLpgSQL là ngôn ngữ trưởng thành được thiết kế để thao tác với dữ liệu trong môi trường cơ sở dữ liệu quan hệ. Hầu như tất cả những gì nhà phát triển cần cho dữ liệu làm việc với dữ liệu là có. Việc lặp lại kết quả, lấy dữ liệu từ cơ sở dữ liệu cần mã ít dễ đọc hơn.

PLpgSQL là ngôn ngữ hoàn hảo để thao tác dữ liệu thông qua ngôn ngữ SQL. PL khác là tốt hơn cho bất cứ điều gì khác - IO, mạng, định dạng đặc biệt, tính toán số chậm, ...

+0

Loại phân tích được đề cập là điểm tôi không biết, cảm ơn Pavel. Về hiệu suất .. Tôi đỏ một số bài báo trong thời gian chờ đợi và có ấn tượng rằng trong các trường hợp "bình thường" (ví dụ: các cổng thương mại điện tử điển hình) chỉ có những khác biệt về hiệu suất rất nhỏ. Nhưng chắc chắn, có những trường hợp đặc biệt. Vì vậy, cảm ơn một lần nữa! – Rainer

+0

Hiệu suất - nó phụ thuộc vào kích thước cơ sở dữ liệu, độ phức tạp của truy vấn, kích thước của kết quả trả về, ... –

0

Một chút trễ, nhưng bạn không thể truy vấn hiện đang chạy tập lệnh plv8, cách duy nhất là khởi động lại toàn bộ máy chủ postgresql. Đó là một bất lợi lớn và nhóm của chúng tôi đang suy nghĩ về việc chuyển sang PLpgPython.

Các vấn đề liên quan