An Elixir client library for ClickHouse, providing connection pooling, async inserts, bulk buffering, and migrations.
Pillar is an Elixir client library for ClickHouse, designed to facilitate efficient interaction with the OLAP database from Elixir applications. It solves the problem of integrating ClickHouse into Elixir systems by providing connection management, async operations, bulk data handling, and schema migrations. The library supports both direct connections and supervised pools for production use.
Elixir developers building data-intensive applications that require analytical querying, high-volume data ingestion, or real-time analytics with ClickHouse.
Developers choose Pillar for its comprehensive feature set tailored to ClickHouse's strengths, including production-ready connection pooling, efficient bulk insert strategies, and built-in migration tooling, all within an idiomatic Elixir interface.
Elixir library client for work with ClickHouse
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supervised worker pools with load balancing across multiple ClickHouse servers, providing high availability and efficient connection management as detailed in the pool configuration section.
Features like async inserts and configurable bulk insert buffers with periodic flushing and error handling callbacks, optimized for high-volume ingestion like logging and metrics.
Version-controlled schema management with mix tasks for generating and running migrations, supporting multi-statement and dynamically generated migrations for consistent database setup.
Swappable adapters such as TeslaMintAdapter or HttpcAdapter, plus support for custom implementations, allowing integration with different HTTP client needs as shown in the configuration section.
Async inserts are only available when using connection pools, not with direct connections, which restricts flexibility for simple or ad-hoc use cases without pool setup.
Setting up features like timezone support requires additional dependencies (tzdata), and configuring pools, buffers, and adapters involves multiple steps, adding initial complexity.
Optimized specifically for ClickHouse's analytical workloads, it lacks general-purpose features like ORM support or transaction handling found in broader database clients.