Là một nhà phát triển phần mềm, tôi đã làm việc trên các dự án từ các ứng dụng nhỏ tại nhà đến các ứng dụng doanh nghiệp cỡ trung bình. Trong gần như mọi dự án tôi đã sử dụng một cơ sở dữ liệu hoặc hối tiếc vì đã chọn không sử dụng nó ngay từ đầu.
Bây giờ, tôi đang tự hỏi một vài điều về cơ sở dữ liệu và cách sử dụng chúng trong các ứng dụng chung:
- Tại sao Windows không sử dụng bất kỳ cơ sở dữ liệu SQL "trung tâm" nào? Ví dụ:
- Lỗi Báo cáo dữ liệu được lưu trữ trong một loạt các tệp,
- Windows Update lưu trữ mọi thứ trong các tệp phẳng,
- Bộ nhớ cache biểu tượng được lưu trữ trong một tệp duy nhất rất lạ mà dường như không được truy cập thông qua SQL, v.v.
- Tại sao nhiều ứng dụng lớn tránh sử dụng cơ sở dữ liệu? Ví dụ: Microsoft Outlook sẽ không đạt được bằng cách sử dụng cơ sở dữ liệu thực tế thay vì phát minh lại bánh xe bằng cách có định dạng riêng cho các tệp .pst và lưu trữ một số dữ liệu trong sổ đăng ký?
Nếu cơ sở dữ liệu thêm một lớp bổ sung phức tạp tổng thể và mất hiệu năng nhỏ, thì đó là một lợi thế rất lớn của việc làm cho mã đơn giản hơn trong hầu hết các trường hợp, đặc biệt là khi lưu trữ các khối dữ liệu nhỏ có tổ chức thay vì nhị phân lớn dòng suối. Vậy tại sao rất ít sản phẩm thực sự sử dụng cơ sở dữ liệu? Có lẽ ứng dụng duy nhất tôi biết thực sự sử dụng cơ sở dữ liệu Sqlite là Firefox và có thể là Microsoft Exchange (nhưng ứng dụng cuối cùng không phải là ứng dụng dành cho máy tính để bàn)?
Ngoài ra, sẽ không có một bộ ứng dụng nào, như Microsoft Office hay Microsoft Expression, được hưởng lợi từ việc có cơ sở dữ liệu SQL hợp nhất , giúp triển khai các ứng dụng dễ dàng hơn, cập nhật / nâng cấp dữ liệu, chia sẻ dữ liệu giữa các ứng dụng đó, để tạo bản sao lưu v.v.