|
А кто как организует в своих программах контроль завершённости, транзакции обновления базы данных |
|
|
|
 |
Ответов
|
Mar 27 2008, 14:58
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Вот тут: Цитата Если при этом произошла ошибка - то при последующем чтении CRC пакета будет неверное и система будет считать, что тут "пусто"; данные будут прочитаны из последнего актуального пакета.
|
|
|
|
|
Mar 27 2008, 23:28
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Цитата(galjoen @ Mar 27 2008, 20:45)  Видимо в EEPROM всё таки какие-то блоки 8 байтные имеются. Да нет наверное.... Это скорей всего потому у Вас 8-ми байтный блок объFFевился потому что у Вас "пакеты" в EEPROM по 8 байт, т.е. потому что Вы пишите в EEPROM 8-ми байтными блоками
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
Mar 28 2008, 03:15
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Вот я думаю, что для возможности восстановления повреждённой записи базы данных, разрушенной по причине незавершённости транзакции, вызванной отключением питания нужно хранить каждую запись в 4-х экземплярах. Потому что если хранить в 3-х то не будет возможности восстановить запись методом мажоритарного голосования.
Рассмотрим пример с 3-мя копиями и объяснение почему 3-х копий не хватает.
Допустим мы обновляем запись в базе данных во внутренней FLASH (или EEPROM) микроконтроллера. Одну копию записи успеваем обновить полностью, а вот на середине обновления 2-й копии транзакция прерывается выключением питания.
В результате мы имеем: 1-я копия обновлена полностью 2-я копия обновлена наполовину 3-копия вообще НЕ обновлена
Как быть? Мажоритарным голосованием восстановить не получиться, т.е. у нас нет хотя бы 2-х одинаковых копий записи - все 3 копии различны. А вот если бы у нас было 4 копии, то мы бы смогли "откатить" запись на основании значений записи для 3-й и 4-й записи. А если бы, допустим, транзакция была бы прервана на середине не 2-й , а 3-й копии, то тогда мы смогли бы даже не откатывать запись, а продолжить и завершить транзакцию, взяв данные совпадающих между собой 1-й и 2-й копий
Сообщение отредактировал Дон Амброзио - Mar 28 2008, 03:34
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
Сообщений в этой теме
Дон Амброзио А кто как организует в своих программах контроль завершённости Mar 27 2008, 13:03 Aesthete Animus Что-то я плохо понял суть вопроса, не похоже, что ... Mar 27 2008, 13:52 Дон Амброзио Цитата(Aesthete Animus @ Mar 27 2008, 16... Mar 27 2008, 14:02 Непомнящий Евгений В епром использую следующий механизм:
Группа парам... Mar 27 2008, 14:12 Дон Амброзио Цитата(Непомнящий Евгений @ Mar 27 2008, 17... Mar 27 2008, 14:16  Kirill Frolov Цитата(galjoen @ Mar 27 2008, 20:45) Поль... Mar 28 2008, 19:56   Непомнящий Евгений Цитата(Kirill Frolov @ Mar 28 2008, 22:56... Mar 29 2008, 08:47    Kirill Frolov Цитата(Непомнящий Евгений @ Mar 29 2008, 11... Mar 29 2008, 10:06     Непомнящий Евгений Цитата(Kirill Frolov @ Mar 29 2008, 13:06... Mar 29 2008, 12:49 Непомнящий Евгений Цитата(galjoen @ Mar 27 2008, 20:45) Толь... Mar 28 2008, 05:17 blackbit Не поверите - одним битом. Черным.
Сколько не пыт... Mar 28 2008, 06:06 Дон Амброзио Цитата(blackbit @ Mar 28 2008, 09:06) Не ... Mar 28 2008, 06:28 Igor26 Цитата50% (слетит или не слетит)..
Т.е. как у той ... Mar 28 2008, 08:31 Дон Амброзио Цитата(Igor26 @ Mar 28 2008, 12:31) Затем... Mar 30 2008, 14:00  Непомнящий Евгений Цитата(Дон Амброзио @ Mar 30 2008, 17:00)... Mar 31 2008, 04:28   Дон Амброзио Цитата(Непомнящий Евгений @ Mar 31 2008, 07... Mar 31 2008, 05:06 _Pasha Чистая эмпирика:
1. Блоки данных с CRC16 в конце п... Mar 29 2008, 10:17 oran-be А я делаю очень просто - при закатывании данных к ... Mar 30 2008, 14:13 Дон Амброзио Цитата(oran-be @ Mar 30 2008, 18:13)... Mar 30 2008, 14:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|