17 điểm bởi GN⁺ 2024-12-11 | 4 bình luận | Chia sẻ qua WhatsApp
  • Limbo là một dự án thử nghiệm nhằm tái hiện thực SQLite bằng Rust, ngôn ngữ mang lại an toàn bộ nhớ
    • Yêu thích đặc tính nhúng của SQLite, nhưng muốn một mô hình phát triển cởi mở hơn nên đã bắt đầu dự án libSQL
  • Lý do fork SQLite: có thể dễ dàng tích hợp các tính năng mới và vẫn duy trì khả năng tương thích với mã hiện có
    • Nhược điểm: bộ test của SQLite là độc quyền và được viết bằng C, khiến việc tiến hóa mã nguồn trở nên khó khăn
  • Cách tiếp cận mới
    • Đã trải nghiệm những giới hạn của SQLite trong quá trình bổ sung tính năng tìm kiếm vector
    • Khám phá khả năng viết lại SQLite từ đầu để vừa giữ tương thích vừa có thể bổ sung tính năng một cách táo bạo hơn
  • Bước tiếp theo
    • Chuyển Limbo thành dự án chính thức của Turso
    • Mục tiêu là xây dựng một kiến trúc mới mang lại an toàn bộ nhớ trong khi vẫn giữ được độ tin cậy như SQLite
  • Thử thách độ tin cậy của SQLite
    • Đảm bảo độ tin cậy cao thông qua kiểm thử mô phỏng xác định (DST)
    • Hợp tác với Antithesis để sử dụng framework DST ở cấp độ hệ thống
  • Trạng thái hiện tại
    • I/O bất đồng bộ hoàn toàn: Limbo có thiết kế bất đồng bộ hoàn toàn, giải quyết vấn đề giao diện đồng bộ của SQLite
    • Thiết kế cho WASM: được thiết kế có tính đến việc sử dụng trong môi trường WASM
    • Hiệu năng: trong nhiều tác vụ, hiệu năng tương đương hoặc nhanh hơn SQLite
    • Tính đơn giản: mang lại trải nghiệm người dùng tốt hơn bằng cách loại bỏ các tính năng ít quan trọng hơn trong môi trường hiện đại
  • Thông tin thêm
    • Limbo được cung cấp trên GitHub theo giấy phép MIT
    • Mời những ai quan tâm đến việc xây dựng cơ sở dữ liệu nhúng muốn đưa lời hứa của SQLite lên một tầm cao mới tham gia

4 bình luận

 
seonwoo960000 2024-12-21

Thật thú vị khi dự án mình từng đóng góp lại xuất hiện trên Hacker News haha

 
GN⁺ 2024-12-11
Ý kiến trên Hacker News
  • SQLite có vẻ là một dự án không cần phải viết lại nhờ chất lượng mã nguồn và quy trình kiểm thử nghiêm ngặt

    • Có ý kiến cho rằng nên ưu tiên viết lại các mã C khác trước
  • Tranh luận rằng SQLite không "mở cho đóng góp" đã bỏ qua việc nhận đóng góp không phải lúc nào cũng đồng nghĩa với chấp nhận đóng góp

    • SQLite có quy trình dành cho đóng góp, và họ triển khai các tính năng được đề xuất theo cách đó
    • Các dự án khác trong hệ sinh thái SQLite như Litestream và LiteFS cũng có chính sách đóng góp tương tự
  • Có người từng có cái nhìn tiêu cực về thông báo ban đầu của nhánh fork từ SQLite3 sang LibSQL

    • Họ cho rằng nhánh fork này nhiều khả năng sẽ thất bại vì bộ kiểm thử của SQLite3 là độc quyền
    • Tuy nhiên, nếu có một giá trị sản phẩm lớn như việc viết lại bằng ngôn ngữ an toàn bộ nhớ, thì nhánh fork đó vẫn có ý nghĩa
  • Để đạt hiệu năng tối đa, nên chọn chế độ WAL và vô hiệu hóa POSIX advisory locking

    • Có ý kiến thắc mắc liệu chế độ wal2 có nằm trong lộ trình của dự án hay không
  • Có người nói đây là lần đầu họ biết bộ kiểm thử của SQLite là độc quyền

    • Android cũng được xây dựng theo cách tương tự, nhưng đó lại là một vấn đề khác
  • Không đồng tình với lập luận trong phần "async IO"

    • Họ cho rằng không cần phải viết lại chỉ để thêm giao diện bất đồng bộ vào SQLite
    • Vấn đề của giao diện đồng bộ trong SQLite là luồng sẽ ở trạng thái nhàn rỗi trong lúc chờ IO
    • SQLite được thiết kế để chạy rất gần với lớp lưu trữ, nên việc chặn IO có thể rất ngắn hoặc gần như không có
  • Có ý kiến cho rằng đây là một dự án đang ở giai đoạn đầu

    • Có đưa ra ví dụ mã sử dụng Python và Limbo
  • Nếu biên dịch bằng Fil-C thì có thể có được SQLite an toàn bộ nhớ

    • Chỉ cần một vài thay đổi nhỏ và gần như vượt qua toàn bộ bộ kiểm thử
  • SQLite gồm khoảng 156.000 dòng mã và 92.000 dòng mã kiểm thử

  • Có suy đoán rằng biến thể Rust không tính đến chứng nhận DO-178B

  • Tên "Limbo" cũng từng được dùng cho ngôn ngữ hậu C/UNIX của hệ điều hành Inferno từ AT&T

 
aer0700 2024-12-12

SQLite có vẻ là một dự án không cần phải viết lại nhờ chất lượng mã nguồn và quy trình kiểm thử nghiêm ngặt -> thật sự rất ngưỡng mộ và thấy đánh giá như vậy về SQLite quá tuyệt vời.

 
regentag 2024-12-12

Được cho là đang tuân theo quy trình DO-178B và đã đạt 100% độ bao phủ mã MC/DC.
Câu chuyện ít người biết về SQLite