3 điểm bởi GN⁺ 2023-08-14 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết giới thiệu dự án có tên LearnDB, một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) tương tự SQLite, được viết từ đầu hoàn toàn bằng Python thuần.
  • Dự án được truyền cảm hứng từ câu nói nổi tiếng của Richard Feynman: "Điều tôi không thể tạo ra thì tôi không thể hiểu được", với mục tiêu mang lại sự hiểu biết sâu sắc về cơ sở dữ liệu.
  • LearnDB có codebase đơn giản và phần triển khai RDBMS tương đối đầy đủ, nên rất phù hợp để thử nghiệm.
  • Hỗ trợ SQL phong phú (learndb-sql), bao gồm select, from, where, group by, having, limit, order by..., và sử dụng lark để xây dựng lexer và parser tùy chỉnh.
  • Hệ thống cho phép người dùng kết nối với RDBMS theo nhiều cách như REPL, import dưới dạng mô-đun Python, hoặc truyền tệp lệnh vào engine.
  • Sử dụng triển khai btree trên đĩa làm cấu trúc dữ liệu nền tảng.
  • Tuy nhiên, LearnDB vẫn có một số hạn chế, chẳng hạn như cách triển khai đơn giản hóa cho phép toán số thực dấu chấm động và không hỗ trợ một số tính năng tiện ích phổ biến như mở rộng cột bằng ký tự đại diện.
  • Bài viết cung cấp hướng dẫn chi tiết về cách cài đặt và chạy LearnDB, bao gồm yêu cầu hệ thống và các bước chạy kiểm thử.
  • Tác giả cũng đưa ra các tài liệu tham khảo đã sử dụng trong quá trình xây dựng dự án, bao gồm SQLite Database System: Design and Implementation (1st ed), tài liệu về định dạng tệp của SQLite, và phần hiện thực câu lệnh SQL trong Postgres.
  • Dù có những giới hạn, LearnDB được định hướng là một công cụ học tập để hiểu nội bộ cơ sở dữ liệu, chứ không phải một giải pháp lưu trữ thực tế.

1 bình luận

 
GN⁺ 2023-08-14
Ý kiến trên Hacker News
  • Bài viết nói về một RDBMS (Relational Database Management System) mới, là bản sao của SQLite được viết lại từ đầu bằng Python.
  • Ngôn ngữ Python được chọn vì tính dễ đọc và dễ tiếp cận so với những ngôn ngữ thường dùng cho cơ sở dữ liệu như C++ hoặc C.
  • Dự án được xem là có tính giáo dục và hữu ích để tìm hiểu cách cơ sở dữ liệu hoạt động.
  • Dự án khơi gợi sự quan tâm về cách một database engine có thể hoạt động theo mô hình phân tán.
  • Một dự án tương tự, trong đó SQLite được viết lại bằng C#, cũng được nhắc đến.
  • Dự án không nhằm mục đích chạy nhanh, nhưng vẫn có sự quan tâm đến việc xem benchmark để so sánh.
  • Bài viết cũng giới thiệu đến độc giả Lark, một thư viện parser cho Python đã được dùng trong dự án.
  • Dự án được nhìn nhận là một cách tốt để học sâu hơn về cấu trúc dữ liệu và thuật toán (DS&A), đặc biệt hữu ích với những ai quan tâm đến database và Python.
  • Có câu hỏi về việc dự án có thể vượt qua bao nhiêu phần của bộ kiểm thử SQLite, cũng như liệu nó có hỗ trợ bảo đảm ACID (Atomicity, Consistency, Isolation, Durability) hay lập kế hoạch/tối ưu hóa truy vấn hay không.
  • Mọi người cũng tò mò về lợi ích và giới hạn của việc dùng Python trong dự án này, đặc biệt khi so với C++ ở khía cạnh hỗ trợ kiểm soát đồng thời mức thấp và quản lý lưu trữ.
  • Mã nguồn của dự án được khen là dễ đọc và có chú thích rất tốt.