用于批量插入的缓冲区数据
问题描述:
每次在我的网站上发出请求时,都会将有关该事件的某些数据记录到数据库(Yandex ClickHouse)中。如果以大小至少为1000的块进行插入,ClickHouse的工作速度将大大加快。在每个请求中,我希望将数据发送到另一台要存储数据的计算机,然后在缓冲区达到某些大小时将其清除到数据库,说1000.我正在考虑使用RabbitMQ消息传递/缓冲,但我不知道这是正确的工具。有什么建议么?用于批量插入的缓冲区数据
答
是的,RabbitMQ的它是你的用例 一个合适的工具,但你也可以尝试使用缓冲台发动机 https://clickhouse.yandex/docs/en/table_engines/buffer.html
答
我们选择了让nginx的发送访问日志JSON格式到系统日志服务器(syslog-ng的) syslog-ng可以使用外部应用程序。并且可以将STDIN数据导入到应用程序中。所以我们写了一个golang实用程序来批量插入clickhouse。
这对我们很有帮助。
Ofcrouse你也可以编写一个golang工具来从rabbitmq和bulk插入到clickhouse。
在高峰期我们每秒处理140 k条消息,所以我写了golang每秒处理一条查询。所以它会根据每秒消息的数量自动缩放。直接创建用于此目的