Sqlite on an embedded system

做~自己de王妃 提交于 2019-12-28 13:36:01

问题


I have a database file that is generated on a PC using Sqlite. This file is then transferred to an ARM7 based embedded system without an operating system. The embedded system must access this database, but does not need to update it.

I have been trying to get sqlite3 small enough for the embedded system, but so far I cannot get the application size under 256 Kbytes (my limit).

Has anyone been able to get sqlite3 down to this size? Is there other software that I can use to read this database?

EDIT: I am trying to access the database using C. This would be done using the sqlite3_exec() function.

There are two tables. One table has an ID and text, the second an ID, link to ID of first table, text, and status value. The only access required is by ID or partial text on the first table, and by ID on the second table.

Perhaps there is some standalone code that can be used to access the database?


回答1:


The smallest sqlite3 I came up with was 327 KBytes (for PowerPC), which was sufficient for the system so I stopped trying to make it smaller. This was the full sqlite3 CLI binary, the C APIs alone would have been somewhat smaller.

I had set SQLITE_OMIT_AUTHORIZATION, SQLITE_OMIT_EXPLAIN, SQLITE_OMIT_PROGRESS_CALLBACK, and SQLITE_OMIT_TCL_VARIABLE to trim the size of the binary, and used -Os to get it to that size.




回答2:


If you don't need the full power of SQL it might be interesting to look into alternative solutions, like Berkeley DB.




回答3:


You may want to have a look at cdb it is great for 'constant' data, the code is opensource and will compile to tiny executables, you can even gut it to get the exe smaller. Under 10k should be easy. google cdb




回答4:


Can you export the database file to a XML or text or another "flat" file? That's much easier to work with in an embedded environment.




回答5:


I'd try first with sqlite2, it might be leaner (or not). If that doesn't help, I'd say go with your own binary encoding.

Unless your data file is really big, what you lose on SQLite great optimisations, you'll gain by not using SQL.

Of course, use appropriate data structures (most probably a B*Tree or similar).



来源:https://stackoverflow.com/questions/178264/sqlite-on-an-embedded-system

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!