9

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

我一直在尝试让 sqlite3 足够小以用于嵌入式系统,但到目前为止,我无法将应用程序大小设置为低于 256 KB(我的限制)。

有没有人能够将 sqlite3 缩小到这个大小?有没有其他软件可以用来读取这个数据库?

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

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

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

4

5 回答 5

4

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

我设置了 SQLITE_OMIT_AUTHORIZATION、SQLITE_OMIT_EXPLAIN、SQLITE_OMIT_PROGRESS_CALLBACK 和 SQLITE_OMIT_TCL_VARIABLE 来调整二进制文件的大小,并使用 -Os 将其调整到那个大小。

于 2008-10-07T13:21:01.780 回答
1

如果您不需要 SQL 的全部功能,那么研究替代解决方案可能会很有趣,例如Berkeley DB

于 2008-10-09T14:44:11.097 回答
1

您可能想看一下 cdb 它非常适合“恒定”数据,代码是开源的,可以编译成微小的可执行文件,您甚至可以将其删除以使 exe 更小。10k以下应该很容易。谷歌 CDB

于 2008-12-29T02:47:54.033 回答
0

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

于 2008-10-07T13:10:39.807 回答
0

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

除非您的数据文件非常大,否则您在 SQLite 的出色优化中会失去什么,您将通过不使用 SQL 获得。

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

于 2008-10-07T17:32:09.793 回答