Как меняется реквизит ВерсияДанных?

1. Aleksey_Abramov 14.08.23 08:42 Сейчас в теме
Нужно понять, как работает этот механизм платформы по изменению версии данных.
На данный момент мне известно, что версия данных это реквизит с типом строка: "AAAAXwAAAAA=".
Строка закодирована по алгоритму base64. Если применить обратную функцию Base64Значение(), то получим двоичные данные:
"00 00 00 5F 00 00 00 00".
При каждой записи меняются первые 8 цифр этого шестнадцатеричного выражения, то есть при следующей записи будет:
"00 00 00 60 00 00 00 00".
Вопрос, для чего последние 8 цифр? Может быть они меняются при каком-то обмене? При загрузке из файла всё равно меняются только первые 8 цифр. А может быть вообще эта запись хранит больше информации, чем предполагаю?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1880116 14.08.23 19:19 Сейчас в теме
(1)
Нужно понять

Это возрастающий счетчик записи. Единственная операция, которая для него имеет смысл - это сравнение на больше/меньше, чтобы понять какая версия старше, а какая - младше. "Последние 8 цифр" это хранение в little-endian. В MSSQL там, например, вообще timestamp.

Сильно тебе это знание помогло?
Aleksey_Abramov; Дмитрий74Чел; +2 Ответить
4. Aleksey_Abramov 15.08.23 09:18 Сейчас в теме
(2)
Сильно тебе это знание помогло?

Да, очень. Мне для собственных нужд необходимо. Но как понять, при каких обстоятельствах будут использоваться последние 8 цифр?
7. user1880116 15.08.23 09:45 Сейчас в теме
(4)
при каких обстоятельствах будут использоваться последние 8 цифр?
Ты понимаешь, что означает хранение в little-endian?
8. Aleksey_Abramov 15.08.23 13:24 Сейчас в теме
9. user1880116 15.08.23 19:20 Сейчас в теме
(8)
Читал, не понял
Бедааааа...

"Последние 8 цифр" - это старшее двойное слово значения. Начнет заполнятся, когда будет заполнено младшее. При представлении в little-endian после "FF FF FF FF 00 00 00 00" при инкременте на единицу пойдет "00 00 00 00 00 00 00 01".

Что такое "двойное слово", "инкремент" и "единица" объяснять уж не буду, прости.
Aleksey_Abramov; +1 Ответить
10. Aleksey_Abramov 18.08.23 13:44 Сейчас в теме
(9) Благодарю за разъяснения, всё понятно теперь =) Но не обязательно делать акцент на том, что мне не понятны некоторые понятия типа "little-endian". Не все такие умные как вы ;)
5. Aleksey_Abramov 15.08.23 09:23 Сейчас в теме
(2) И где вы черпнули эту информацию? Я почему-то даже на сайте ИТС не нашёл пояснения.
3. Дмитрий74Чел 240 15.08.23 00:53 Сейчас в теме
Обычно этот реквизит никто не использует. По крайней мере не видел его использования в типовых в прикладной логике.
6. user1880116 15.08.23 09:44 Сейчас в теме
(3) У версии вообще единственное назначение - определить, что объект был изменен и твоя копия (неважно какая, объект в памяти, данные в другой базе) протухла. Для этого версию даже из base64 доставать не надо, сравниваешь, получаешь неравенство и всё. Поэтому и реализация такая.

Можно построить самописную оптимистичную блокировку, например. В нетиповых встречал.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот