Подтвердить что ты не робот

Какая "лучшая" база данных для встроенных?

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

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

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

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

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

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


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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

Увы, у меня нет личного опыта для резервного копирования любых претензий.

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

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