Дашборд с drilldown на одном Parquet-файле: 40 МБ, 18 КБ кода и HTTP range-запросы

Fast drilldown dashboards from a single Parquet file

Дашборд с drilldown на одном Parquet-файле: 40 МБ, 18 КБ кода и HTTP range-запросы

Инженер из MotherDuck показывает, как построить интерактивный дашборд для клиентов без базы данных и query engine. Он свернул 34 миллиона строк данных NYC 311 в 40-мегабайтный Parquet-куб, разместил его в R2 и отдаёт через Cloudflare Worker. Браузер читает только нужные диапазоны байтов с помощью Hyparquet — JavaScript-читалки Parquet. Ключ к скорости — сортировка строк и группировка наборов, чтобы min/max статистика отсекала лишние row groups. Подход работает для ограниченного набора фильтров и агрегаций, а куб пересобирается для каждого клиента.

В аналитике, когда у тебя есть только object storage, всё выглядит как range-запрос.
  1. simonw

    Байты проходят через небольшой Cloudflare Worker на пути, потому что бесплатный URL r2.dev ограничен по скорости. Для файла размером 40 МБ я предлагаю разместить его прямо на GitHub Pages — это фактически бесплатный CDN с поддержкой CORS и HTTP range-запросов, так что вы сможете запустить эту демонстрацию без необходимости привлекать Cloudflare Workers вообще.

  2. wyck

    На первый взгляд (я не тестировал) это выглядит как отличная экономия затрат и времени выполнения, но только для наборов данных, которым нужна частота обновления выше примерно 5 минут. У вас не будет возможности иметь кнопку обновления для получения «последних» данных за пределами этого окна, в зависимости от размера и времени сборки? Интересно, можно ли применить гибридный подход, объединив исторический parquet-файл с живым запросом.

  3. mrbluecoat

    Умное перепрофилирование технологий, но на практике это стоит делать только для статических наборов данных с диапазонными полезными нагрузками, достаточно малыми, чтобы уместиться в веб-ответ. > вашему конвейеру придется пересобирать файл каждого клиента достаточно быстро, чтобы соответствовать частоте обновления. ... данные, которые обновляются по грубому расписанию, а не в реальном времени

Ещё за этот день

2026-08-24