Обновить
17
15.1

Пользователь

Отправить сообщение

У кого-то получается?
Пробовал несколько месяцев назад и сейчас, ничего не помогает.

А кроме уменьшения объема какие есть еще преимущества столбчатого хранения?

Сильно быстрее запросы, т.к. читать нужно меньше с диска: (1) данные по колонкам хранятся, то есть чтобы SUM(amount*price) сделать, БД отдельно читает 2 колонки, а не все строчки в случае построчного хранения (2) колонки сжаты по умолчанию LZ4/ZSDT кодеком, что тоже уменьшает объем считываемых данных.

По скорости тут кто-то бенчмарки проводил https://www.fiveonefour.com/blog/PostgreSQL-vs-ClickHouse

И что вообще за команда- вы есть в публичном поле? 

Да, работаю в одной из tier-1 команд в блокчейн данных и индексинге – если перейти в профиле в ТГ/Твиттер, можно инфу найти, тут не буду рекламировать )

Вам тоже огромных успехов!

Добавил в начало статьи немного конкретики про сжатие.

Дополню, возможно, это не совсем понятно из текста. Мы не используем КХ для всего, только для вышеперечисленных задач аналитики и агрегации. Постгрес у нас тоже есть, но для транзакционных данных – юзеры, тарифные планы, статусы воркеров / задач и т.п.

Вопрос хороший, спасибо. По поводу, как КХ появился у нас – так исторически сложилось. То есть пример "было так, не устраивало вот это - перешли на КХ" – привести не смогу.

У нас не только хранение котировок, а всевозможные агрегаты по этим данным (свечи разных интервалов, объемы торгов в разных разрезах, исторические параметры в разных разрезах и всякие такие штуки). Наверное, можно сделать это разными способами на разных БД, но в долгосрок OLAP БД тут выиграет.

Приведу один пример – объем хранилища (и зависящая от этого скорость выполнения запросов). В КХ данные хранятся по столбцам, в Postgres – по строкам. Если данные хранятся по столбцам, то КХ их эффективно сжимает – разница может в несколько раз быть, тк. LZ4/ZSTD хорошо работает на повторяющихся данных. Вот тут подробнее можно почитать https://clickhouse.com/docs/data-compression/compression-in-clickhouse У вас как данные хранятся, по столбцам или по колонкам?

Пушка, спасибо за идею!

Спасибо за уточнение!

Да, CH — это про аналитику. Ну мы его так используем. Там есть еще Log engine как раз для логов , но я его не использовал.

Я извиняюсь , а вы статью читали? )

Postgres — OLTP база, Clickhouse — OLAP. Это разные БД для разных задач.

Спасибо, выглядит интересно в таком случае

Хороший вопрос. В данном случае это был бекенд, который формирует CSV файл. Была задача выгрузить статистику по кошелькам пользователей из системы.

По поводу TheGraph – интересная штука, думаю на нем в один запрос можно было бы сделать. Но стараюсь не использовать проприетарные нестандартные API, все же веб3, децентрализация.

Да, throttling тоже есть. Количество HTTP запросов в секунду не тестил, писал про ограничение в 10 JSON-RPC запросов в одном HTTP запросе (батче).

«Свобода слова определяется обществом и не должна быть ограничена, важно искать истину через разнообразие мнений», — подытожил Дуров.

У меня есть американский номер телефона, и на нем аккаунт Телеграмм. В этом аккаунте не открываются некоторые каналы, например, Russia Today. С сообщением "This channel can't be displayed because it violated local laws". С РФ аккаунта с таким не сталкивался никогда. Это свобода слова или еще нет?

Вы имеете в виду вызов new ethers.Contract(...) ? Это конструктор, который инициализирует объект контракта, создает его свойства, но не обращается к RPC, поэтому картина не поменяется.

Спасибо за содержательные комментарии! :)

В целом согласен, но, например, для Полигона (остальные смотреть лень) из топ-10 в таблице только 4 не upgradeable (WETH, AVAX, MATIC, LINK). А поддерживает ERC2612, по факту, один USDC )

За Phalcon спасибо, посмотрю.

Чтобы не роутить трафик всего компа через VPN, я настроил Copilot работать через прокси. Вот пример для VSCode (думаю, в каждой IDE есть подобные).

Меню "Code - Settings – Settings", прокси указывается как http://user:password@host:port.

Важно: пришлось настроить собственную прокси через DumbProxy, купленная публичная выдавала ошибку 403 при активации расширения – у меня подозрение, что из-за того, что она находилась в каком-то стоп-листе.

Новый криптопродукт, т.к. в этом году планирую запустить что-то свое. Пока прорабатываю несколько идей сам и с друзьями.

  1. Да, так работает бинпоиск. Search возвращает индекс первого элемента, для которого переданная функция равно true, а это возможно только при условии >= 5.

    То есть для сортированного списка 1, 3, 5, 7, 9 переданная функция будет true для всех элементов, начиная с третьего до последнего (из документации sort.Search: "Search uses binary search to find and return the smallest index i in [0, n) at which f(i) is true, assuming that on the range [0, n), f(i) == true implies f(i+1) == true.")

  2. Я в статье упоминал, бот перепутал функции Index и Search, в описании говорится про Index, а реально используется Search, которая никогда не возвращает -1, а возвращает n, если поиск неуспешен (из документации sort.Search: "If there is no such index, Search returns n. (Note that the "not found" return value is not -1 as in, for instance, strings.Index"), поэтому runtime error не случится.

Добавил в статью пример 5 для простого прототипирования работы с Postgres. Результат приятно порадовал. Для прототипирования/небольших тестов вполне годно.

1

Информация

В рейтинге
422-й
Зарегистрирован
Активность