15 điểm bởi GN⁺ 2024-08-14 | 3 bình luận | Chia sẻ qua WhatsApp
  • Một sandbox Postgres chạy trực tiếp trong trình duyệt, có hỗ trợ AI
  • Có thể tạo ngay lập tức số lượng cơ sở dữ liệu Postgres không giới hạn (sắp tới cũng có thể triển khai lên S3)
  • Mỗi cơ sở dữ liệu được ghép cặp với một mô hình ngôn ngữ lớn (LLM) để mang lại nhiều trường hợp sử dụng thú vị khác nhau:
    • Tạo bảng bằng cách kéo và thả tệp CSV
    • Tạo và xuất báo cáo
    • Tạo biểu đồ
    • Tạo sơ đồ cơ sở dữ liệu
  • Mọi thao tác đều được thực hiện cục bộ trong trình duyệt

Demo sử dụng

  • Khi bạn muốn truy vấn và trực quan hóa tệp CSV thật nhanh
  • Khi bạn muốn dùng ChatGPT để viết SQL và thử chạy trên cơ sở dữ liệu thực
  • Khi bạn muốn lên kế hoạch cho một dự án mới và giao việc thiết kế cơ sở dữ liệu cho AI

Cách hoạt động

  • Mọi truy vấn đều chạy trong trình duyệt
  • Điều này khả thi nhờ PGlite, phiên bản WASM của Postgres có thể chạy trực tiếp trong trình duyệt

Động lực phát triển

  1. Phát triển dựa trên AI: Tái hình dung cách Postgres tương tác với AI
  2. Sandbox hóa Postgres: Có thể chạy nhanh và dùng một lần trong trình duyệt
  3. Cơ sở dữ liệu chi phí thấp: Tiềm năng cung cấp nhiều cơ sở dữ liệu với chi phí rẻ
Quảng cáo

Tính năng và cách vận hành

Trợ lý AI

  • Ghép PGlite với GPT-4o để cấp cho AI toàn quyền trên cơ sở dữ liệu.
  • AI có thể thực hiện liên tiếp nhiều tác vụ, tạo cảm giác tự nhiên hơn như con người.

Nhập và xuất CSV

  • Kéo và thả tệp CSV để tự động tạo bảng.
  • AI phân tích header và các dòng mẫu của CSV để xác định kiểu dữ liệu.
  • Nếu phát sinh lỗi SQL, AI sẽ tự thử sửa.

Biểu đồ

  • Chỉ cần thêm từ "chart" vào tin nhắn, AI sẽ chạy truy vấn phù hợp và tạo biểu đồ.
  • Sử dụng Chart.js để render biểu đồ.

Sơ đồ ER và migration

  • AI tạo các câu lệnh CREATEALTER để dựng sơ đồ ER từ cơ sở dữ liệu thực.
  • Sử dụng phiên bản tương thích trình duyệt của postgres-meta để nạp các bảng PGlite vào JavaScript và render bằng công cụ trực quan hóa schema.

Tìm kiếm ngữ nghĩa và RAG

  • Hỗ trợ tìm kiếm vector trong trình duyệt bằng extension pgvector.
  • Dùng Transformers.js để tạo embedding văn bản rồi lưu trữ và truy vấn trong PGlite.
Quảng cáo

Triển khai

  • Có kế hoạch triển khai cơ sở dữ liệu PGlite lên S3 để hỗ trợ nhiều trường hợp sử dụng với chi phí thấp.

Phân tích sâu về PGlite

PGlite là gì?

  • PGlite là bản build WASM của Postgres, có thể chạy trên trình duyệt, Node.js và Bun.
  • Rất phù hợp cho unit test, phát triển cục bộ và phát triển từ xa.

Tính bền vững dữ liệu

  • Trên Node hỗ trợ hệ thống tệp gốc, còn trên trình duyệt hỗ trợ IndexedDB và OPFS.

Hỗ trợ extension

  • Hỗ trợ các extension hữu ích như pgvectorlive.
Quảng cáo

Tổng quan kỹ thuật

  • Dựa trên chế độ single-user của Postgres để có thể chạy trong WASM.
  • Nhiều tính năng của Postgres đã được điều chỉnh cho phù hợp với WASM.

Sắp ra mắt

  • Sẽ triển khai cơ sở dữ liệu lên S3 để có thể truy cập qua Internet.
  • Dự kiến bổ sung hỗ trợ nhiều định dạng tệp hơn, chia sẻ cơ sở dữ liệu và xuất cơ sở dữ liệu.

