Текущее время: Пт, мар 29 2024, 04:05

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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