2008-10-07 144 views
8

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

我一直在试图让嵌入式系统的sqlite3足够小,但到目前为止我无法获得256 KB以下的应用程序大小(我的限制)。

有没有人能够将sqlite3降低到这个尺寸?是否有其他软件可以用来读取此数据库?

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

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

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

+0

只是为了澄清,你是否试图让sqlite3命令行应用程序到嵌入式系统上,或者你使用C API来访问你的sqlite数据库? – 2008-10-07 12:49:56

回答

3

我想出的最小的sqlite3是327 KB(PowerPC),这对系统来说已经足够了,因此我不再试图让它变小。这是完整的sqlite3 CLI二进制文件,单独的C API本来会小一些。

我已经设置了SQLITE_OMIT_AUTHORIZATION,SQLITE_OMIT_EXPLAIN,SQLITE_OMIT_PROGRESS_CALLBACK和SQLITE_OMIT_TCL_VARIABLE来修剪二进制文件的大小,并使用-Os使它达到那个大小。

0

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

+0

考虑到有两个表格,如果使用这种方法,两个XML或CSV文件可能是最好的。 – 2008-10-07 13:12:06

+0

我希望能使用sqlite加快我的搜索速度。 – selwyn 2008-10-07 13:18:06

0

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

除非你的数据文件真的很大,否则你失去了SQLite很大的优化,你将不会使用SQL。

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

0

如果您不需要SQL的全部功能,查找其他解决方案(如Berkeley DB)可能会很有趣。

1

您可能想看看cdb,它对'常量'数据很好,代码是开源的,并且会编译成很小的可执行文件,甚至可以通过它来获取更小的exe文件。 10K以下应该很容易。 谷歌cdb