代码之家  ›  专栏  ›  技术社区  ›  selwyn

嵌入式系统上的SQLite

  •  8
  • selwyn  · 技术社区  · 17 年前

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

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

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

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

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

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

    5 回复  |  直到 17 年前
        1
  •  4
  •   DGentry    17 年前

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

    我设置了sqlite_omit_authorization、sqlite_omit_explain、sqlite_omit_progress_callback和sqlite_omit_tcl_变量来调整二进制文件的大小,并使用-os将其设置为该大小。

        2
  •  1
  •   daivd cameron    17 年前

    你可能想看一下CDB,它对于“常量”数据来说是很好的,代码是开放源码,可以编译成很小的可执行文件,你甚至可以通过直觉把它变小。10公里以下应该很容易。 谷歌CDB

        3
  •  0
  •   Robert Deml    17 年前

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

        4
  •  0
  •   Javier    17 年前

    我先试试sqlite2,它可能更瘦(或者不瘦)。如果这不起作用,我会说使用您自己的二进制编码。

    除非您的数据文件真的很大,否则您在sqlite上的损失很大优化,否则您将通过不使用SQL获得收益。

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

        5
  •  0
  •   David Schmitt    17 年前

    如果您不需要SQL的全部功能,那么寻找其他解决方案可能会很有趣,比如 Berkeley DB .