Я використовую їх наступним чином:
Простий текст
Якщо ця категорія включає трохи більш досконалі формати, як-от YAML або файли властивостей, то це найкращий варіант для того, що ви очікуєте, що люди прочитають та редагують вручну. Ще одна величезна перевага - простота зміни його за допомогою невеликого сценарію (наприклад, sed).
Ніщо не перемагає простоту і простоту використання. Коли команді підтримки потрібно щось налаштувати на віддаленій машині (наприклад, вирішити проблему клієнта), або ІТ повинен переналаштувати купу серверів, на яких працює ваше програмне забезпечення, вони будуть вдячні вам за вибір цього формату. Це також вбереже вас від написання разового програмного забезпечення, яке це робить для них.
XML
Я погоджуюся з @Ingo тут - на відміну від простого тексту XML важче обробляти за допомогою сценаріїв, а кошмар редагувати від руки imo.
Тим не менш, якщо у вас є дані з якоюсь детальною структурою, де YAML стає нерозбірливою, і все ще хочете, щоб вона була зрозумілою для людини та редагована, XML, мабуть, найкращий вибір.
Реляційна база даних
Чудовий вибір, коли у вас є багато даних (які б зробили звичайний текст і громіздкий XML), що ви, можливо, захочете дозволити третім сторонам редагувати вручну - через команди SQL і навіть графічний інтерфейс.
Ще одна перевага полягає в тому, що ваш код, який керує вмістом, дуже читабельний. @ Річард-Гаррісон у своїй чудовій відповіді надав хороший перелік інших переваг.
NoSQL База даних
Одна перевага перед RDBMS - це масштабованість через розподіл, що, мабуть, не дуже стосується вашого питання. Переваги, які, ймовірно, більш актуальні, - це простота зберігання ключових значень і гнучкість безсхемості (це слово?). Коли ви виявите, що ви порушуєте реляційну парадигму: просто зберігайте краплі в базі даних, отримуючи доступ до них за ключем та обробляючи їх за допомогою коду, тоді розгляньте цей варіант. Деякі варіанти (наприклад, CouchDB) дуже портативні, мають невеликий слід і можуть також масштабуватись, тому вони пропонують хорошу нереляційну альтернативу MySQL та SQLite.
Двійкові
Перевага двійкового в тому, що він швидкий і компактний. Коли єдине, що потрібно читати та змінювати ваш файл, - це програма, а дані не відповідають реляційній парадигмі або швидкості дійсно важливо, то це може бути хорошим вибором. Мабуть, найкраще підходить для медіафайлів.
Хочу зазначити, що я ще не стикався з випадком, коли в якийсь момент не потрібен простий доступ до даних програми з причин, які не розглядалися під час початкового проектування. Сьогодні я особисто задіюю параметр бази даних для будь-якого іншого, крім файлів, які мають стандартні формати та потребують кодування / декодування іншим програмним забезпеченням (наприклад, аудіо, відео).
Зауважте: поширена помилкова думка, що двійкові дані непрозорі і, таким чином, якось більш безпечні. Без додаткового захисту не обійтися - якщо хтось хоче зламати ваше програмне забезпечення, то просто зберігання ваших конфігурацій або іншого в бінарному файлі не зупинить їх.
Стислий архів
Насправді не альтернатива вищесказаному, а скоріше зайвий захід.
Переважно, коли вам потрібно передавати речі по мережі або коли ви зберігаєте багато і багато даних і хочете заощадити місце. Зауважте, що місця для зберігання зазвичай буває достатньо, тому врахуйте свою цільову платформу.
Сьогодні працює дуже швидко (закон Мура, дітка), тому єдиною причиною не користуватися ним є те, що він додає складності вашому коду. Не багато складності, але все-таки порушення принципу KISS. Особливо громіздкі для файлів конфігурації, які потрібно редагувати вручну або за допомогою скриптів - і якщо вам дійсно потрібно економити там місце, то, ймовірно, слід скористатися параметром бази даних.