有谁知道如何将现有数据库(Sqlite 3)加载到内存中以便在Perl,MATLAB或Java中快速计算? Perl是首选吗?
我正在开发一个需要密集计算的项目,我希望保持真正的数据库不变。所以我想将整个Sqlite3数据库读入内存并在内存中执行任何操作。
我知道内存数据库连接的基础知识,但似乎Perl只能使用这种方式创建一个新数据库,而不是加载现有数据库(这是我想要实现的选项)。
答案 0 :(得分:3)
我认为SQLite没有提供任何方法来自动将数据库加载到内存中。您所能做的就是在内存中创建一个新的空数据库。这不是Perl限制。
您可以打开一个内存数据库,为您的磁盘数据库创建表attach,为模式中的每个表创建insert into memory.table select * from file.table,然后从中创建detach -disk数据库。
答案 1 :(得分:3)
您可以使用&sqlite_backup_from_file
中的DBD::SQLite
方法。如果在':memory:'数据库上打开了调用它的句柄,则会将外部数据库读入其中。相应的&sqlite_backup_to_file
方法允许您在完成后将其写回。这些函数实际上只是C interface备份
答案 2 :(得分: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/