← На главную

Команда Asahi Linux выпустила легкую базу временных рядов на Go

15.05.2026 10:31 · hackernews

Команда Asahi Linux представила компактную встроенную базу данных временных рядов, оптимизированную для слабых устройств вроде Raspberry Pi, IoT-шлюзов и граничных узлов. Система требует минимум ресурсов и вообще не использует внешних зависимостей во время работы. Весь контент хранится в простых файлах внутри одного корневого каталога. Архитектура разделяет данные на три слоя: журнал предварительной записи WAL для гарантии безопасности при аварийном выключении, каталог catalog.json, где сопоставляются имена метрик и их типы, а также иммертабельные сжатые файлы data-<partition>.dat. Входной единственной точкой является движок, который маршрутизирует поступающие данные по префиксам имен. При записи данные сначала попадают в WAL, затем в оперативную память, и когда буфер заполняется, страница сжимается и записывается в файл данных. Система отклоняет записи со сбросом временной метки или идущие с задержкой. При запуске движок воспроизводит журнал в память, используя каталог для восстановления опущенных типов.

Запросы поддерживают выбор данных за заданный период времени с шагом, пропуская неподходящие файлы для ускорения работы. Имя метрики может содержать разделенные кососломом пробелы для иерархических пространств имен. Тип значения определяется первой записью — целые числа сохраняются как int32, а плавающие — как float32, смешивание запрещено. Формат записи использует префикс переменной длины uvarint, за которым следует полезная нагрузка с идентификатором метрики и временем. Сжатие через алгоритм S2 дает выигрыш в 3–4 раза на реальных данных с датчиков. Конфигурация хранится в файле engine.toml, где настраивается размер сегментов журнала, политика синхронизации fsync и профили долговечности. Для настройки удержания данных используются файлы manifest.toml внутри папок баз данных.

Пользователи могут настраивать разбивку на дни, месяцы или годы, создавая файлы вида data-YYYY-MM-DD.dat. Система поддерживает задачи сводки rollups, которые агрегируют данные из источника и пишут их в отдельную базу с заданными интервалами. Проверки целостности можно проводить через скрипт, имитирующий полный цикл генерации и импорта данных. Для работы есть HTTP-апит, совместимый с форматом VictoriaMetrics, а также офлайн-инструмент nanocli для инспекции файлов, импорта и экспорта данных без запуска сервера. Разработчики пишут на языке Go, используя функции OpenEngine, AddLine и QueryRange для прямого управления движком. В основе лежат структуры Database, Catalog, Page и WAL, которые обеспечивают безопасную обработку concurrent-запросов и быструю работу даже на ограниченном оборудовании.

Читать оригинал →