ActiveRecord Materialize Adapter
An ActiveRecord adapter to connect to Materialize databases. The adapter includes support for materialized views as models supported by ActiveRecord::Base
. Support for typical relational database tables are also supported but secondary.
Materialize is a streaming database for real-time applications. Materialize accepts input data from a variety of streaming sources (e.g. Kafka) and files (e.g. CSVs), and lets you query them using SQL.
Usage
Add gem to your Gemfile
gem 'activerecord-materialize-adapter'
Make sure you have the pg
or a compatible gem installed. Update your database.yml
production:
reporting_analytics:
adapter: materialize
host: "materialize-database-host"
port: "6875"
database: "materialize_database_name"
username: "materialize_user"
Gem is currently in an alpha state originally designed as a proof-of-concept.
Design
The ActiveRecord Materialize Adapter is heavily based on the PostgreSQL database adapter and also relies on the pg
gem to be installed.
Read about Materialized architecture https://materialize.com/docs/overview/architecture/
Materialize has been designed to specifically solve problems with event streaming; therefore, some relational database functionality may not be supported.
Contributing
To contribute read the CONTRIBUTING.md
first.
Fork the repository and create a pull request referencing tests and documentation.
A development stack can be setup with bin/build
and tests can be run with bin/test
.
Debugging with bin/materialize_psql
and bin/psql
allows you to connect directly with Materialize and PostgreSQL.
For testing and debugging a PostgreSQL configuration is available in postgres/postgresql.conf
and pg_hba.conf
.