Как использовать Manticore для статистики?

Есть такая задача: внутренними ресурсами реализовать сбор статистики - показ изображений, клики по изображениям, и потом делать выборку изображений за заданный период с максимальным числом показов или кликов. Как я понял, примерно для таких задач и был задуман egine=columnar, но никак не соображу, как правильно это организовать. Как это сделать в обычной SQL-базе - это все понятно. Но раз уж все равно использую Мантикору для полнотекстового поиска в системе, то почему бы не использовать и для такой задачи? Но в доках только про то, есть colunnar-движок и columnar-атрибуты, а как их на практике задействовать - не пойму.

Если у вас индексы описаны в конфиге, то вот так:

index ... {
...

columnar_attrs = ...
}

Если вы создаёте индексы на лету, то так:

create table ... engine='columnar'

чтоб использовать columnar storage для всех возможных атрибутов или

create table <table name> (<attr name> int|float|... engine='columnar')

чтоб указать конкретные атрибуты, которые должны использовать columnar storage.

Например:

mysql> drop table if exists t; create table t(f text, a int engine='columnar', b int); desc t;
--------------
drop table if exists t
--------------

Query OK, 0 rows affected (0.00 sec)

--------------
create table t(f text, a int engine='columnar', b int)
--------------

Query OK, 0 rows affected (0.00 sec)

--------------
desc t
--------------

+-------+--------+----------------+
| Field | Type   | Properties     |
+-------+--------+----------------+
| id    | bigint |                |
| f     | text   | indexed stored |
| a     | uint   | columnar       |
| b     | uint   |                |
+-------+--------+----------------+
4 rows in set (0.00 sec)

Как создавать индексы и атрибуты - это понятно, непонятно, как дальше с этим работать. Если ближе к моей задаче, то для начала: как лучше - в общий индекс столбцовые атрибуты добавить?

create table t(img_id int, title text, view timestamp engine='columnar', click timestamp engine='columnar')

Или лучше отдельный индекс?

create table t1(img_id int, title text)
create table t2(img_id int, view timestamp, click timestamp) engine='columnar'

Или лучше отдельный индекс?

Это зависит от запросов, которые вы будете делать впоследствии. Если у вас будут запросы типа where match('@title ...') and view > ..., то в один. Если будут запросы к таблицам по отдельности, то можно и в разные. JOIN’а в мантикоре нет, если что.

Нет, в одном запросе одновременно поиска по тексту и фильтрации по столбцовым атрибутам не будет, значит, наверное, лучше отдельным индексом. Но как дальше - все равно непонятно. Если б я делал это в классическом SQL, то было примерно бы так:
Добавляем каждый клик в базу

insert into(img_id, click) values(1,now())

А потом получаем выборку пяти самых кликабельних изображений за период d1-d2

select count(*) as cnt, img_id from t
where click>=d1 and click<=d2
group by img_id
order by count(*) desc
limit 5

А здесь как?

Примерно так же. Manticore же умеет и where и group by и order by и limit. Почитайте доку про фильтрацию и агрегацию.

Я читал, но полагал, что это все относится к row-wise, и ожидал, что для columnar-атрибутов это делается как-то иначе. Теперь дошло, спасибо!