Pull to refresh

Comments 22

Всего 50 млн строк за секунду? Вроде как ClickHouse должен примерно на 8 ядрах успевать сканировать 1 миллиард. Вы, вероятно, вставляли строки с именами месяцев «как есть» вместо использования dict(...), например, или просто номеров месяца. Попробуйте с uint8, должно стать намного быстрее. Ну и что такое 50 млн записей, кто на таком малом объеме тестирует :)? И еще можно попробовать использовать семплирование данных при выборке, это должно серьезно ускорить выборки без особой потери в точности.
Со строковыми типами ClickHouse работает в разы медленней чем с числами.
В монге не было ни одного индекса? И в clickhouse тоже (если они там вообще есть)? И запросы на выборки довольно узкие. надо бы добавить для наглядности
ClickHouse колоночная база данных, там как бы по-умолчанию есть «индекс» по каждому из столбцов. Т.е. при выборке из статьи используется индекс по месяцу.
Попробовали insert — MongoDB быстрее, нет не подходит.
Попробовали select — MongoDB быстрее, нет не подходит.
Попробовали aggregate без индексов — MongoDB медленнее, вот это и будем сравнивать!
В чем смысл статьи?
Тащем-то нет:
Попробовали insert — MongoDB быстрее
Попробовали select — MongoDB медленнее

Заключение: «ClickHouse отлично подходит для проектов с BigData. Скорость выборки впечатляет. Данная СУБД хороший выбор для хранения данных связанных аналитической информацией.»

В заключении явно указано, что вставка – не сильная сторона ClickHouse'a в отличие от выборки. Значит он отлично подходит там, где надо много и часто выбирать.
В заключении явно указано, что вставка – не сильная сторона ClickHouse'a в отличие от выборки. Значит он отлично подходит там, где надо много и часто выбирать.

В документации четко прописано как рекомендуется его использовать, в частности, большие но не частые вставки (пара вставок в секунду норм). Выборки тоже не частые, но на больших срезах. Тот же пример select с limit, где limit никак не влияет на время исполнения по факту, т.к. данные вычитываются полностью.

У нас ClickHouse на достаточно средненьким сервере с лёгкостью вставляет данные со скоростью 200 000 записей в секунду.

aggregate без индексов медленнее до первого изменения проекции, т.е. если будет aggregate и первым пайпом будет $match, то выборка будет осуществляться с использованием индексов.
причем стоит добавить, что aggregate с последующим «count: {$sum: 1}» работает на порядки медленнее, чем делать find(...).count() из-за особенностей реализации, разница в некоторых случаях у меня была миллисекунды-секунды vs минуты.

index используется в обоих случаях, но по разному

count может пробежаться по индексу и просто посчитать количество входов
агрегаты всегда производят материализацию объектов найденых, а уже потом только прибавляют 1, в итоге получаем fetch и disk io.

поэтому сравнения вообще ни о чём =)
Не указано как именно осуществлялась вставка. В документации CH указано, что оптимальным считается вставка батчами по 100к записей.
Обычная практика у нас — накопление очереди в редисе и отправка инсерта раз в минуту или чаще. 5к строк вставляются без проблем одним пакетом (данных много, включая строковые типа userAgent). 50к уже многовато(для наших запросов).
статья хорошо показывает два простых момента

1. тексты нужно уметь делать.
2. результат нужно уметь удобно представить.
Укажите, пожалуйста версии и того и другого.
Ждем сравнения производительности кислого со сладким.
в многопоточном режиме
Требую тестов с проиндексированным коллекциями в MongoDB.
Требую не сравнивать колоночные базы с документарными) Ещё бы сравнили редис с мускулом, и сказали что редис лучше, потому что быстрее)
Согласен, но для бОльшей объективности данного (не очень правильного, ИМХО) обзора нужны индексы в MongoDB.
Код создания таблицы есть, а кода вставки в обоих системах — нет.
Если есть конкретный запрос на поиск, то создайте подходящие индексы в MongoDB. Потом тестируйте и вставку (bulk insert), и поиск (можно с планом выполнения, чтобы увидеть что сколько отъело времени).
Коллеги! Это просто прекрасно: статья живая, а ссылки на изображения нет. Можно с этим что-то сделать? Был бы просто счастлив, если бы исправили.
Sign up to leave a comment.

Articles