2012-03-22 67 views
2

有谁知道如何将现有数据库(Sqlite 3)加载到内存中,以便在Perl,MATLAB或Java中进行快速计算? Perl是首选?将现有的Sqlite数据库加载到内存中以便快速计算

我正在研究一个需要密集计算的项目,并且我想保留真实的数据库。所以我想将整个Sqlite3数据库读入内存,并在内存中执行任何操作。

我知道内存数据库连接的基础知识,但好像Perl只能用这种方式创建一个新的数据库,而不是加载一个现有的数据库(这是我想实现的选项)。

回答

3

我不认为SQLite提供了任何方式来自动将数据库加载到内存中。你所能做的就是在内存中创建一个新的空数据库。这不是Perl的限制。

您可以打开内存数据库,为磁盘数据库创建表,attach,为模式中的每个表创建insert into memory.table select * from file.table,然后从磁盘数据库创建detach

+0

谢谢cjm!答案是有用的,因为我想知道它只适用于Perl。你的回答似乎解决了我的部分疑问。 – z080328 2012-03-22 06:53:25

1

解决此问题的一种方法是将您的SQLite数据库保留在RAMdrive上。

  • 在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/ 
    
+2

http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/ – 2012-03-22 12:17:20

3

可以使用&sqlite_backup_from_file方法DBD::SQLite。如果在':memory:'数据库上打开您调用它的句柄,则会读入外部数据库。相应的&sqlite_backup_to_file方法允许您在完成后将其写回。这些功能实际上只是用于备份C interface的包装

相关问题