Luden
GuinsooLabGitHub
  • Welcome to Luden!
  • Quickstart
    • Deploying with Docker
    • Building from Source
    • Scaling Luden Server
  • Configuration
    • Configuration
    • Authorization
    • Destinations Conf
      • Snowflake
      • AWS S3
      • AWS RedShift
      • Postgres
      • Google BigQuery
      • MySQL
      • Clickhouse
      • Guinsoo
      • WebHook
    • Sources Conf
      • Synchronization Scheduling
      • Airbyte Based Sources
    • Sources Catelog
  • Features
    • JavaScript Transform
    • Destination Tags
    • Data Warehouses
    • Match Mode
    • Stream Mode
    • DBT Cloud Integration
    • Event Cache
    • Geo Data Resolution
    • Typecast
    • Admin Endpoint
    • Application Metrics
  • Sending Data
    • JS SDK
    • Node.js
    • Event API
    • Bulk API
    • Segment API
  • Extending
    • Destination Extensions
    • Source Extensions
    • API Specs
    • Luden Architecture
  • Appendix
    • Contribute
    • FAQs
Powered by GitBook
On this page
  1. Features

Stream Mode

PreviousMatch ModeNextDBT Cloud Integration

Last updated 2 years ago

LUden supports streaming of incoming events for data warehouse. In Stream mode all events are loaded to destinations in real-time one by one. That is the fastest way to get data to destinations, but it may not be as performant and cost-effective as .

Luden uses intermediate queue that helps to survive temporary destination unavailability or slowdowns.

Currently, Luden supports only one streaming thread for destination. That may be a bottleneck in cases of high event number. In that case is recommended.

Pipeline

  • Apply multiplexing, put each multiplexed event to the destination queue. Queue items are persisted in events/queue.dst=${destination_id} dir.

  • Separate thread processes each queue. For each event:

    • Run table_name_template expression. If the result is an empty string - skip. If evaluation failed, the event is written to events/failed

    • Apply LookupEnrichment step

    • Apply Transformation and MappingStep (get BatchHeader)

    • Get Table structure from memory (if memory cache is missing, get the schema from DWH)

    • Do table patching (see above in batch step)

    • Insert object with explicit typecast (if it is configured in the ) using INSERT statement.

    • If INSERT failed, refresh schema from DWH and repeat the step

    • If failed, write the record to events/failed

    • If success, write the event to events/archive

Batch mode
Batch mode
JavaScript Transformation