Table engines¶
clickhouse¶
- 数据是如何存储的
- 怎么写入输入,怎么读取数据
- 支持哪些查询方式,是如何支持的
- 并发的数据访问
- 需要的时候设置索引
- 多线程
- 数据 replication
TinyLog¶
作为数据存放在磁盘上的引擎,TinyLog 属于最简单的那种。 没一列数据都单独存储在一个压缩的文件里面。 写入数据的时候,数据直接追加在文件的尾部。 并发的访问有下面这些限制: 1. 如果读写操作同时执行,读操作会报错 2. 如果写并发,数据会出问题。 推荐的做法是,写一次,然后在需要的时候反复的读。 Queryies 操作是在单个执行流里面执行的,所以这个引擎是给小规模的数据量准备的,推荐是`1,000,000` 行。 … 处理小批量数据的时候,TinyLog 被拿来存储中间数据。
## Log 拿来放短期数据,一次性数据,测试
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. 可以定义好哪些要在哪些服务器上面做数据写入。 这是
- ???