Mã nguồn mở

  • Toàn bộ công việc được cung cấp dưới dạng mã nguồn mở:
    • PGlite (Apache 2.0)
    • pg-gateway (MIT)
    • postgres-new (Apache 2.0)
    • transformers.js

Tóm tắt của GN⁺

  • postgres.new là một sandbox Postgres chạy trong trình duyệt, giúp thao tác cơ sở dữ liệu dễ dàng hơn nhờ hỗ trợ AI.
  • Sử dụng PGlite giúp tạo cơ sở dữ liệu nhanh và rẻ, đồng thời cung cấp nhiều tính năng dựa trên AI.
  • Các tính năng như trực quan hóa dữ liệu, tạo sơ đồ ER và tìm kiếm ngữ nghĩa có thể khiến đây trở thành công cụ hữu ích cho lập trình viên.
  • Các dự án khác có tính năng tương tự gồm Supabase, ElectricSQL, v.v.

3 bình luận

 
yangeok 2024-08-20

Thì ra là supabase.

 
GN⁺ 2024-08-14
Ý kiến Hacker News
  • Chia sẻ trải nghiệm đã tạo 3 cơ sở dữ liệu bằng postgres.new

    • Đã tạo thành công cơ sở dữ liệu đơn hàng khách hàng, hệ thống theo dõi issue và mô hình quan hệ gia đình
    • Trong mô hình quan hệ gia đình, công cụ cũng xử lý tốt các quan hệ phức tạp như anh em họ và chú/bác/cậu
    • Một số quan hệ tương hỗ (ví dụ: quan hệ anh chị em) bị thiếu, nhưng đã được sửa sau khi yêu cầu rà soát dữ liệu
    • Được đánh giá là một công cụ rất hữu ích
  • Được đánh giá là một bản demo kỹ thuật cho thấy các giới hạn của AI

    • Tạo ra SQL không hợp lệ nên phát sinh lỗi
    • SQL được tạo ra sinh ra một tập bảng rời rạc, không liên kết
    • Nhắc đến việc vẫn cần phải rà soát toàn bộ mã
    • Các hệ thống mới thường cần yếu tố trừu tượng hoặc thông minh, nhưng hệ thống này chỉ tạo ra các hệ thống đơn giản
    • Tự viết mã còn dễ hơn
    • Cấm merge request do LLM tạo trong tổ chức vì mã không được tối ưu và có nhiều lỗi
    • Với thiết kế LLM hiện tại thì khó có thể vượt qua điều này
  • Khi bấm nút "New database" thì không có thay đổi gì

    • Chưa đăng nhập Github, nhưng ngay từ đầu cũng không có ý định dùng tính năng AI
    • Thất vọng vì ChatGPT là bắt buộc
    • Không hài lòng khi cách tiếp cận local-first lại bị giới hạn bởi AI
  • Rất ấn tượng

  • Có ý kiến cho rằng sẽ tốt hơn nếu có thể dùng mà không cần tính năng AI

    • Hỏi liệu bản dựng WASM có cho phép dùng Postgres như một cơ sở dữ liệu nhúng hay không
  • Đánh giá công cụ này rất hữu ích cho việc thiết kế cơ sở dữ liệu

    • Hỏi liệu có thể vẽ sơ đồ từ schema cơ sở dữ liệu hiện có hay không
    • Trong môi trường doanh nghiệp, tính năng biểu diễn schema được phát triển theo kiểu migration của Supabase hoặc bằng công cụ như Flyway dưới dạng sơ đồ sẽ rất hữu ích
  • Từng hoài nghi về việc kết hợp AI/LLM với workflow hiện có, nhưng cho rằng trường hợp này là ổn

    • LLM hữu ích trong việc tạo dữ liệu để chèn vào cơ sở dữ liệu
    • Hiểu vì sao không dùng được trên di động, nhưng đề nghị cung cấp thông tin tóm tắt cho người dùng di động
  • Một kỹ sư Supabase cho biết đã rất thú vị khi cùng đội Electric phát triển công cụ này

    • Đã có quá trình vượt qua các trở ngại kỹ thuật
    • Sẽ tiếp tục cải thiện bằng cách phản ánh các phản hồi nhận được
  • Hướng dẫn người dùng hãy dùng postgres.new trên laptop hoặc desktop

    • Cho biết không có vấn đề gì khi dùng Webkit/Safari