我们目前正在开发一个python项目,它基本上可以在SQLite数据库中读取和写入M2M数据。该数据库由多个表组成,其中一个表存储来自云的当前值。最后一个表让我担心,因为它经常被写入,应用程序在闪存驱动器上运行。
我读过虚拟表可能是解决方案。我曾想过将关键表转换为虚拟表,然后将其内容链接到存储在RAM中的真实文件(XML或JSON)(例如在Debian中为/ tmp)。我一直在读这篇文章: http://drdobbs.com/database/202802959?pgno=1 这或多或少解释了如何做我想做的事。它非常复杂,我认为使用Python不太可行。也许我们需要开发自己的sqlite扩展,我不知道......
有关如何将我们的冲突表“放置”在RAM中,而数据库的其余部分保留在FLASH中的任何想法?关于如何在Python下采用虚拟表方式的更好/更简单的方法?
答案 0 :(得分:1)
创建内存表的一个非常简单的SQL解决方案是使用SQLite的ATTACH
命令和特殊的“:memory:”伪文件名:
ATTACH DATABASE ":memory:" AS memdb;
CREATE TABLE memdb.my_table (...);
由于整个数据库“memdb”保存在RAM中,因此一旦关闭数据库连接,数据就会丢失,因此您必须自己处理持久性。
一种方法可以是:
BEGIN; DELETE FROM real_table; INSERT INTO real_table SELECT * FROM memory_table;
)但我能给你的最佳建议是:确保你确实遇到了性能问题,简单的解决方案也可以足够快!
答案 1 :(得分:0)
使用内存数据结构服务器。 Redis是一个性感的选项,您可以使用列表轻松实现表格。此外,它还配备了一个不错的python驱动程序。