Sqlite на встроенной системе - PullRequest
8 голосов
/ 07 октября 2008

У меня есть файл базы данных, который генерируется на ПК с использованием Sqlite. Этот файл затем передается во встроенную систему на базе ARM7 без операционной системы. Встроенная система должна иметь доступ к этой базе данных, но не нуждается в ее обновлении.

Я пытался сделать sqlite3 достаточно маленьким для встроенной системы, но до сих пор не могу получить размер приложения ниже 256 Кбайт (мой предел).

Кто-нибудь был в состоянии получить sqlite3 до этого размера? Есть ли другое программное обеспечение, которое я могу использовать для чтения этой базы данных?

РЕДАКТИРОВАТЬ: я пытаюсь получить доступ к базе данных с помощью C. Это будет сделано с помощью функции sqlite3_exec ().

Есть две таблицы. Одна таблица имеет идентификатор и текст, вторая - идентификатор, ссылку на идентификатор первой таблицы, текст и значение состояния. Требуется только доступ по идентификатору или частичному тексту в первой таблице и по идентификатору во второй таблице.

Возможно, есть какой-то автономный код, который можно использовать для доступа к базе данных?

Ответы [ 5 ]

4 голосов
/ 07 октября 2008

Самый маленький sqlite3, который я придумал, был 327 КБ (для PowerPC), что было достаточно для системы, поэтому я перестал пытаться уменьшить его. Это был полный CLI-файл sqlite3, только API-интерфейсы C были бы несколько меньше.

Я установил SQLITE_OMIT_AUTHORIZATION, SQLITE_OMIT_EXPLAIN, SQLITE_OMIT_PROGRESS_CALLBACK и SQLITE_OMIT_TCL_VARIABLE, чтобы урезать размер двоичного файла, и использовал -O для получения этого размера.

1 голос
/ 29 декабря 2008

Возможно, вы захотите взглянуть на cdb, он отлично подходит для «постоянных» данных, код с открытым исходным кодом и будет компилироваться в крошечные исполняемые файлы, вы даже можете его потрошить, чтобы уменьшить размер исполняемого файла. Под 10к должно быть легко. Google CDB

0 голосов
/ 09 октября 2008

Если вам не нужны все возможности SQL, может быть интересно взглянуть на альтернативные решения, такие как Berkeley DB .

0 голосов
/ 07 октября 2008

Я бы попробовал сначала с sqlite2, он может быть скуднее (или нет). Если это не поможет, я бы сказал, используйте вашу собственную двоичную кодировку.

Если ваш файл данных не очень большой, то, что вы потеряете в SQLite с большой оптимизацией, вы получите без использования SQL.

Конечно, используйте соответствующие структуры данных (скорее всего, B * Tree или аналогичные).

0 голосов
/ 07 октября 2008

Можете ли вы экспортировать файл базы данных в XML или текстовый или другой «плоский» файл? С этим гораздо проще работать во встроенной среде.

...