Database 嵌入式系统上的Sqlite

Database 嵌入式系统上的Sqlite,database,sqlite,embedded,Database,Sqlite,Embedded,我有一个使用Sqlite在PC上生成的数据库文件。然后将该文件传输到基于ARM7的嵌入式系统,而无需操作系统。嵌入式系统必须访问此数据库,但不需要更新它 我一直在努力使sqlite3对于嵌入式系统来说足够小,但到目前为止,我无法使应用程序的大小低于256KB(我的限制) 有人能把sqlite3缩小到这个尺寸吗?是否有其他软件可用于读取此数据库 编辑:我正在尝试使用C访问数据库。这将使用sqlite3_exec()函数完成 有两张桌子。一个表有一个ID和文本,第二个表有一个ID,链接到第一个表的I

我有一个使用Sqlite在PC上生成的数据库文件。然后将该文件传输到基于ARM7的嵌入式系统,而无需操作系统。嵌入式系统必须访问此数据库,但不需要更新它

我一直在努力使sqlite3对于嵌入式系统来说足够小,但到目前为止,我无法使应用程序的大小低于256KB(我的限制)

有人能把sqlite3缩小到这个尺寸吗?是否有其他软件可用于读取此数据库

编辑:我正在尝试使用C访问数据库。这将使用sqlite3_exec()函数完成

有两张桌子。一个表有一个ID和文本,第二个表有一个ID,链接到第一个表的ID、文本和状态值。所需的唯一访问权限是第一个表上的ID或部分文本,以及第二个表上的ID


也许有一些独立的代码可以用来访问数据库?

您可以将数据库文件导出为XML或文本或其他“平面”文件吗?在嵌入式环境中使用它要容易得多。

我提出的最小的sqlite3是327KB(对于PowerPC),这对于系统来说已经足够了,所以我不再尝试将其缩小。这是完整的sqlite3 CLI二进制文件,仅C API就要小一些


我已经设置了SQLITE_OMIT_AUTHORIZATION、SQLITE_OMIT_EXPLAIN、SQLITE_OMIT_PROGRESS_CALLBACK和SQLITE_OMIT_TCL_变量来调整二进制文件的大小,并使用-Os将其调整为该大小。

我会先尝试使用sqlite2,它可能更精简(或不精简)。如果这没有帮助,我会说使用你自己的二进制编码

除非您的数据文件真的很大,否则您在SQLite上损失的都是非常好的优化,不使用SQL会有所收获


当然,使用适当的数据结构(最有可能是B*树或类似的结构)。

如果您不需要SQL的全部功能,那么寻找替代解决方案可能会很有趣,例如。

您可能想看看cdb,它非常适合“常量”数据,代码是开源的,可以编译成微小的可执行文件,你甚至可以把它切碎,让exe变小。10公里以下应该很容易。
google cdb

只是想澄清一下,您是在试图将sqlite3命令行应用程序安装到嵌入式系统上,还是在使用C API访问sqlite数据库?考虑到有两个表,两个XML或CSV文件可能是最好的,如果使用这种方法,我希望使用sqlite来加速我的搜索……但是要注意许可问题,这是sqlite没有的问题。