2010-03-06 5 views
8

Я обрабатываю много текста/данных, которые я обмениваю между Python, R, а иногда и Matlab.SQLite или текстовый файл?

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

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

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

ответ

15

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

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

+0

+1 для sqlite и предвидения широкого использования базы данных в будущем, хотя это не очевидно сейчас. –

+0

Спасибо - да, не чтение всего файла, безусловно, его плюс. – hatmatrix

5

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

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

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

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

+0

Спасибо - csv для небольших файлов и SQL для больших файлов (возможность фильтрации - это преимущество). Не знал о подключаемом модуле Firefox - это фантастика. – hatmatrix

+0

1 для подключаемого модуля SQLiteManager. Я использую его, и это жизнерадостность и отлично подходит для импорта (в формате cvs;)) –

+0

как интересно, в пользу или плоский текст! Кажется, что это зависит от моего предпочтения (хотя текстовый файл с разделителями TAB с разделителями для управления меню с возможностью переносимости с любого компьютера), вы также меняете плоский файл? см. мой новый проект автоматизации меню http://stackoverflow.com/questions/4524327/php-how-to-automate-building-a-100-ul-li-menuitems-while-keeping-the-menu-s – Sam

Смежные вопросы