Tôi sử dụng chúng như sau:
Văn bản thô
Nếu danh mục đó bao gồm các định dạng phức tạp hơn một chút, như YAML hoặc tệp thuộc tính, thì đó là tùy chọn tốt nhất cho bất cứ điều gì bạn mong đợi mọi người đọc và chỉnh sửa bằng tay. Một lợi thế lớn khác là sự đơn giản của việc sửa đổi nó thông qua một tập lệnh nhỏ (ví dụ: sed).
Không có gì đánh bại sự đơn giản và dễ sử dụng. Khi nhóm hỗ trợ phải định cấu hình một cái gì đó trên máy từ xa (ví dụ: giải quyết vấn đề của khách hàng) hoặc CNTT phải cấu hình lại một loạt các máy chủ chạy phần mềm của bạn, họ sẽ cảm ơn bạn vì đã chọn định dạng này. Nó cũng sẽ giúp bạn không phải viết một số phần mềm một lần làm điều đó cho họ.
XML
Tôi đồng ý với @Ingo ở đây - không giống như XML văn bản thuần túy khó xử lý hơn thông qua tập lệnh và một cơn ác mộng để chỉnh sửa bằng tay imo.
Tuy nhiên, nếu bạn có dữ liệu với một số cấu trúc phức tạp trong đó YAML trở nên không thể mã hóa và vẫn muốn nó có thể đọc được và có thể chỉnh sửa được thì XML có lẽ là lựa chọn tốt nhất.
Cơ sở dữ liệu quan hệ
Một lựa chọn tuyệt vời khi bạn có nhiều dữ liệu (sẽ khiến văn bản đơn giản và XML trở nên cồng kềnh) mà bạn vẫn có thể muốn cho phép các bên thứ 3 chỉnh sửa thủ công - thông qua các lệnh SQL và thậm chí cả GUI.
Một ưu điểm khác là mã của bạn quản lý nội dung rất dễ đọc. @ Richard-Harrison đã đưa ra một danh sách tốt các lợi thế khác trong câu trả lời tuyệt vời của mình.
Cơ sở dữ liệu NoQuery
Một lợi thế so với RDBMS là khả năng mở rộng thông qua phân phối, có lẽ không liên quan lắm đến câu hỏi của bạn. Những lợi thế có lẽ phù hợp hơn là sự đơn giản của một cửa hàng khóa-giá trị và tính linh hoạt của tính phân liệt (đây có phải là một từ không?). Khi bạn thấy mình phá vỡ mô hình quan hệ: chỉ cần lưu trữ các đốm màu vào cơ sở dữ liệu, truy cập chúng bằng khóa và xử lý chúng thông qua mã, sau đó xem xét tùy chọn này. Một số lựa chọn (ví dụ CouchDB) rất dễ mang theo, có dấu chân nhỏ và cũng có thể mở rộng quy mô để chúng cung cấp một sự thay thế không liên quan tốt đến MySQL và SQLite.
Nhị phân
Ưu điểm của nhị phân là nhanh và gọn. Khi điều duy nhất cần đọc và sửa đổi tệp của bạn là một chương trình và dữ liệu không phù hợp với mô hình quan hệ hoặc tốc độ thực sự quan trọng thì đây có thể là một lựa chọn tốt. Có lẽ là phù hợp nhất cho các tập tin phương tiện truyền thông.
Tôi nên chỉ ra rằng tôi chưa gặp phải trường hợp truy cập đơn giản vào dữ liệu chương trình tại một số điểm vì những lý do không được xem xét trong thiết kế ban đầu. Ngày nay, cá nhân tôi chọn tùy chọn cơ sở dữ liệu cho bất kỳ thứ gì khác sau đó các tệp có định dạng chuẩn và cần được mã hóa / giải mã bằng phần mềm khác (ví dụ: âm thanh, video).
Lưu ý: có một quan niệm sai lầm phổ biến rằng nhị phân là mờ đục và do đó bằng cách nào đó an toàn hơn. Nếu không có sự bảo vệ bổ sung thì không - nếu ai đó muốn hack phần mềm của bạn thì chỉ cần lưu trữ cấu hình của bạn hoặc bất cứ thứ gì trong nhị phân sẽ không ngăn chặn chúng.
Lưu trữ nén
Không thực sự là một thay thế cho ở trên, mà là một biện pháp bổ sung.
Thuận lợi khi bạn cần truyền tải mọi thứ qua mạng hoặc khi bạn lưu trữ rất nhiều dữ liệu và muốn tiết kiệm dung lượng. Lưu ý rằng không gian lưu trữ thường rất phong phú trong những ngày này, vì vậy hãy xem xét nền tảng mục tiêu của bạn.
Thực hiện rất nhanh trên hầu hết mọi thứ ngày nay (luật hành động của Moore, em bé), vì vậy lý do duy nhất để không sử dụng nó là nó làm tăng thêm sự phức tạp cho mã của bạn. Không phức tạp lắm, nhưng vẫn vi phạm nguyên tắc KISS. Đặc biệt cồng kềnh đối với các tệp cấu hình cần được chỉnh sửa thủ công hoặc thông qua tập lệnh - và nếu bạn thực sự cần tiết kiệm dung lượng ở đó, thì có lẽ bạn nên sử dụng tùy chọn cơ sở dữ liệu.