【问题标题】:Sqlite on an embedded system嵌入式系统上的 Sqlite
【发布时间】:2010-09-15 17:59:14
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 澄清一下,您是想将 sqlite3 命令行应用程序安装到嵌入式系统上,还是使用 C API 访问您的 sqlite 数据库?

标签: database sqlite embedded


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • ...但要注意许可问题,这是 sqlite 没有的问题。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 鉴于有两个表,如果使用此方法,最好使用两个 XML 或 CSV 文件。
      • 我希望使用 sqlite 来加快我的搜索速度。
      【解决方案5】:

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

      除非您的数据文件非常大,否则您在 SQLite 的出色优化中会失去什么,而不使用 SQL 会有所收获。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-23
        • 2014-04-20
        • 2020-10-05
        • 2017-01-07
        • 1970-01-01
        • 2015-01-23
        相关资源
        最近更新 更多