Skip to content

ActiveRecord Materialize.io database adapter based on Postgres adapter

License

Notifications You must be signed in to change notification settings

henrytseng/activerecord-materialize-adapter

Repository files navigation

ActiveRecord Materialize Adapter

Testing Doc reference Chat on Slack

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.

https://materialize.com/

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.