Перейти к основному содержимому

Liteset против Apache Superset 6.0.0

Сравнение двух бэкендов по компонентам. Liteset — это drop-in замена на уровне wire-протокола: видимое пользователем поведение намеренно идентично. Различия сосредоточены в архитектуре runtime.

Кратко

Apache Superset 6.0.0Liteset
Web-фреймворкFlask 2.x (WSGI)Litestar 2.x (ASGI)
App-серверGunicorn (gevent / sync)Uvicorn + uvloop
Модель параллелизмаPre-forked воркеры × потокиОдин event loop
ORMSQLAlchemy 1.4 (sync)SQLAlchemy 2.0 (async)
Драйвер БД метаданныхpsycopg2 / mysqlclientasyncpg / asyncmy / aiosqlite
DB engine specsSync BaseEngineSpecНативный async (Postgres, MySQL, ClickHouse, Trino) + sync-fallback
СериализацияMarshmallow + Pydantic v1msgspec
Конфигурацияsuperset_config.py (Python-модуль)pydantic-settings (с обратной совместимостью с superset_config.py)
Auth / RBACFlask-AppBuilderAsyncSecurityManager (порт FAB)
Фоновые задачиCeleryCelery (без изменений)
WebSocketВнешний Node.js superset-websocketНативный Litestar WebSocket
OpenAPIflask-appbuilder specАвто-генерация Litestar, отдаётся на /swagger/v1
МиграцииAlembic (psycopg2)Alembic (psycopg2 — миграции остаются sync)

Матрица совместимости

Что идентично в обоих:

  • ✅ Схема БД метаданных — те же ревизии Alembic
  • ✅ REST API — те же роуты, те же формы ответа (двойной поиск ключей camelCase/snake_case)
  • ✅ Session cookie — Flask-подписанные cookie декодируются нативно
  • ✅ CSRF-токены (X-CSRFToken)
  • ✅ Параметры запроса в формате rison
  • ✅ SPA-фронтенд (без изменений)
  • ✅ Celery-задачи (alerts, reports, thumbnails, async queries)
  • ✅ Feature flags
  • ✅ SIP-40 envelopes ошибок
  • ✅ Capabilities engine spec для каждой БД

Что ожидаемо отличается:

  • 🔁 Логи — Liteset пишет структурный JSON через structlog
  • 🔁 URL OpenAPI — /swagger/v1, авто-генерация
  • 🔁 Process model — один Uvicorn-процесс заменяет N Gunicorn-воркеров
  • 🔁 Footprint ресурсов — см. страницу Результаты

Что выбрать

Оставайтесь на Apache Superset 6.0.0, если:

  • Superset уже работает в проде и нет специфической боли с масштабированием
  • Вы зависите от сторонних Flask-middleware, у которых нет ASGI-аналога
  • Вам нужны long-term-support гарантии Apache-проекта

Попробуйте Liteset, если:

  • Упёрлись в потолок числа воркеров на одну ВМ
  • Готовы обменять несколько процентов памяти на кратно более высокую пропускную способность и меньшую хвостовую латентность под нагрузкой
  • Хотите вернуть WebSocket-сервис в основной бэкенд
  • Работаете с асинхронным Python в проде или изучаете его
подсказка

Liteset — академический порт. Для продакшен-инсталляций по-прежнему рекомендуется apache/superset.