Khi nào nên ưu tiên cơ sở dữ liệu để lưu trữ dữ liệu hơn là lưu trữ dữ liệu trong tệp văn bản?
Wikipedia cho chúng ta biết rằng một cơ sở dữ liệu là một bộ sưu tập dữ liệu có tổ chức . Theo biện pháp đó, tệp văn bản của bạn là một cơ sở dữ liệu. Nó tiếp tục nói:
Dữ liệu thường được tổ chức để mô hình hóa các khía cạnh liên quan của thực tế theo cách hỗ trợ các quy trình yêu cầu thông tin này. Ví dụ, mô hình hóa sự sẵn có của các phòng trong khách sạn theo cách hỗ trợ tìm khách sạn có chỗ trống.
Phần đó mang tính chủ quan - nó không cho chúng ta biết cụ thể dữ liệu nên được mô hình hóa như thế nào hoặc những hoạt động nào cần được tối ưu hóa. Tệp văn bản của bạn bao gồm một số bản ghi riêng biệt, mỗi bản ghi mỗi ngày, vì vậy bạn đang mô hình hóa một khía cạnh của thực tế theo cách có liên quan đến vấn đề của bạn.
Tôi nhận ra rằng khi bạn nói "cơ sở dữ liệu" có lẽ bạn đang nghĩ đến một loại hệ thống quản lý cơ sở dữ liệu quan hệ nào đó, nhưng nghĩ về tệp văn bản của bạn khi cơ sở dữ liệu thay đổi câu hỏi của bạn từ "khi nào tôi nên sử dụng cơ sở dữ liệu?" thành "loại cơ sở dữ liệu nào tôi nên sử dụng?" Nhìn thấy mọi thứ trong ánh sáng đó giúp câu trả lời dễ nhìn hơn: sử dụng cơ sở dữ liệu tốt hơn khi cơ sở dữ liệu bạn không còn đáp ứng yêu cầu của bạn.
Nếu tập lệnh Python và tệp văn bản đơn giản của bạn hoạt động đủ tốt, thì không cần phải thay đổi. Chỉ với một kỷ lục mới mỗi ngày và máy tính trở nên nhanh hơn mỗi năm, tôi nghi ngờ rằng giải pháp hiện tại của bạn có thể khả thi trong một thời gian dài. Dữ liệu của một thập kỷ sẽ chỉ cung cấp cho bạn 3650 bản ghi mà một khi được phân tích cú pháp có thể sẽ cần ít hơn 75 kilobyte.
Hãy tưởng tượng rằng thay vì một bản ghi nhỏ mỗi ngày, bạn đã quyết định ghi lại mọi câu hỏi được hỏi trên CodeReview, ai đã hỏi nó và khi nào. Hơn nữa, bạn cũng thu thập tất cả các câu trả lời và siêu dữ liệu có liên quan. Bạn có thể lưu trữ tất cả những thứ đó trong một tệp văn bản, nhưng một tệp phẳng sẽ gây khó khăn cho việc tìm kiếm thông tin khi bạn cần. Có quá nhiều dữ liệu để đọc toàn bộ vào bộ nhớ, vì vậy bất cứ khi nào bạn muốn tìm câu hỏi hoặc câu trả lời, bạn phải quét qua tệp cho đến khi bạn tìm thấy những gì bạn đang tìm kiếm. Khi bạn muốn tìm tất cả các câu hỏi của một người dùng nhất định, bạn phải quét toàn bộ tệp. Nếu bạn muốn tìm tất cả các câu hỏi có "lỗi" dưới dạng thẻ, bạn phải quét qua tệp.
Điều đó sẽ chậm khủng khiếp, vì vậy bạn có thể quyết định tăng tốc mọi thứ bằng cách xây dựng một số chỉ mục cho bạn biết nơi cần tìm trong tệp để tìm một bản ghi đã cho. Bạn có thể có một chỉ mục cho các câu hỏi, một chỉ số khác cho người dùng, một phần ba cho câu trả lời, v.v. Khi bạn muốn tìm một câu hỏi bạn tìm kiếm chỉ mục câu hỏi (nhỏ hơn nhiều), hãy tìm vị trí của câu hỏi trong tệp dữ liệu chính và nhanh chóng chuyển đến đúng vị trí trong tệp. Đó sẽ là một cải tiến hiệu suất lớn. Thật vậy, đó là khá nhiều những gì một hệ thống quản lý cơ sở dữ liệu.
Vì vậy, sử dụng DBMS khi đó là những gì bạn cần. Sử dụng nó khi bạn có nhiều dữ liệu, khi bạn cần có thể truy cập dữ liệu đó một cách nhanh chóng và có lẽ theo những cách mà bạn không thể dự đoán hoàn toàn ngay từ đầu. Nếu bạn có các loại dữ liệu khác nhau - các loại bản ghi khác nhau - được kết nối với nhau, hãy sử dụng RDBMS để bạn có thể liên kết các bản ghi khác nhau một cách thích hợp.