SQLite или плоский текстовый файл?

Я обрабатываю много текста/данных, которыми обмениваюсь между Python, R и иногда Matlab.

Я предпочитаю плоский текстовый файл, но также иногда использую SQLite для хранения данных и доступа из каждой программы (хотя еще не Matlab). Я не использую GROUPBY, AVG и т. д. в SQL так часто, как я делаю эти операции в R, поэтому мне не обязательно требуются операции с базой данных.

Для таких приложений, которые требуют обмена данными между программами для использования доступных библиотек на каждом языке, существует ли хорошее эмпирическое правило в отношении того, какой формат/метод обмена данными следует использовать (даже XML, NetCDF или HDF5)?

Я знаю, что между Python -> R есть rpy или rpy2, но меня интересовал этот вопрос в более общем смысле — я использую много компьютеров, на которых нет rpy2, а также использую несколько других программ для научного анализа, которым требуется доступ к данным в разное время (этапы обработки и анализа также разделены).


person hatmatrix    schedule 06.03.2010    source источник


Ответы (2)


Если все языки поддерживают SQLite — используйте его. Мощь SQL может быть вам бесполезна прямо сейчас, но, вероятно, в какой-то момент она будет вам полезна, и это избавит вас от необходимости переписывать вещи позже, когда вы решите, что хотите иметь возможность запрашивать свои данные более сложными способами.

SQLite также, вероятно, будет значительно быстрее, если вы хотите получить доступ только к определенным битам данных в вашем хранилище данных, поскольку сделать это с файлом с плоским текстом сложно без чтения всего файла (хотя это не невозможно).

person Dominic Rodger    schedule 06.03.2010
comment
+1 за sqlite и ожидание широкого использования базы данных в будущем, хотя сейчас это не очевидно. - person Jeffrey Jose; 06.03.2010
comment
Спасибо - да, не читать весь файл - это однозначно его плюс. - person hatmatrix; 06.03.2010

Плоский текстовый файл (например, в формате csv) был бы наиболее переносимым решением. Почти каждая программа/библиотека может работать с этим форматом: R и Python имеют хорошую поддержку csv, и если ваш набор данных не слишком велик, вы даже можете импортировать csv в Excel для небольших задач.

Тем не менее, текстовые файлы неудобны для больших наборов данных, так как вам нужно прочитать их полностью почти для всех операций (в зависимости от структуры ваших данных).

SQLite позволяет очень легко фильтровать данные (даже без особых знаний SQL) и, как вы уже упоминали, может выполнять некоторые вычисления самостоятельно (AVG, SUM,...). С помощью подключаемого модуля Firefox SQLiteManager вы можете работать с БД на каждом компьютер без каких-либо проблем с установкой/настройкой и, таким образом, легко управлять своими данными (импорт/экспорт, фильтрация).

Поэтому я бы рекомендовал использовать SQLite для больших наборов данных, которые требуют большой фильтрации для извлечения нужных вам данных. Для небольших наборов данных или если нет необходимости выбирать подмножества ваших данных, подойдет плоский (csv) текстовый файл.

person wierob    schedule 06.03.2010
comment
Спасибо - csv для небольших файлов и SQL для больших файлов (возможность фильтрации является преимуществом). Не знал и о плагине Firefox — это фантастика. - person hatmatrix; 06.03.2010
comment
1 для подключаемого модуля SQLiteManager. Я использую его, и он спасает жизнь и отлично подходит для импорта (в формате cvs;)) - person Diego Castro; 16.12.2010
comment
как интересно, в пользу или плоский текст! Кажется, это соответствует моим предпочтениям (хотя плоский текстовый файл с разделителями TAB для переносимого управления меню с любого компьютера). Вы тоже рекомендуете мне плоский файл? см. мой новый проект автоматизации меню -s" title="php как автоматизировать создание 100 пунктов меню ul li при сохранении меню s">stackoverflow.com/questions/4524327/ - person Sam; 25.12.2010