Нуб ИТТ. Вопрос негуглимый.
В чём хранить данные на жёстком диске? В смысле, да, я знаю, что есть куча способов: текстовые файлы, json, yaml, xml, csv; pickle, бинарные словари и другие сериализованые данные; куча разных баз данных, MySQL, PostgreSQL, sqlite, да ещё и вдовесок ко всему NoSQL базы данных. И что для разных ситуаций применимы разные способы.
Вот только т.к. я нуб, в этом и есть вся проблема. Я не знаю, как выбрать из всего этого многообразия то, что нужно мне для какой-то задачи. Как не забивать шурупы молотком. Собственно, это и есть всё описание проблемы и именно на это описание я хотел бы услышать ответ, но т.к. ждать ответа даже не удосужившись сформулировать вопросы уж совсем нагло, я продолжу:
1. Ну с текстовыми форматами, положим, можно разобраться исходя из структуры данных, но и тут всё не очень ясно, ведь как правило чисто табличные данные - редкая ситуация, обычно они одинаково хорошо ложаться как на csv, так и на словарный формат. Собственно, нужно ли вообще что-то кроме json'a?
2. MySQL vs PostgreSQL и прочее. Есть ли реальная разница в использовании или это чисто вопрос предпочтений? Верно ли я понимаю, что это всё для пиления имиджборд и прочих новостных порталов, и область применения этим чётко определена?
3. NoSQL. Вопрос аналогичен предыдущему. Опять же, стоит ли мне, нубу, делать различие между, допустим, CouchDB и MongoDB? Для чего оно вообще нужно, кроме холиваров на тему SQL vs NoSQL?
4. Сериализуемые словари. Для чего стоит применять, а для чего уже нет, исходя из вопросов производительности.
5. Пример: я решил сделать себе оффлайновый дневничок, с тегами и как положено. Что мне следует выбрать для хранения данных? Моя догадка - папка с текстовыми файлами и pickle для индекса (вида {тег : (кортеж имён файлов)})
6. Пример: трекер прогресса для качков-спортсменов. Т.е. данные в каждой записи достаточно чёткого формата, и при этом должны бы не очень медленно обрабатываться, ведь может быть нужна функция сбора какой-то статистики по данным, например, построить график прогресса, а качок может быть опытный, с несколькими тысячами записей. Или (не могу придумать пример, но наверняка такое бывает ИРЛ, просто не вспоминается) записи добавляются по десятку в день, т.е. может понадобиться обработать и того больше информации.
7. Пример: библиотека музыки, или книг, или картинок. Картинок. Их может быть - ...ну, вы сами понимаете, сколько. Они могут иметь теги, как-то группироваться. А книги могут иметь к себе ещё и комментарии, обширную мета-информацию и приложения (например, код к учебникам по программированию). Вопрос тот же: в каком формате мне следует всё это сохранить?
8. Что делать с действительно большими объёмами, например, с сырьём для дата-майнинга? Тоби Сегаран в своей книжке всё пихал в sqlite (а то и вове в csv), всё верно делал или по-хорошему надо выбрать что-то другое? Трудно ему доверять, т.к. он вообще на python фигово пишет.
9. Какие ещё полезные форматы я не упомянул?
10. Наконец, есть ли вообще какие-то общие рекомендации, о чём думать при выборе формата данных?
Простите за такую пасту, боюсь, никто её вообще читать не будет, но вопрос общий, а как получить эту информация не от людей - я не знаю.