Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: СУБД для микроконтроллерной среды.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Буратино
В свое время работал с базами данных. Очень удобно и функционально получалось реализовывать многие вещи. Скажите, встречаются подобного рода подходы, для хранения и обработки информации, в мире микроэлектронных систем?

Буратино
Нашел нечто подходящее для встраиваемых систем: SQLite, но на сколько я понял, для того чтоб развернуть это дело нужен линукс полюбому?
Возможно использовать функционал этой системы в RTOS, ну например FreeRTOS?
codier
Позволю усомниться в надобности СУБД. Если речь про микроэлектронные системы, то тут ограничена и память и быстродействие. Т.к. такие системы обычно работают в реалтайме, то и требования к СУБД тоже реалтаймовые получаются? Думаю что в варианте "без SQL" такое возможно, но опять же есть ли смысл?
Буратино
Цитата(codier @ Sep 26 2011, 10:42) *
Позволю усомниться в надобности СУБД. Если речь про микроэлектронные системы, то тут ограничена и память и быстродействие. Т.к. такие системы обычно работают в реалтайме, то и требования к СУБД тоже реалтаймовые получаются? Думаю что в варианте "без SQL" такое возможно, но опять же есть ли смысл?


Ну базы данных разными бывают. Есть монстры на больших предприятиях и есть небольшие и аккуратные хранилища вспомогательной информации ,данных с периферии и т.д. Ну скажем так: мне не помешает однозначно.
Буратино
Хм, нашел пару ссылок где говорят о том что запускали на RTOS SQLite, но работала база только если хранилась в ОЗУ. Встречаются упоминания о коммерческих реализациях поддержки SQLite в той или иной RTOS ...
Andrew2000
Berkeley DB ?

Wiki: высокопроизводительная встраиваемая база данных, реализованная в виде библиотеки. BDB является нереляционной базой данных — она хранит пары ключ/значение как массивы байтов и поддерживает множество значений для одного ключа. BDB может обслуживать тысячи процессов или потоков, одновременно манипулирующих базами данных размером в 256 терабайт, на разнообразном оборудовании под различными операционными системами, включая большинство UNIX-подобных систем и Windows, а также на операционных системах реального времени.
ARMik
Посмотрите в сторону .Net Micro Framework. В некоторых портах (например у GHI electronics) есть реализация SQLite.
AlexandrY
Цитата(Буратино @ Sep 26 2011, 13:48) *
Хм, нашел пару ссылок где говорят о том что запускали на RTOS SQLite, но работала база только если хранилась в ОЗУ. Встречаются упоминания о коммерческих реализациях поддержки SQLite в той или иной RTOS ...


А зачем ссылки искать?
В самой доке на SQLite есть пример портирования на платформу вообще без файловой системы с прямой записью на носитель.
Есть там и модуль портирования VFS на RTOS VxWorks.
Есть порт и под POSIX (многие RTOS имеют POSIX совместимый интерфейс)

Если есть лишних 600 КБ под память программ на платформе и хороший менеджер кучи то SQLite можно пожалуй за день портировать и без оси.
Правда их дикий основной файл размером в три метра редкий парсер обработает. wink.gif
SortoVaritu
Цитата(Буратино @ Sep 26 2011, 14:48) *
Хм, нашел пару ссылок где говорят о том что запускали на RTOS SQLite, но работала база только если хранилась в ОЗУ. Встречаются упоминания о коммерческих реализациях поддержки SQLite в той или иной RTOS ...


Если база хранится в ОЗУ, то как я понимаю нужно организовывать процедуры записи данных из базы во флэш к примеру, а так же чтения базы при перезапуске системы. Думаю, что если количество данных не очень большое, то проще разработать свои структуры хранения и обработки - думаю будет намного бытрее.
AlexandrY
Цитата(SortoVaritu @ Nov 3 2011, 11:51) *
Если база хранится в ОЗУ, то как я понимаю нужно организовывать процедуры записи данных из базы во флэш к примеру, а так же чтения базы при перезапуске системы. Думаю, что если количество данных не очень большое, то проще разработать свои структуры хранения и обработки - думаю будет намного бытрее.


Тут просто недопонимание.
SQLite не зависит от типа носителя, там все кончается абстракцией называемой "виртуальная файловая система" VFS.
Все что ниже разработчик пишет сам.
В примерах SQLite сразу работает с Flash накопителями.

Но реально тягаться с SQLite в быстроте самопальными на скорую руку методами, IMHO, бессмысленно.

А то что там нужен адекватный большой heap в ОЗУ, так это любые базы данных требуют и самопальные в том числе.
Разница лишь в том, что в SQLite это будет проверено и будет встроена диагностика.
SortoVaritu
Я вообщем говорю даже не о самопальной или профессиональной базе, а вообще о ее необходимости. То есть насколько большое количество данных надо структурировать. То есть если у меня к примеру есть только 100 значений данных, то нужна ли для этого база данных...
AlexandrY
Цитата(SortoVaritu @ Nov 3 2011, 14:29) *
Я вообщем говорю даже не о самопальной или профессиональной базе, а вообще о ее необходимости. То есть насколько большое количество данных надо структурировать. То есть если у меня к примеру есть только 100 значений данных, то нужна ли для этого база данных...


Да хоть даже по 10 значений но в 10-и таблицах и сразу почувствуете необходимость в базе данных.


SortoVaritu
Хм.... Возможно... Если честно то никогда не задумывался о реализации БД в микроконтроллерах.
Буратино
Цитата(AlexandrY @ Nov 3 2011, 14:14) *
Тут просто недопонимание.
SQLite не зависит от типа носителя, там все кончается абстракцией называемой "виртуальная файловая система" VFS.
Все что ниже разработчик пишет сам.
В примерах SQLite сразу работает с Flash накопителями.

Но реально тягаться с SQLite в быстроте самопальными на скорую руку методами, IMHO, бессмысленно.

А то что там нужен адекватный большой heap в ОЗУ, так это любые базы данных требуют и самопальные в том числе.
Разница лишь в том, что в SQLite это будет проверено и будет встроена диагностика.


Сейчас контроллеры с каждым годом все шире становятся и по памяти программ и по памяти данных. Ну вот на СУБД мне лично не жалко ресурсов. Попробую почитать что там пишут в доках на SQLite, но реально нереально мне поднять такую тему на проце без оси (да и наверное с осью то же).
Единственный вариант прокачать эту дело - это заручиться поддержкой опытных и знающих специалистов, и имея пример реализации попытаться решить этот вопрос в своих проектах.
Буратино
Цитата(AlexandrY @ Nov 1 2011, 15:36) *
В самой доке на SQLite есть пример портирования на платформу вообще без файловой системы с прямой записью на носитель.
Есть там и модуль портирования VFS на RTOS VxWorks.
Есть порт и под POSIX (многие RTOS имеют POSIX совместимый интерфейс)

А где именно есть? что я не нахожу(


Цитата(AlexandrY @ Nov 1 2011, 15:36) *
Если есть лишних 600 КБ под память программ на платформе и хороший менеджер кучи то SQLite можно пожалуй за день портировать и без оси.

Почему 600? в введении к системе указываются немного меньшие цифры: 200-350KiB Или именно для систем на контроллерах будет 600?

Цитата(AlexandrY @ Nov 1 2011, 15:36) *
Правда их дикий основной файл размером в три метра редкий парсер обработает. wink.gif

Это в смысле сборный С файл "SQLite3.с"?
Буратино
Подскажите, где в доках на SQLite примеры портирования? Может я не те документы смотрю? Вообще ничего не нахожу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.