May 22
Интеграция ClickHouse с Rails
ClickHouse — мощная аналитическая база данных, идеально подходящая для обработки больших объемов данных. Так как интегрировать ClickHouse с Rails и выполнить простой запрос?
Установка ClickHouse
Сначала запустите Clickhouse Docker следующим образом:
docker run -d --name mac-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server
- Установка https://clickhouse.com/docs/en/install
- # Gemfile gem 'clickhouse'
config/initializers/clickhouse.rb
Clickhouse.establish_connection( url: 'http://localhost:8123', database: 'default', user: 'default', password: '' )
Пример запроса
Теперь можно выполнить простой запрос к ClickHouse из Rails. Например, получим все события за последний день:
# app/controllers/events_controller.rb class EventsController < ApplicationController def index @events = Clickhouse.connection.execute(" SELECT * FROM events WHERE created_at >= now() - INTERVAL 1 DAY ") end end
Как использовать в моделях
# app/models/event.rb class Event < Clickhouse::Base self.table_name = 'events' def self.recent execute("SELECT * FROM events WHERE created_at >= now() - INTERVAL 1 DAY") end def self.count_by_day execute(" SELECT toDate(created_at) AS day, count(*) AS event_count FROM events GROUP BY day ORDER BY day ") end end