Текущее время: Чт, апр 18 2024, 06:39

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Вт, ноя 17 2020, 10:57 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 17 2020, 10:51
Сообщения: 6
Добрый день.

Кто-нибудь владеет информацией об алгоритме компрессии/декомпрессии тела лога?

Что мне удалось выяснить:
На основании статьи https://help.sap.com/viewer/6b94445c94a ... ec318.html
понятно, что логи сжимаются с использованием алгоритма сжатия LZ4 - Огонь, отличный алгоритм.
Однако, каким именно образом формируется контент для Encode() - так и не понял, различные варианты подбора алгоритмов ничего не дали.
Мне необходимо выполнить Decode() лога, для этого надо понять, что подается на Encode().
Декомпрессия происходит вызовом системной функции, насколько я понял
Изображение
поэтому, не нашел способа просмотреть её.
Может быть, кто-то уже решал подобную задачу?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Вт, ноя 17 2020, 14:13 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 17 2020, 10:51
Сообщения: 6
UPD: алгоритм сжатия EXPORT и распаковки IMPORT интересует в применении к BALDAT-CLUSTD


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Вт, ноя 17 2020, 16:00 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
А чем Import не подходит, цель то какая?

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Вт, ноя 17 2020, 17:44 
Специалист
Специалист

Зарегистрирован:
Вт, дек 06 2005, 13:24
Сообщения: 167
BALDAT кластерная таблица.
Как и с другими подобными обращение только через iMPORT/EXPORT


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Вт, ноя 17 2020, 18:53 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 17 2020, 10:51
Сообщения: 6
Parazit написал:
А чем Import не подходит, цель то какая?

Анализатор логов подключить.
Логика анализатора реализована не в SAP.
по-сути, необходимо распаковать тело сообщения, хранящееся в BALDAT


Последний раз редактировалось devolap Вт, ноя 17 2020, 19:56, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Вт, ноя 17 2020, 18:58 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 17 2020, 10:51
Сообщения: 6
Daw написал(а):
BALDAT кластерная таблица.
Как и с другими подобными обращение только через iMPORT/EXPORT

из ABAP - да.
А при считывании LRAW-значения из БД непосредственно... не ABAP-кодом - IMPORT/EXPORT не доступен.
хотяяя, можно FM написать и дергать по RFC... но это значительно медленнее, чем с ханы на прямую


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Вт, ноя 17 2020, 19:19 
Специалист
Специалист

Зарегистрирован:
Вт, дек 06 2005, 13:24
Сообщения: 167
На уровне БД невозможно считать эти данные.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Вт, ноя 17 2020, 19:31 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 17 2020, 10:51
Сообщения: 6
Daw написал(а):
На уровне БД невозможно считать эти данные.

Ну я же считал. Они лишь сжаты. Их можно распаковать и отобразить.
На сколько я понял, перед полем с RAW-данными идет длина (в распакованном виде), что необходимо для распаковки по алгоритму LZ4.
Простейшая структура для распаковки:
Code:
4 байта - длина распакованных данных
4 байта - длина упакованных данных
RAW - упакованные данные

Вопрос, только, какая логика распаковки используется в IMPORT:
1) конкатенируются hexstr (LRAW) и распаковываются
2) или же по отдельности распаковываются блоками до 512 байт
На деле перепробовал много различных последовательностей трансформации HEXSTR и распаковки, но пока результат - отрицательный

Пример:
Этот кусок HEXSTR должен в распакованном виде превратиться в 512 байт текста
Code:
10C832227669A5F533982A184FC280C9BA9F273290C9B9CD0698C15E508868218F361360C2AC93066F443629581133C398CD930A8706
286FCB2AA6B0C3F1D8659962A3F87C230CB38A1D36178AA1CC1500863980D4F0780B177353B1186A79C98E930DC538E6028213F0AC3BD54F
9B914867B9CD0698C71D9B01066C36CC26C


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Вт, ноя 17 2020, 19:57 
Специалист
Специалист

Зарегистрирован:
Вт, дек 06 2005, 13:24
Сообщения: 167
SAP не раскрывает как lraw хранятся и прямых способов не существует.
Кроме Import/Export есть еще способ реплицировать через SLT


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT  Тема решена
СообщениеДобавлено: Вт, ноя 17 2020, 22:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Делал я подобную ерунду. Но я восстанавливал утерянный ABAP-код из технического журнала самой БД, то есть просто текст. В Вашем же случае мало распаковать, нужно ещё потом разобрать структуру данных самого журнала. В общем случае в кластере могут сохраняться любые данные любой структуры, и не плоские тоже. Прочитать эти данные можно только в точно такую же структуру известную заранее. В самом кластере информация об этой структуре сохраняется только частично. Ну, и если надеяться, что алгоритм упаковки в кластере такой же, как в таблице ABAP-кода (REPOSRC), то можете попробовать. По ссылке исходный код на C++.

p.s.
Ещё один нюанс. На тот момент, когда я это делал (2014), автор кода даже не догадывался о существовании юникода (что было понятно из его комментариев), поэтому половину данных просто игнорировал. Возможно с тех пор это уже исправлено.

https://www.daniel-berlin.de/devel/sap- ... urce-code/

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм упаковки логов BALDAT
СообщениеДобавлено: Ср, ноя 18 2020, 07:50 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 17 2020, 10:51
Сообщения: 6
Parazit написал:
Делал я подобную ерунду. Но я восстанавливал утерянный ABAP-код из технического журнала самой БД, то есть просто текст. В Вашем же случае мало распаковать, нужно ещё потом разобрать структуру данных самого журнала. В общем случае в кластере могут сохраняться любые данные любой структуры, и не плоские тоже. Прочитать эти данные можно только в точно такую же структуру известную заранее. В самом кластере информация об этой структуре сохраняется только частично. Ну, и если надеяться, что алгоритм упаковки в кластере такой же, как в таблице ABAP-кода (REPOSRC), то можете попробовать. По ссылке исходный код на C++.

p.s.
Ещё один нюанс. На тот момент, когда я это делал (2014), автор кода даже не догадывался о существовании юникода (что было понятно из его комментариев), поэтому половину данных просто игнорировал. Возможно с тех пор это уже исправлено.

https://www.daniel-berlin.de/devel/sap- ... urce-code/

Благодарю за наводку, коллега!

upd: Всё так и есть. Разобрался. Спасибо. Выработал для себя подход к чтению из кластерных таблиц.
Решение: распаковка и чтение структуры, а не текста.
Система использование SAPом "кластерных" таблиц теперь понятна.

Для тех, кто интересуется данной темой:
Рекомендую изучить примеры программ: SBAL_DEMO_*
или же запустить транзакцию sgl1, повесить точку останова на import from и в отладчике изучить принцип действия.
Сама сериализация и компрессия осуществляется функциями ядра SAP и в открытом виде исходников не найти (как я понял). Но для чисто ABAP-программистов это и не требуется.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB