#async #postgresql #query-builder #data-ingestion

quick_stream

Quick Stream is a Rust-based solution designed to efficiently handle data upsert operations with a focus on performance and scalability. Utilizing asynchronous programming and a dynamic sender-receiver model, Quick Stream aims to streamline the process of synchronizing large datasets with minimal overhead.

3 releases

0.1.3 Jul 17, 2024
0.1.2 Jul 11, 2024
0.1.0 Jul 5, 2024

#867 in Database interfaces

Download history 122/week @ 2024-07-14 5/week @ 2024-07-21 39/week @ 2024-07-28 33/week @ 2024-09-15 24/week @ 2024-09-22 12/week @ 2024-09-29

109 downloads per month

MIT license

165KB
3K SLoC

Quick Stream

Build UnitTestsRust Badge

  • Quick Stream is a Rust-based solution designed to efficiently handle data upsert operations with a focus on performance and scalability. Utilizing asynchronous programming and a dynamic sender-receiver model, Quick Stream aims to streamline the process of synchronizing large datasets with minimal overhead.

Files Overview

  • multi_table_upsert_support.rs: Contains support functions and utilities for performing multi-table upsert operations.
  • multi_table_upsert.rs: Implements the main functionality for multi-table upserts.
  • multi_table_delete_support.rs: Provides support functions for multi-table delete operations.
  • builder_support.rs: Contains utilities and support functions for building database queries.
  • multi_table_delete.rs: Implements the main functionality for multi-table delete operations.
  • support.rs: General support functions used across various modules.
  • upsert.rs: Contains the core upsert logic.
  • shutdown_service.rs: Implements functionality to safely shut down services.
  • lib.rs: Main library file that integrates all modules.
  • delete.rs: Contains the core delete logic.
  • builder.rs: Implements query builder functionality.

Crate

This library is available as a crate on crates.io. You can include it in your Cargo.toml:

Getting Started

Prerequisites

  • Rust 1.79.0
  • Cargo package manager

Development And Testing

  1. Clone the repository:
git clone https://github.com/uratne/quick-stream
cd quick_sync
  1. Test the project
cargo test --lib

Features

  1. unix-signals ( will enable graceful shutdown job on unix systems )
  2. windows-signals ( will enable graceful shutdown job on windows systems ) Same Cancellation Token Should be used to all of the processors of type QuickStream on windows

Roadmap

See the ROADMAP

Improvements

  1. More Unit Tests Are Always welcome
  2. Some simple examples have been given as a guide
  3. For multi tables I have used a composite structure to handle all the tables, It would be nicer if It was done by defining another trait. For my use case this is enough. So I stop here for now. Maybe in future I'll fix this. If someone is willing to help out with this, your help is much appriciated.

Acknowledgement

Dependencies

~24–35MB
~582K SLoC