Какова" лучшая " база данных для embedded?

Я встроенный парень, а не парень базы данных. Меня попросили перепроектировать существующую систему, которая имеет "узкие места" в нескольких местах.

встроенное устройство основано на процессоре ARM 9, работающем на 220 МГц.

должна быть база данных из 50k записей (может увеличиться до 250k) каждый с 1k данных (максимум 8 поданных). Это приблизительно - при необходимости я могу попытаться получить более точные цифры.

в настоящее время они используют SqlLite 2 и планируют перейти к SqlLite 3.

без начала войны пламени - я полный новичок d/b, просто ищущий совета - это "лучшее" решение? Я понимаю, что это может быть "сколько веревочке?- вопрос, но любые указания будут только приветствоваться. Я не против делать много чтения и исследований, но просто надеялся, что вы сможете заставить меня начать летать. Спасибо.

p.S опять же, полная переписка, может даже не придерживаться встроенного Linux, но переключиться на eCos, не волнуйтесь слишком много примерно однократное преобразование между форматами d/B. О, и доступ должен быть нечастым, максимум один раз в несколько секунд.


edit: хорошо, кажется, у них есть 30K записей (может достигать 100k или более) только 5 или 6 полей каждый, но по крайней мере 3 из них могут быть ключом поиска для записи. Они играют с "не имея d / b вообще, так как данные настолько просты", но мне кажется, что с несколькими ключами мы не могли бы использовать причудливые вещи, такие как поиск типа quicksort () (рекурсивный, двоичный поиск.) Любые мысли о "нет d / b", просто структуры данных?

кстати, один ключ 800k - не уверен, насколько хорошо sqllite обрабатывает это (возможно, с "no d / b" я должен хэшировать этот 800k на что-то меньшее?)

9 ответов


также SQLite-это база данных, выбранная практически всеми мобильными операционными системами. Android, Iphone OS и Symbian поставляются с SQLite, что заставляет меня думать, что трудовые ресурсы были потрачены на оптимизацию его для процессора в этих телефонах (почти всегда ARM).


Я бы придерживался SQLite, он широко поддерживается и довольно богат функциями.


  • Firebird (ранее Interbase) утверждает, что хорошо работает.

  • HypersonicQL (HQL) небольшой и быстрый, а также утверждает, что подходит для встроенного использования.

увы, у меня нет личного опыта, чтобы поддержать любое утверждение.


SQLite, вероятно, довольно безопасная ставка. Однако, если производительность действительно важна для вашего приложения, и вам не нужна реляционная база данных, я бы предложил вам взглянуть на Berkeley DB текст ссылки . Однако Berkeley DB не является реляционной базой данных. Другими словами, если ваши данные сгруппированы в разные таблицы и вам постоянно нужно запрашивать результирующие наборы, требующие связывания данных из нескольких таблиц, вам, вероятно, понадобится реляционная база данных. Беркли ДБ лучше подходит для чего-то вроде поиска таблиц (т. е. данные организованы в несколько таблиц, и вам не нужно запрашивать данные из нескольких из них, чтобы получить нужные результирующие наборы). Berkeley DB очень быстрый, но это потребует больше работы на вашем конце, чтобы получить максимальную отдачу от него.


Если вы хотите альтернативу, то berkeleydb стоит взглянуть. раньше он принадлежал sleepycat software, но теперь доступен от oracle. это движок базы данных barebones; непосредственно программируемый (а не sql) интерфейс. он используется как часть ядра во многих основных базах данных, и как база данных во многих встроенных устройствах - он был особенно популярен для управления таблицами маршрутизации в маршрутизаторах. это, как правило, упускают из виду в эти дни больше модные настройки, но я нашел его приличным, солидным и для чисел, о которых вы говорите, это может быть молниеносно.


Я тоже предложу sqlite3. Он используется многими известными приложениями.


SQLite в порядке, но не планируйте использовать, если вы планируете вставлять, обновлять и удалять данные, которые включают более 6 строк millon(все одновременно или любую частичную часть). Дело в том, что ключевое слово VACCUM должно быть сделано everynow, а затем, и это становится очень серьезным узким местом для производительности, даже когда оно автоматическое.


Я не знаком с системой встраивания, но iphone использует arm9 и sqlite как DB


01-11-10 Embedded.com Newsletter делает хорошую работу по освещению этой темы. Бюллетень можно найти на Embedded.com: Embedded.com Tech Фокус Бюллетень (1-11-10): Внедрение Баз Данных.