Table engines

clickhouse

  • 数据是如何存储的
    怎么写入输入,怎么读取数据
  • 支持哪些查询方式,是如何支持的
  • 并发的数据访问
  • 需要的时候设置索引
  • 多线程
  • 数据 replication

TinyLog

作为数据存放在磁盘上的引擎,TinyLog 属于最简单的那种。 没一列数据都单独存储在一个压缩的文件里面。 写入数据的时候,数据直接追加在文件的尾部。 并发的访问有下面这些限制: 1. 如果读写操作同时执行,读操作会报错 2. 如果写并发,数据会出问题。 推荐的做法是,写一次,然后在需要的时候反复的读。 Queryies 操作是在单个执行流里面执行的,所以这个引擎是给小规模的数据量准备的,推荐是`1,000,000` 行。 … 处理小批量数据的时候,TinyLog 被拿来存储中间数据。

## Log 拿来放短期数据,一次性数据,测试

Memory

拿来做测试,也可以拿来小规模数据的快速计算。推荐 100,000,000 行数据。 系统会用

## Merge

本身不存储数据,但是可以同时从任意多个 table 里面读取数据。

Distirbuted

Distributed engine 不存储数据,但是支持在多个服务器上做分布式查询。

Distiributed(calcs, default, hits[, sharding_key]) 里面的参数分别是 集群名 数据库名表名, 以及一个可选的 sharding key

clacs 是 集群名字 default 是 database name hits 是 table name sharding key 是 sharding keys

除了直接从 remote servers 上面直接读取数据之外,我们还可以利用 remote server 做一些处理。 比如在执行一条含有`GROUP BY` 的查询语句时,数据会在 remote servers 上执行 aggr 操作,然后把执行 aggr 之后得到的中间结果作为响应返回给请求服务器,然后再做进一步的 aggr

你可以在多个 replicas 之间做 LB。

想往集群里面写入数据时,同城有两种方法:

1. 可以定义好哪些要在哪些服务器上面做数据写入。 这是

  1. ???