2008-10-07 80 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