Size: a a a

ClickHouse не тормозит

2020 May 18

DC

Denny Crane (I don't... in ClickHouse не тормозит
Mimik Lamerger
а jdbc причем? или Яндекс решли, не править это а протащили через себя? я  отдельно ведь jdbc не ставлю а тяну с репы их драйвер и работаю с ним, странно что вот такая нумерация.
дядя вы чего? В jdbc драйвере CH реализована JDBC спецификация. Там написано Columns are numbered from 1.
источник

ML

Mimik Lamerger in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
дядя вы чего? В jdbc драйвере CH реализована JDBC спецификация. Там написано Columns are numbered from 1.
да я все понимаю, но лично я у себя в драйверах своих это бы исправил, ибо не верно это вот и все.
источник

ML

Mimik Lamerger in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
дядя вы чего? В jdbc драйвере CH реализована JDBC спецификация. Там написано Columns are numbered from 1.
это примерно как если бы двигатели внутреннего сгорания на бмв не изменялись с 1800 годов
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Mimik Lamerger
да я все понимаю, но лично я у себя в драйверах своих это бы исправил, ибо не верно это вот и все.
ээээ так все JDBC приложения сразу сломаются, они же ожидают что с 1 начинается, они же вообще не в курсе что они с КХ работают через драйвер КХ.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Mimik Lamerger
это примерно как если бы двигатели внутреннего сгорания на бмв не изменялись с 1800 годов
нене это у вас в прикуривателе 5 вольт, и педали тормоза и газа местами поменяны.
источник

ML

Mimik Lamerger in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
ээээ так все JDBC приложения сразу сломаются, они же ожидают что с 1 начинается, они же вообще не в курсе что они с КХ работают через драйвер КХ.
опять не понятно, я качаю драйвер у яндекса, он внутри там у себя тянет jdbc ок, я работаю с яндес драйвером, перегрузить метод или класс мне кажется не такой сложной задачей, что никак не повлияет на другие jdbc только те отвалятся, что будут пилить работу с КХ в обход оф драйвера
источник

ML

Mimik Lamerger in ClickHouse не тормозит
лан полемика пошла, я понял, так исторически сложилось.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Mimik Lamerger
опять не понятно, я качаю драйвер у яндекса, он внутри там у себя тянет jdbc ок, я работаю с яндес драйвером, перегрузить метод или класс мне кажется не такой сложной задачей, что никак не повлияет на другие jdbc только те отвалятся, что будут пилить работу с КХ в обход оф драйвера
вот качаю я драйвер КХ и подключаю его в metabase или dbeaver которые написаны задолго до КХ и все работает. Потому dbeaver работает по спецификации jdbc API где колонки с 1. Иначе это безумие какое-то, зачем нужна спецификация. Нафиг тогда вообще JDBC
источник

ML

Mimik Lamerger in ClickHouse не тормозит
ок
источник

T

Tony in ClickHouse не тормозит
День добрый. А подскажите какой string выберет кликхаус в конечном итоге?
Это SummingMergeTree
источник

S

Slach in ClickHouse не тормозит
Tony
Немного непонятно тогда как обновлять словарь если данные постоянно приходят извне
смотрите есть разные LAYOUT для словарей

но в общем случае воспринимайте словарь, это как большой cache в памяти, адаптированный для dictGet функции, который в зависимости от LAYOUT либо весь source грузил либо частично

там есть MIN \ MAX время когда словарь будет живой и когда он сам пытается обновиться

есть SYSTEM RELOAD DICTIONARY запрос для принудительного обновления
и есть SELECT * FROM system.dictionaries чтобы статус словаря поглядеть

словарь не может быть БОЛЬШОЙ в лучшем случае сотни тысяч активных элементов
потому что по факту это key value в памяти. на вход ключ словаря в виде tuple на выходе какой то атрибут, O(1) доступ по памяти... очень удобно когда надо связать таблицу фактов c таблицей измерений по схеме звездочка/снежинка
источник

S

Slach in ClickHouse не тормозит
Tony
День добрый. А подскажите какой string выберет кликхаус в конечном итоге?
Это SummingMergeTree
string в SORTING KEY входит?
источник

T

Tony in ClickHouse не тормозит
Slach
string в SORTING KEY входит?
Нет
источник

T

Tony in ClickHouse не тормозит
В документации сказано, что выберутся случайные значения string в этом случае, но на данном примере кликхаус выбрал значение первой вставленной строки
источник

T

Tony in ClickHouse не тормозит
Просто интересно можно ли использовать строки в SummingMergeTree, боюсь что строки могут теряться при слиянии
источник

S

Slach in ClickHouse не тормозит
Tony
В документации сказано, что выберутся случайные значения string в этом случае, но на данном примере кликхаус выбрал значение первой вставленной строки
гарантии нет никакой, в документации сказано правильно

если поле не включено в ORDER BY или в PRIMARY KEY
то его считай что нет, выберется как захочет
вообще в summingMergeTree такие поля (по которым нет суммирования и которые в sorting или в PK не включены) IMHO не нужны

СТРОКИ в SummingMergeTree использовать МОЖНО как и любой другой тип
вы алгоритм суммирования поймите просто и все

берутся все поля которые в SummingMergeTree перечислены
дальше суммируются по одинаковым значениям sorting key
либо при background merge (после вставки)
либо при SELECT ... FINAL

выборку из summing merge tree лучше с FINAL делать, только  если вы дополнительно не делаете GROUP BY ...
источник

T

Tony in ClickHouse не тормозит
Благодарю, перенесу строки в обычный merge tree
источник

T

Tony in ClickHouse не тормозит
вот кстати забавный кейс... Final каким-то образом вместо 150 выводит отрицательное значение
источник

S

Slach in ClickHouse не тормозит
Tony
вот кстати забавный кейс... Final каким-то образом вместо 150 выводит отрицательное значение
SHOW CREATE TABLE test;
покажите
источник

T

Tony in ClickHouse не тормозит
CREATE TABLE test.test
(
   `id` Int8,
   `int` Int8,
   `float` Decimal(15, 5),
   `string` String
)
ENGINE = SummingMergeTree((int, float))
ORDER BY id
SETTINGS index_granularity = 8192
источник