我有一个使用Sqlite在PC上生成的数据库文件。然后将此文件传输到基于ARM7的嵌入式系统,而不使用操作系统。嵌入式系统必须访问此数据库,但不需要更新它。
我一直试图让sqlite3足够小以用于嵌入式系统,但到目前为止,我无法将应用程序大小调整到256 Kbytes(我的限制)。
有没有人能够将sqlite3降到这么大?是否有其他软件可用于阅读此数据库?
编辑:我正在尝试使用C访问数据库。这将使用sqlite3_exec()函数完成。
有两张桌子。一个表具有ID和文本,第二个表具有ID,第一个表的ID,文本和状态值的链接。唯一需要的访问是通过第一个表上的ID或部分文本,以及第二个表上的ID。
也许有一些可以用来访问数据库的独立代码?
答案 0 :(得分:4)
我提出的最小的sqlite3是327 KBytes(对于PowerPC),这对系统来说足够了所以我不再试图让它变小。这是完整的sqlite3 CLI二进制文件,单独使用C API会稍微小一些。
我设置了SQLITE_OMIT_AUTHORIZATION,SQLITE_OMIT_EXPLAIN,SQLITE_OMIT_PROGRESS_CALLBACK和SQLITE_OMIT_TCL_VARIABLE来修剪二进制文件的大小,并使用-Os将其调整到该大小。
答案 1 :(得分:1)
你可能想看看cdb它对'常量'数据很有用,代码是开源的,并且会编译成微小的可执行文件,你甚至可以通过它来减少exe。 10k以下应该很容易。 谷歌cdb
答案 2 :(得分:0)
您可以将数据库文件导出为XML或文本或其他“平面”文件吗?这在嵌入式环境中更容易使用。
答案 3 :(得分:0)
我首先尝试使用sqlite2,它可能更精简(或不是)。如果这没有帮助,我会说你自己的二进制编码。
除非你的数据文件真的很大,否则你在SQLite上的优势就会大大减少,你将不会使用SQL。
当然,使用适当的数据结构(很可能是B * Tree或类似的)。
答案 4 :(得分:0)
如果您不需要SQL的全部功能,那么研究其他解决方案可能会很有趣,例如Berkeley DB。