kaha db хранилище сообщений для постоянных сообщений
Я знаю, что db-xx.log - это файл журнала, а db.redo - это справочный файл?
В db-xx.log хранятся сообщения, которые еще не используются. Эти сообщения будут удалены из db-xx.log после их использования. db.redo хранит ссылки на сообщения (которые хранятся в db-xx.log) по идентификатору сообщения.
- Но что такое db.data и db.free?
- Каковы их функции?
Насколько я понимаю, брокер сначала сохраняет сообщения в кэше (который является энергозависимой памятью), а затем эти сообщения перемещаются (добавляются) в db-xx.log, когда контрольная точка или размер кэша заполнены.
- Это верно?
Спасибо
2 ответа
db.data содержит страницы btree, которые ссылаются на неиспользованные сообщения. Db.redo - это журнал повторов обновлений, которые собираются выполнить для db.data. Db.free отслеживает свободные страницы в db.data.
db.redo - это файл восстановления для индексов (db.data). db.free читается и загружается в память во время запуска activemq. Файл удаляется после загрузки свободного списка в память. Как только база данных сообщений выгружена, свободный список записывается обратно в db.free.
После удаления сообщения поведение очереди / темы меняется.
- В случае очереди она будет удалена из индексного файла. Структура B-дерева будет изменена соответственно.
- В случае темы, только когда сообщение подтверждено всеми подпрограммами, оно будет удалено.