Это на самом деле очень связано с другим ответом, который я дал относительно чтения / записи CSV-файлов w / numpy:
Python: как выполнять базовые операции с данными, как в R?
Вы должны определенно использовать numpy, несмотря ни на что! Простота индексации и т. Д. Намного превышает стоимость дополнительной зависимости (ну, я так думаю). PyTables, конечно, тоже полагается на numpy.
В противном случае, это действительно зависит от вашего приложения, вашего оборудования и вашей аудитории. Я подозреваю, что чтение в CSV-файлах того размера, о котором вы говорите, не имеет значения с точки зрения скорости по сравнению с PyTables. Но если это проблема, напишите тест! Чтение и запись случайных данных 100 раз. Или, если время чтения имеет большее значение, напишите один раз, прочитайте 100 раз и т. Д.
Я сильно подозреваю, что PyTables превзойдет SQL. SQL будет работать со сложными многотабличными запросами (особенно если вы часто выполняете одни и те же запросы), но даже в однотабличных (так называемых «денормализованных») табличных запросах сложно вычислить pytables с точки зрения скорости. Я не могу найти ссылку на это от руки, но вы, возможно, сможете что-то выкопать, если у вас есть ссылки здесь:
http://www.pytables.org/moin/HowToUse#HintsforSQLusers
Я полагаю, что производительность выполнения для вас на этом этапе снизится по сравнению с производительностью кодера. Поэтому, прежде всего, выберите то, что имеет для вас наибольшее значение!
Другие баллы:
Как и в SQL, PyTables имеет функцию отмены. CSV-файлы не будут иметь этого, но вы можете держать их под контролем версий, и вам не нужно быть слишком умным в VCS (CSV-файлы являются текстовыми).
В соответствующей заметке файлы CSV будут намного больше, чем двоичные форматы (для этого вы также можете написать свои собственные тесты).