2011-07-28 8 views
12

Input Needs["DatabaseLink "]とconn = OpenSQLConnection[JDBC["MySQL(Connector/J)", "yourserver/yourdatabase"], "Username" -> "yourusername", "Password" -> "yourpassword"]を使用してMathematicaとMySQLデータベースを接続することができました。(誰でも試してみたいですが)hereのドキュメント。MathematicaでのMySQLデータベースの使用

誰もが経験?おそらく、データベースに含まれるデータを解析するために、このようにMathematicaをしています使用してそこに明らかな欠点(スピード、必要メモリなど)?私は最近Manipulate[]をスピードアップするためのデータベースを使用

+0

私はXML Hibernateマッピングの半自動的な修正(ORMレイヤーとしてHibernateを使用する必要があるJavaプロジェクト)の変化のために、かなり大規模な産業用Oracleデータベースのメタデータの分析にこれを使用していましたデータベース(テーブル名、カラム名など)に格納されます。私にとってはうまくいっていましたが、メタデータに興味があったので、データベースからMathematicaへの大量のデータインポートや、dbへのコミットを行わなかったため、パフォーマンスについてはコメントできません。私はそれがまともであることを期待する。 –

+0

ありがとうございます。実際には、私が検討していた問題、つまりデータベースに挿入を戻しました。 Mathamaticaが達成できるデータ操作の幅が広いことを考えれば、確かにMathematica経由の挿入を使用するアプリケーションがいくつかあります。パフォーマンスは確かに問題ではありますが、他のシナリオではうまくいくことがわかってうれしいです。 –

+0

MySQLについてではなく、高速なデータベースアクセスを望む場合は、[TokyoCabinet](http://www.igvita.com/)の[QLink](http://science.sander.su/QLink.htm) 2009/02/13/tokyo-cabinet-beyond-key-value-store /) – Simon

答えて

7

を持っていますブロック。

150 MBのASCIIファイルからの必須データがアクセスのためにメモリに必要でした。結果として、Manipulate[]ブロックの速度が低下しました。 PackedArray[]が役に立った可能性があります。私はこれを調査しなかった。データベースと

、個々のデータセットのアクセス速度はSelect[]ブロックよりも若干速度が遅くなりますが、メモリフットプリントは、私はそれのために行くでしょうねほぼ10

倍にダウンしています。

+0

あなたの答えをありがとう。まあ、Mathematicaはこのような状況に対処するのに十分な能力を備えているようです。私は、その使用法がそれほど普及していないことに驚いています。 WReachに尋ねたのと同じ質問をします。 Mathematicaでデータを操作した後、あなたは何をしましたか? –

+0

@Robert Smith:このアプリケーションは、空気中の地球物理学的データのQCです。ラインを選択した後、グラフを4つ、ラインベースのプロットを2つ、ポイントベースのプロットを少なくとも1つ作成する必要があるため、最小二乗反転スキームから省略するデータポイントを特定できます。 Manipulate []ブロックはライン上にあり、1〜37、1〜>(5000まで)の各ラインのステーションを越えています。完成したアプリケーションは、どのチャネルを保持すべきかを示す整数の束をデータベースに書き戻します。私はsqliteデータベースを使用しています。 Mathematicaにdbを書くことは、あまり嫌な面しかなかった。 – dwa

+0

あなたのコメントの後、Mathematicaを使って比較的集中的な仕事をするのはそれほど悪くないようです。どうもありがとう! –

10

私はDatabaseLink`をMySQLに使用していませんが、Oracle、SQL Server、およびHSQLDBで広く使用しています。私のDatabaseLink`のほとんどは、Windows版のMathematicaバージョン6から8まで使用されています。私は読み書きの両方に使用しました。時には非常に大きなデータセットを使用していました。私の経験は、施設が期待どおりに機能していることです。私は、パフォーマンスや記憶に関わる珍しい状況に遭遇しませんでした。 MathematicaでのSQLアクセスが、他の言語で経験したことと匹敵するものであることが期待されます。特に、Mathematicaは内部的にJavaを使用しているため、Javaを使用する場合とほとんど同じように動作します。

Mathematicaでクエリを実行する「明白な」方法(SQLExecute)は、結果セット全体をメモリに読み込むことになります。メモリ不足で大きな結果セットを扱う場合は、結果セット関数SQLResultSetOpen et alを参照してください。

Mathematicaでの(HSQLDBを使用した)SQLの非常に基本的な例については、The best way to construct a function with memoryへの私の応答を参照してください。

+0

偉大な答えと結果セット(http://reference.wolfram.com/mathematica/DatabaseLink/tutorial/ResultSets.html)について知っておきたいこと。ちなみに、Mathematicaでデータを使って、Mathematicaを使った後、あなたは何をしましたか? –

+0

@ロバート私はその質問に対する良い短い答えはありません。例としては、ソフトウェア開発チームのデータマイニング運用データや、複雑なデータベースモデルの構造的変更を通じたデータ移行などがあります。これらの例では、Mathematicaは主に可視化、クロステクノロジデータアクセス、プロトタイプ作成に使用されていました。 – WReach

+0

「良い短い答え」を出さないことについて心配はありません。私はあなたのアプリケーションから必要なパフォーマンスを知りたがっています。どうもありがとう。 –

関連する問題