Виды преобразования информации
Преобразование меняет представление, структуру или смысл данных. Важно не смешивать разные цели: Base64 не шифрует, архив не гарантирует целостность, агрегация теряет детали.
| Операция | Что меняется | Обратимость | Пример |
|---|---|---|---|
| кодирование | форма представления | обычно да | UTF-8, Base64 |
| сериализация | объект превращается в формат передачи | да при известной схеме | объект → JSON |
| сжатие | объём представления | без потерь или с потерями | ZIP, JPEG |
| шифрование | доступность содержания без ключа | да с ключом | ciphertext |
| хеширование | данные превращаются в отпечаток | нет | контроль целостности |
| фильтрация | удаляется часть записей или полей | нет без оригинала | только активные записи |
| агрегация | детали сворачиваются в показатели | нет | сумма по дню |
| нормализация | значения приводятся к общей форме | зависит от правил | часовые пояса → UTC |
| обогащение | добавляется контекст | исходная часть сохраняется | идентификатор → атрибуты |
| визуализация | данные превращаются в образ | детали часто теряются | временной ряд → график |
Информационные потери
Преобразование без потерь позволяет восстановить исходные данные. При преобразовании с потерями несколько исходов отображаются в один результат:
12:01:03 -> 12:00
12:14:59 -> 12:00После округления до часа исходную секунду восстановить нельзя.
Контракт преобразования
Перед реализацией фиксирую:
- входную и выходную схему;
- допустимые значения и кодировку;
- правила для
null, пустой строки и отсутствующего поля; - порядок операций;
- обработку ошибок;
- версионирование;
- свойства: обратимость, идемпотентность, сохранение порядка.
Порядок важен. «Отфильтровать, затем агрегировать» и «агрегировать, затем отфильтровать» могут дать разные ответы.
Самопроверка
- Почему Base64 не обеспечивает конфиденциальность?
- Когда нормализация становится преобразованием с потерями?
- Какие свойства нужны повторно запускаемой ETL-операции?