Введение
В Alibaba, где ежедневно генерируются петабайты данных, эффективное хранение критически важно. Оно не только снижает затраты, но и ускоряет работу систем.
Сегодня мы разберём задачу по оптимизации хранения сжатых файлов, имитирующую реальные сценарии Alibaba.
🎯 Цель — определить сжатые файлы и рассчитать общую экономию памяти.
Постановка Задачи
Дана таблица
files со столбцами:- file_id — идентификатор файла
- file_type — тип файла
- file_size — исходный размер в байтах
- compressed_size — размер после сжатия (`NULL`, если файл не сжат)
Задачи:
1. Найти все сжатые файлы (`compressed_size IS NOT NULL`).
2. Для каждого сжатого файла вывести
file_id и file_type. 3. Вычислить и вывести общую экономию места:
экономия = file_size - compressed_size.Пример Данных
| file_id | file_type | file_size | compressed_size |
|---------|-----------|-----------|-----------------|
| 1 | image | 1000 | 600 |
| 2 | video | 5000 | NULL |
| 3 | document | 200 | 100 |
| 4 | image | 1500 | 700 |
Решение
🔹 Шаг 1. Идентификация Сжатых Файлов
Фильтруем только те строки, где
compressed_size не равен NULL:
SELECT
file_id,
file_type
FROM
files
WHERE
compressed_size IS NOT NULL;
Результат для примера:
file_id file_type
1 image
3 document
4 image
🔹 Шаг 2. Вычисление Общей Экономии Места
Суммируем разницу между исходным и сжатым размером:
SELECT
SUM(file_size - compressed_size) AS total_space_saved
FROM
files
WHERE
compressed_size IS NOT NULL;
Промежуточные расчёты:
- Файл 1: 1000 - 600 = 400
- Файл 3: 200 - 100 = 100
- Файл 4: 1500 - 700 = 800
Общая экономия: 400 + 100 + 800 = 1300
Результат запроса:
- total_space_saved: 1300
Итоговое Решение
Обычно на платформах типа DataLemur ожидаются два отдельных запроса:
1. Список сжатых файлов
SELECT
file_id,
file_type
FROM
files
WHERE
compressed_size IS NOT NULL;
2. Общая экономия
SELECT
SUM(file_size - compressed_size) AS total_space_saved
FROM
files
WHERE
compressed_size IS NOT NULL;
💰 В чем плюс такой методики — меньше данных → меньше расходов на хранение и трафик. В масштабе Alibaba это миллионы долларов.
📊 Мониторинг эффективности — можно оценить, насколько хорошо работают алгоритмы сжатия.
📦 Планирование ёмкости — точный прогноз потребностей в хранилище.
⚡ Повышение производительности — сжатые файлы быстрее передаются и обрабатываются.
Эта задача показывает, как простые SQL-запросы решают ключевые задачи оптимизации Big Data.
Понимание подобных принципов помогает инженерам данных:
- рационально использовать ресурсы,
- снижать расходы,
- повышать эффективность работы систем.
📌 Задача

