powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Простейшая нереляционная БД для MCU
5 сообщений из 5, страница 1 из 1
Простейшая нереляционная БД для MCU
    #32675351
v'unosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Господа.

Первое моё сообщение на sql.ru
Сам я с БД знаком мало - это вероятно самое слабое место в моём программерском education.
Однако появилась у меня задача.
- Есть микроконтроллер: памяти немного, с производительностью всё ещё хуже. Пишу модуль на C. Модуль должен быть оч. хорошо переносим на др. платформу
- Есть разнородные физические объекты, информацию о которых надо хранить в различных видах памяти (eeprom, flash, RAM)
- EEPROM отличается тем, что у неё ограниченное число циклов перезаписи (а значит к некоторым объектам нужно по реже обращаться, если можно)
- Нет даже malloc - т.е. будет заранее выделятся фикс. объём памяти, который затем будет побайтово заполнятся по мере необходимости

Есть выбор:
1)Либо хранить всё в виде последовательности записей фиксированного типа (либо int32, либо string, либо ещё чего-нибудь) (но надо понимать, что это всё равно будет не реляционная Бд: никаких индексов, линков полей в таблицах и пр. не будет). Тогда каждый реальный объект может описываться как одной, так и несколькими единицами данных в БД. Число обращений максимально. Код не красивый - мало похоже на ООП подход . Функции:
Код: plaintext
get_integer(ID), get_string(ID), get_alarm(ID)
Но легче осуществлять поиск, и как говорят опытные люди, легче модифицировать содержимое БД в будущем. Тем более, что возможно придётся с PC напрямую подменять содержимое БД путём обращения к области памяти, в которой хранится БД.

2) Либо хранить всё по блокам. Каждому реал. объекту - в соотвестствие ставим одну запись в БД.
Тогда работать удобнее, ближе к ООП (чего мне очень хочется), меньше обращений к eeprom.
Функции:
Код: plaintext
get(ID,void *pObject)


Что выбрать?
Где найти src для какой-нибудь допотопной нереляционной БД?
Заранее спасибо!
...
Рейтинг: 0 / 0
Простейшая нереляционная БД для MCU
    #32675419
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
procedure Tirga23s.CalcCRC(var ACRC: Word; B: Byte);
var
I, J: Integer;
begin
{$Q-}
for I:= 1 to 8 do
begin
J:= 0;
if (ACRC and $8000) <> 0 then inc(J);
if (ACRC and $0800) <> 0 then inc(J);
if (ACRC and $0100) <> 0 then inc(J);
if (ACRC and $0040) <> 0 then inc(J);
if odd(B) then inc(J);
inc(ACRC, ACRC);
if odd(J) then inc(ACRC);
B:= B shr 1;
end;
end;
...
Рейтинг: 0 / 0
Простейшая нереляционная БД для MCU
    #32675492
v'unosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrowprocedure Tirga23s.CalcCRC(var ACRC: Word; B: Byte);
var
I, J: Integer;
begin
{$Q-}
for I:= 1 to 8 do
begin
J:= 0;
if (ACRC and $8000) <> 0 then inc(J);
if (ACRC and $0800) <> 0 then inc(J);
if (ACRC and $0100) <> 0 then inc(J);
if (ACRC and $0040) <> 0 then inc(J);
if odd(B) then inc(J);
inc(ACRC, ACRC);
if odd(J) then inc(ACRC);
B:= B shr 1;
end;
end;
Это вы к чему?
К поиску объекта БД по его ID - вычисление hash?
Или к вычислению CRC?
Или кто-то надо мной пошутить решил?
...
Рейтинг: 0 / 0
Простейшая нереляционная БД для MCU
    #32675507
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это вычисление CRC легко переносимое на контроллер т.к. вобщемто с него и бралось...
...
Рейтинг: 0 / 0
Простейшая нереляционная БД для MCU
    #32675596
v'unosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrowэто вычисление CRC легко переносимое на контроллер т.к. вобщемто с него и бралось...
Какое же это имеет отношение к БД? ! ? ! ? ! ?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Простейшая нереляционная БД для MCU
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]