Статья

Рекомендации по загрузке данных в Data Lakehouse - Селена

2025-10-06 13:18 Новые
Продолжаем серию статей с подробным рассмотрением каждого из аспектов работы администратора.
Мы выделили пять важнейших аспектов работы администратора Селены: развертывание, моделирование данных, прием данных, выполнение запросов и мониторинг.
В предыдущей статье описывались советы по моделированию данных в Селене на базе механизма StarRocks. В этой статье мы рассмотрим загрузку данных (Data Ingestion).

Загрузка данных

При неправильном подходе загрузка данных может стать серьезной проблемой. Селена упрощает этот процесс, но в нём также есть свои нюансы.

Рекомендации

  • Обязательно: не используйте выражение INSERT INTO VALUES() в рабочем окружении.
  • Рекомендуется: загружайте пакеты данных с интервалом не менее 5 секунд.
  • Рекомендуется: при загрузке данных в таблицы с первичным ключом включите постоянный индекс, но только при использовании высокопроизводительного хранилища, например на NVME SSD.
  • Рекомендуется: при частом выполнении ETL-операций (INSERT INTO…SELECT) включите функцию выгрузки на диск, чтобы не превысить лимиты памяти.
  • Рекомендуется: при пакетной загрузке партиционированной таблицы, особенно большого объема исторических данных из Iceberg, Hudi или Hive, загружайте данные постепенно, партиция за партицией, чтобы предотвратить создание мелких файлов.

Жизненный цикл данных

  • Рекомендуется: для удаления используйте TRUNCATE вместо DELETE.
  • Обязательно: полный синтаксис обновления доступен в модели с первичным ключом начиная с версии 3.0; многопоточное обновление запрещено; интервал между операциями обновления должен составлять не менее одной минуты.
  • Обязательно: при удалении данных с помощью DELETE запрос должен включать WHERE; многопоточное удаление запрещено: например, вместо 1000 отдельных инструкций DELETE FROM tbl1 WHERE id=1 выполните DELETE FROM tbl1 WHERE id IN (1,2,3,...,1000).
  • Обязательно: операция DROP по умолчанию перемещает данные в корзину на фронтенде, где они хранятся 86 400 секунд, или 1 день. В этот период их можно восстановить, если они были удалены случайно. Период хранения задается параметром catalog_trash_expire_second. По истечении этого срока данные переносятся в корзину на бэкенде и по умолчанию хранятся там 259 200 секунд, или 3 дня.
Период хранения был изменен в версиях 2.5.17, 3.0.9, 3.1.6 и далее на 86 400 секунд (1 день). Задается параметром trash_file_expire_time_sec. Если нужно быстро освобождать дисковое пространство после операции DROP, сократите период хранения удаленных файлов на фронтенде и бэкенде.
Как видите, эффективно загружать данные в Селену на базе StarRocks не так уж сложно. Следуйте этим советам, чтобы избежать многих проблем.