May 22, 2024
Интеграция 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