create table ck_log(ts timestamp, domain string, loglevel string,msg string, INDEX msg_index msg token_bf_v1(10240,2,0) granularity 2) engine = ReplicateMergeTree partition by toDate(ts) order by domain,ts
以天的时间作为分区键,域名+时间戳作为一级索引查找创建日志表,单表就可以搞定几千g的日志文件了,并且对字符串列创建了二级索引(tokenbf_v1会通过标点符号对字符串进行分词),这样就通过索引直接支持msg like ‘%test clickhouse%’的模糊查询
elasticsearch优点:a. 查询速度快,es是基于lucene的倒排索引实现,数据分词后预先已经排好序了,所以查询速度很快,qps较高,并且cpu消耗不大b.es的索引字段比较灵活,可以随意的增加新字段到es中elasticsearch缺点:a.数据写入时要对所有的字段进行分词操作,然后在对这些分词构建倒排索引,事实上,并不是所有的分词都会在搜索中用到,这里类似于数据预聚合的概念,有些分词是没必要的b.es的倒排索引文件,正排文件,docvalue文件等都很大,压缩效果很小,这就造成了数
更新(20年12月):请注意,
日志
库已不再积极开发。
早在2017年(当我们创建此项目时),就没有其他解决方案来获得我们急需的东西(在)。 但是,创建此类工具超出了我们的主要重点,因此,在维护
日志
库的同时,我们也一直在等待其他项目的出现。 幸运的是,Kubernetes生态系统以惊人的速度增长和发展。 今天,我们很高兴地承认我们可以依靠其他可靠的
日志
管理解决方案。 在大多数情况下,我们使用 。 (基于和的解决方案(ELK,EFK)可能是要考虑的其他选择。)
这意味着我们不再需要改进
日志
库。 由于它仍然是开源的,非常欢迎您提供帮助(甚至以成为维护者)。
现成的Kubernetes
日志
管理解
@
Elasticsearch
与
Clickhouse
数据
存储
对比
1.使用背景
随着公司业务发展,
Elasticsearch
开始暴露出一些弊端,不适合大批量的数据查询,高频次分页导出导致宕机、
存储
成本较高。
Elasticsearch
的查询语句维护成本较高、在聚合计算场景下出现数据不精确等问题。
Clickhouse
是列式数据库,列式型数据库适合OLAP场景,类似SQL语法降低开发和学习成本,采用快速压缩算法节省
存储
成本,采用向量执行引擎技术大幅缩减计算耗时。
2.OLAP
OLAP意思是On-Li
❄️大多数同学都知道数据有mysql、mongodb、oracle、nosql等等,这些是我们在学校能接触到最多的数据库,今天我们就来认识2个企业中比较常用的数据库
clickhouse
和
elasticsearch
。对
大数据
感兴趣的同学可以参考下面的文章👇:
hadoop专题: hadoop系列文章.
spark专题: spark系列文章.
flink专题: Flink系列文章.
⛄️处理
大数据
这一方面不只有hadoop这一脉、类似的像支持分布式的数据产品
clickhouse
和
elasticsearch
也
Clickhouse
是俄罗斯搜索巨头 Yandex 开发的完全列式
存储
计算的分析型数据库。
ClickHouse
在这两年的 OLAP 领域中一直非常热门,国内互联网大厂都有大规模使用。
Elasticsearch
是一个近实时的分布式搜索分析引擎,它的底层
存储
完全构建在 Lucene 之上。简单来说是通过扩展 Lucene 的单机搜索能力,使其具有分布式的搜索和分析能力。
Elasticsearch
通常会和其它两个开源组件 Logstash(
日志
采集)和 Kibana(仪表盘)一起提供端到端的
日志
/搜索
以前用的阿里云的
日志
服务,又慢又贵还不灵活。想到
clickhouse
的性能非常强,我们又没有什么全文搜索的场景。于是计划将
日志
写入
clickhouse
,用grafana可视化,看grafana已经指出重
clickhouse
数据源。
选用的方案是通过
clickhouse
tcp客户端流试写入。这样也不用担心文件碎片问题,性能也非常好(每秒轻松可以写入几十万) 占用资源比常规的
日志
收集器( Logstash,Fluentd,Logtail) 更少。
可以轻松收集各种数据源的数据 ,各种格式。写了一个库 htt