3

Perl、MATLAB、またはJavaで高速に計算するために、既存のデータベース(Sqlite 3)をメモリにロードする方法を知っている人はいますか? Perlが優先されますか?

私は集中的な計算を必要とするプロジェクトに取り組んでおり、実際のデータベースを固定したままにしたいと考えています。したがって、Sqlite3 データベース全体をメモリに読み込み、そこにあるものをメモリ内で実行したいと考えています。

インメモリ データベース接続の基本は知っていますが、Perl は既存のデータベースをロードするのではなく、この方法を使用して新しいデータベースを作成することしかできないようです (これは私が実装したいオプションです)。

4

3 に答える 3

4

&sqlite_backup_from_fileでメソッドを使用できますDBD::SQLite。呼び出す対象のハンドルが ':memory:' データベースで開かれている場合、外部データベースが読み込まれます。対応する&sqlite_backup_to_fileメソッドを使用すると、完了時に書き戻すことができます。これらの関数は事実上、バックアップ用のC インターフェイスの単なるラッパーです。

于 2012-10-08T20:41:03.163 に答える
3

SQLiteがデータベースをメモリに自動的にロードする方法を提供しているとは思いません。できることは、メモリ内に新しい空のデータベースを作成することだけです。これはPerlの制限ではありません。

インメモリデータベースを開き、テーブルを作成し、ディスク上のデータベースにアタッチし、スキーマ内のテーブルごとにmemory.table select * from file.tableに挿入してから、ディスク上のデータベースからデタッチすることができます。

于 2012-03-22T06:39:11.283 に答える
1

この問題を解決する1つの方法は、代わりにSQLiteデータベースをRAMドライブに保持することです。

  • Windowsでは、過去に次のRAMDiskドライバーを問題なく使用しました。

    http://members.fortunecity.com/ramdisk/RAMDisk/ramdriv.htm

    あまりユーザーフレンドリーではありませんが、いくつかの優れた機能を備えたかなり堅実です。

  • Linuxでは、次のようなことを試すことができます。

    # mkdir /mnt/ramdisk
    # chmod 777 /mnt/ramdisk
    # mount -t tmpfs -o size=128M tmpfs /mnt/ramdisk/
    
于 2012-03-22T10:05:37.300 に答える