Использование баз данных MySQL в Mathematica - PullRequest
12 голосов
/ 28 июля 2011

Я видел, что можно установить соединение между базами данных Mathematica и MySQL, используя Input Needs["DatabaseLink "] и conn = OpenSQLConnection[JDBC["MySQL(Connector/J)", "yourserver/yourdatabase"], "Username" -> "yourusername", "Password" -> "yourpassword"] (на случай, если кто-нибудь захочет попробовать). Кстати.

Есть ли у кого-нибудь опыт использования Mathematica таким образом, возможно, для анализа данных, содержащихся в базе данных? Есть ли явные недостатки (скорость, память и т. Д.)?

Ответы [ 2 ]

10 голосов
/ 29 июля 2011

Я не использовал DatabaseLink` с MySQL, но я широко использовал его с Oracle, SQL Server и HSQLDB. Большая часть моего DatabaseLink` использования была в Mathematica версий 6-8, в Windows. Я использовал его для чтения и записи, иногда с очень большими наборами данных. Мой опыт показывает, что объект работает, как и ожидалось. Я не сталкивался с какими-либо необычными ситуациями, связанными с производительностью или памятью. Я ожидаю, что вы обнаружите, что SQL-доступ в Mathematica сопоставим с тем, что вы испытывали на других языках. В частности, он работает очень похоже на использование Java - вероятно, потому что Mathematica использует Java для выполнения всей тяжелой работы.

Я упомяну, что «очевидный» способ выполнения запросов в Mathematica, SQLExecute , будет читать весь набор результатов в память. Если вы хотите работать с большими наборами результатов без исчерпания памяти, взгляните на функции набора результатов SQLResultSetOpen и др. .

Самый простой пример использования SQL в Mathematica (с использованием HSQLDB) см. В моем ответе на Лучший способ создать функцию с памятью .

7 голосов
/ 29 июля 2011

Я недавно использовал базы данных для ускорения блока Manipulate[].

Без базы данных для доступа к памяти требовались важные данные из файла ASCII размером 150 МБ. В результате блок Manipulate[] замедлился. Возможно, что PackedArray[] помогло бы. Я не расследовал это.

При использовании базы данных скорость доступа к отдельным наборам данных несколько ниже, чем у блока Select[], но объем памяти уменьшается почти в 10 раз.

Я бы сказал, пойти на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...