8 điểm bởi GN⁺ 2024-07-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • Pongo tận dụng hỗ trợ JSONB để coi PostgreSQL như một cơ sở dữ liệu tài liệu
    • JSONB lưu trữ dữ liệu JSON ở định dạng nhị phân, giúp cải thiện hiệu năng và hiệu quả lưu trữ
  • Định dạng nhị phân của JSONB trong PostgreSQL cho phép dữ liệu được phân tích cú pháp sẵn, giúp thao tác đọc và ghi nhanh hơn
    • JSONB hỗ trợ các tùy chọn lập chỉ mục nâng cao như GIN và GiST, giúp tăng tốc độ tìm kiếm
    • JSONB cho phép lưu trữ dữ liệu bán cấu trúc trong khi vẫn sử dụng được khả năng truy vấn mạnh mẽ của PostgreSQL
  • Pongo có phải là ORM không?
    • Không. Nó tập trung vào việc xử lý hiệu quả các đặc tính của dữ liệu tài liệu
    • Các ORM cho Node.js có thể xử lý JSONB, nhưng với truy vấn nâng cao thì phải dùng JSONPath hoặc các hàm JSONB
    • Pongo xử lý phần đó thay cho bạn
  • Đã sẵn sàng cho production chưa?
    • Hiện tại dùng khá an toàn, nhưng chưa tương thích 100% với MongoDB
    • Pongo là một dự án mới nên có thể còn thiếu một số tính năng
    • Đây là dự án cộng đồng; nếu phát hiện vấn đề, nên mở GH issue hoặc Pull Request để mở rộng hỗ trợ hay bổ sung phạm vi kiểm thử

Tóm tắt của GN⁺

  • Pongo là công cụ dùng PostgreSQL như một cơ sở dữ liệu tài liệu và chuyển đổi MongoDB API thành truy vấn PostgreSQL
  • Tận dụng lợi thế của JSONB để cải thiện hiệu năng và hiệu quả lưu trữ
  • Hỗ trợ truy vấn nâng cao và lập chỉ mục, mang lại tính linh hoạt và tính nhất quán
  • Pongo không phải ORM, mà tập trung vào việc xử lý hiệu quả các đặc tính của dữ liệu tài liệu
  • Đây là dự án mới, có thể còn thiếu một số tính năng nhưng có thể được mở rộng nhờ đóng góp từ cộng đồng

1 bình luận

 
GN⁺ 2024-07-08
Ý kiến Hacker News
  • Đã thêm Pongo vào mục NoSQL
  • Mô hình lai là lựa chọn tối ưu. Các trường cốt lõi để ở cột thông thường, còn cấu trúc dữ liệu động thì giữ bằng JSONB
  • Về mặt kỹ thuật thì rất ấn tượng, nhưng README cần có phần "tại sao". Không rõ là vì muốn dùng Mongo API, hay vì muốn sao chép mã từ các dự án hiện có
    • Nếu là để tái sử dụng truy vấn từ dự án khác thì AI làm việc này khá tốt
  • Đã dùng cách tiếp cận tương tự khi di chuyển một dự án từ Mongo sang Postgres. Hiệu năng được cải thiện rất nhiều
    • Trong các dự án tương lai, dự định sẽ loại bỏ hoàn toàn mọi điểm tương đồng với Mongo
  • Không rõ Pongo có tương thích với Mongoose hay không. Vì phần lớn người dùng Mongo đều dùng Mongoose, nên nếu hỗ trợ thì sẽ thu hút được nhiều người dùng hơn
  • Vào tháng 11 năm 2023 đã từng đăng một tweet đùa về Pongo. Chỉ là một sự trùng hợp thú vị, nhưng có thể sẽ khiến người ta nghĩ rằng mình đoán được tương lai
  • Dùng khá nhiều cột JSONB. Nó phù hợp với một số ứng dụng nhất định, nhưng làm tăng độ phức tạp của truy vấn và làm mất đi những cách cải thiện hiệu năng truy vấn có được từ cách tiếp cận quan hệ
    • JSONB hữu ích, nhưng không nên từ bỏ các ưu điểm của cơ sở dữ liệu quan hệ
  • Không rõ so với FerretDB thì thế nào
  • MongoDB đã hỗ trợ tính năng tương đương với serializable isolation của Postgres từ vài năm trước. Không rõ "lợi ích về tính nhất quán mạnh" ở đây có nghĩa là gì
  • Oracle Database cũng đã cung cấp API tương thích MongoDB từ vài năm trước