ClickHouse 24.12 版本发布说明

ClickHouse 版本升级 阅读详情

图片

本文字数:11871;估计阅读时间:30 分钟

作者: ClickHouse官方

本文在公众号【ClickHouseInc】首发

图片

又到了月度版本更新的时间!

发布概要

ClickHouse 24.12 版本重磅发布,本次更新带来了16项全新功能🦃、16项性能优化⛸️、36个bug修复🏕️

本次版本新增了多项实用功能,包括改进 Enum 的可用性、支持 Iceberg REST 目录和模式演进、实现反序表排序、支持将 JSON 子列作为主键、自动优化 JOIN 的执行顺序等更多亮点功能!

新贡献者  

我们热烈欢迎 24.12 版本中的所有新贡献者!ClickHouse 的成功离不开社区的共同努力。每次看到社区不断壮大,都会让我们倍感激励和鼓舞。

以下是本次版本的新贡献者名单:

Emmanuel Dias, Xavier Leune, Zawa_ll, Zaynulla, erickurbanov, jotosoares, zhangwanyun1, zwy991114, JiaQi

Enum 可用性改进  

贡献者:ZhangLiStar  

本次发布改进了 Enum 类型的可用性。我们将通过 Reddit 评论数据集示例来展示这些变化。首先,创建一个包含几个字段的表:

CREATE TABLE reddit
    (
        subreddit LowCardinality(String),
        subreddit_type Enum(
            'public' = 1, 'restricted' = 2, 'user' = 3, 
            'archived' = 4, 'gold_restricted' = 5, 'private' = 6
        ),
    )
    ENGINE = MergeTree
    ORDER BY (subreddit);

随后,我们可以插入数据,如下所示:

INSERT INTO reddit
SELECT subreddit, subreddit_type
FROM s3(        
  'https://clickhouse-public-datasets.s3.eu-central-1.amazonaws.com/reddit/original/RC_2017-12.xz',
  'JSONEachRow'
);

假如我们希望统计 subreddit_type 中包含字符 "e" 的帖子数量,可以使用 LIKE 运算符编写如下查询:

SELECT
    subreddit_type,
    count() AS c
FROM reddit
WHERE subreddit_type LIKE '%restricted%'
GROUP BY ALL
ORDER BY c DESC;

在 24.12 版本之前运行该查询,会显示以下错误信息:

Received exception:
Code: 43. DB::Exception: Illegal type Enum8('public' = 1, 'restricted' = 2, 'user' = 3, 'archived' = 4, 'gold_restricted' = 5, 'private' = 6) of argument of function like: In scope SELECT subreddit, count() AS c FROM reddit WHERE subreddit_type LIKE '%e%' GROUP BY subreddit ORDER BY c DESC LIMIT 20. (ILLEGAL_TYPE_OF_ARGUMENT)

而在 24.12 版本中运行相同的查询,则会返回如下结果:

   ┌─subreddit_type─┬──────c─┐
1. │ restricted     │ 698263 │
2. │ user           │  39640 │
   └────────────────┴────────┘

此外,等号 (=) 和 IN 运算符现在也支持未知值。例如,以下查询会返回类型为 Foo 或 public 的所有记录:

SELECT count() AS c
FROM reddit
WHERE subreddit_type IN ('Foo', 'public')
GROUP BY ALL;

在 24.12 版本之前运行这段查询时,会显示以下错误信息:

Received exception:
Code: 691. DB::Exception: Unknown element 'Foo' for enum: while converting 'Foo' to Enum8('public' = 1, 'restricted' = 2, 'user' = 3, 'archived' = 4, 'gold_restricted' = 5, 'private' = 6). (UNKNOWN_ELEMENT_OF_ENUM)

而在 24.12 版本中运行该查询,则会返回如下结果:

   ┌────────c─┐
1. │ 85235907 │ -- 85.24 million
   └──────────┘

反向表排序  

贡献者:Amos Bird  

本次版本新增了一个 MergeTree 设置 allow_experimental_reverse_key,支持在 MergeTree 排序键中启用降序排序。以下是一个简单的示例:  

ENGINE = MergeTree 
ORDER BY (time DESC, key)
SETTINGS allow_experimental_reverse_key=1;

这个表会按照 time 字段进行降序排列。  

这种降序排序功能在时间序列分析中非常有用,尤其是处理 Top N 查询时效果显著。  

JSON 子列作为表主键  

贡献者:Pavel Kruglov  

ClickHouse 引入了全新的 JSON 实现,可以将每个唯一的 JSON 路径存储为真正的列式数据:  

图片

上图展示了 ClickHouse 如何将 JSON 键路径以原生子列的形式存储(并支持读取)。这种方式不仅提供了出色的数据压缩,还能保持与传统数据类型相同的查询性能。  

在本次发布中,ClickHouse 现已支持将 JSON 子列用作表的主键列:  

CREATE TABLE T
(
    data JSON()
)
ORDER BY (data.a, data.b);

这意味着,写入的 JSON 文档会根据用作主键的 JSON 子列,按分片顺序在磁盘上进行排序。此外,ClickHouse 会为这些主键列自动创建主索引文件,从而加速基于主键的过滤查询:  

图片

同时,当主键列按基数从低到高排序时,JSON 子列的 *.bin 数据文件也能实现最佳压缩效果。  

以下是一个更具体的示例:  

测试中我们使用了一台 AWS EC2 m6i.8xlarge 实例,配置为 32 个 vCPU 和 128 GiB 内存,并选用了 Bluesky 数据集。  

我们将 1 亿条 Bluesky 事件(每个事件为一个 JSON 文档)加载到两个不同的 ClickHouse 表中。  

第一个表没有使用任何 JSON 子列作为主键列:  

CREATE TABLE bluesky_100m_raw
(
    data JSON()
)
ORDER BY ();

第二个表则使用了一些 JSON 子列作为主键列(还为部分列添加了类型提示,以避免查询中的类型转换):  

CREATE TABLE bluesky_100m_primary_key
(
    data JSON(
        kind LowCardinality(String), 
        commit.operation LowCardinality(String), 
        commit.collection LowCardinality(String), 
        time_us UInt64
    )
)
ORDER BY (
    data.kind, 
    data.commit.operation, 
    data.commit.collection, 
    fromUnixTimestamp64Micro(data.time_us)
);

这两个表都存储了完全相同的 1 亿条 JSON 文档。  

接着,我们在没有主键的表上运行一个查询(查询内容为“人们何时在 Bluesky 上屏蔽他人”,改编自“人们何时使用 Bluesky?”的查询,您可以在 ClickHouse SQL playground 上试运行):  

SELECT
    toHour(fromUnixTimestamp64Micro(data.time_us::UInt64)) AS hour_of_day,
    count() AS block_events
FROM bluesky_100m_raw
WHERE (data.kind = 'commit') 
AND (data.commit.operation = 'create') 
AND (data.commit.collection = 'app.bsky.graph.block')
GROUP BY hour_of_day
ORDER BY hour_of_day ASC;
    ┌─hour_of_day─┬─block_events─┐
 1. │           0 │        89395 │
 2. │           1 │       143542 │
 3. │           2 │       154424 │
 4. │           3 │       162894 │
 5. │           4 │        65893 │
 6. │           5 │        39556 │
 7. │           6 │        34359 │
 8. │           7 │        35230 │
 9. │           8 │        30812 │
10. │           9 │        35620 │
11. │          10 │        31094 │
12. │          16 │        33359 │
13. │          17 │        65555 │
14. │          18 │        65135 │
15. │          19 │        65775 │
16. │          20 │        70096 │
17. │          21 │        65640 │
18. │          22 │        75840 │
19. │          23 │       143024 │
    └─────────────┴──────────────┘

19 rows in set. Elapsed: 0.607 sec. Processed 100.00 million rows, 10.21 GB (164.83 million rows/s., 16.83 GB/s.)
Peak memory usage: 337.52 MiB.

然后,我们在带有主键的表上运行相同的查询(需要注意,该查询对主键列的前缀字段进行了过滤):  

SELECT
    toHour(fromUnixTimestamp64Micro(data.time_us)) AS hour_of_day,
    count() AS block_events
FROM bluesky_100m_primary_key
WHERE (data.kind = 'commit') 
AND (data.commit.operation = 'create') 
AND (data.commit.collection = 'app.bsky.graph.block')
GROUP BY hour_of_day
ORDER BY hour_of_day ASC;
    ┌─hour_of_day─┬─block_events─┐
 1. │           0 │        89395 │
 2. │           1 │       143542 │
 3. │           2 │       154424 │
 4. │           3 │       162894 │
 5. │           4 │        65893 │
 6. │           5 │        39556 │
 7. │           6 │        34359 │
 8. │           7 │        35230 │
 9. │           8 │        30812 │
10. │           9 │        35620 │
11. │          10 │        31094 │
12. │          16 │        33359 │
13. │          17 │        65555 │
14. │          18 │        65135 │
15. │          19 │        65775 │
16. │          20 │        70096 │
17. │          21 │        65640 │
18. │          22 │        75840 │
19. │          23 │       143024 │
    └─────────────┴──────────────┘

19 rows in set. Elapsed: 0.011 sec. Processed 1.47 million rows, 16.16 MB (129.69 million rows/s., 1.43 GB/s.)
Peak memory usage: 2.18 MiB.

Boom!查询速度提升了 50 倍,内存使用减少了 150 倍。

Iceberg REST catalog 和模式演化支持  

贡献者:Daniil Ivanik 和 Kseniia Sumarokova  

在本次版本中,ClickHouse 新增了对 Apache Iceberg REST catalog 查询的支持。目前已支持 Unity 和 Polaris catalog。我们可以通过 Iceberg 表引擎创建表:  

CREATE TABLE unity_demo
ENGINE = Iceberg('https://dbc-55555555-5555.cloud.databricks.com/api/2.1/unity-catalog/iceberg')
SETTINGS
  catalog_type = 'rest',
  catalog_credential = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:...',
  warehouse = 'unity',
  oauth_server_uri = 'https://dbc-55555555-5555.cloud.databricks.com/oidc/v1/token',
  auth_scope = 'all-apis,sql';

接着,可以查询 catalog 中底层表的数据:  

SHOW TABLES FROM unity_demo;
SELECT * unity_demo."webinar.test";

Iceberg 表引擎还支持模式演化功能,包括列的新增和移除、列名的修改,以及在原始数据类型之间的类型变更。

并行哈希 JOIN 默认启用  

贡献者:Nikita Taranov  

每次 ClickHouse 的新版本发布,都会对 JOIN 功能进行优化。这次的圣诞特别版本也不例外,带来了许多 JOIN 相关的增强功能!✨  

在 24.11 版本的发布文章中,我们提到并行哈希 JOIN 已成为 ClickHouse 的默认 JOIN 策略。在这里,我们将通过具体示例展示这一改进带来的性能提升。  

我们在一台 AWS EC2 m6i.8xlarge 实例上进行了测试,该实例配置了 32 个 vCPU 和 128 GiB 内存。  

测试数据集选用的是 TPC-H 数据集,扩展因子为 100,表示所有表中的总数据量约为 100 GB。  

我们按照官方文档的指引,创建并加载了 8 个表,这些表模拟了一个批发供应商的数据仓库。 

首先,我们在使用 ClickHouse 之前默认的 JOIN 策略(哈希 JOIN)时,运行了 TPC-H 基准查询集中第 3 个查询: 

SELECT
    l_orderkey,
    sum(l_extendedprice * (1 - l_discount)) AS revenue,
    o_orderdate,
    o_shippriority
FROM
    customer,
    orders,
    lineitem
WHERE
    c_mktsegment = 'BUILDING'
    AND c_custkey = o_custkey
    AND l_orderkey = o_orderkey
    AND o_orderdate < DATE '1995-03-15'
    AND l_shipdate > DATE '1995-03-15'
GROUP BY
    l_orderkey,
    o_orderdate,
    o_shippriority
ORDER BY
    revenue DESC,
    o_orderdate
FORMAT Null
SETTINGS join_algorithm='hash';
0 rows in set. Elapsed: 38.305 sec. Processed 765.04 million rows, 15.03 GB (19.97 million rows/s., 392.40 MB/s.)
Peak memory usage: 25.42 GiB.

接下来,我们切换为 ClickHouse 新的默认 JOIN 策略(并行哈希 JOIN),运行相同的查询:

SELECT
    l_orderkey,
    sum(l_extendedprice * (1 - l_discount)) AS revenue,
    o_orderdate,
    o_shippriority
FROM
    customer,
    orders,
    lineitem
WHERE
    c_mktsegment = 'BUILDING'
    AND c_custkey = o_custkey
    AND l_orderkey = o_orderkey
    AND o_orderdate < DATE '1995-03-15'
    AND l_shipdate > DATE '1995-03-15'
GROUP BY
    l_orderkey,
    o_orderdate,
    o_shippriority
ORDER BY
    revenue DESC,
    o_orderdate
FORMAT Null
SETTINGS join_algorithm='default';
0 rows in set. Elapsed: 5.099 sec. Processed 765.04 million rows, 15.03 GB (150.04 million rows/s., 2.95 GB/s.)
Peak memory usage: 29.65 GiB.

使用并行哈希 JOIN 后,查询速度提升了约 8 倍。

JOIN 自动重排序  

贡献者:Vladimir Cherkasov  

圣诞节版本新增了一项功能——JOIN 自动重排序。  

首先,我们回顾一下 ClickHouse 的最快 JOIN 算法(例如其默认的并行哈希 JOIN)的工作原理。这些算法依赖于内存中的哈希表,分为两个主要阶段:  

第一步,将 JOIN 查询右侧表的数据加载到哈希表中(构建阶段);  

第二步,将左侧表的数据流式读取,并通过哈希表进行匹配(扫描阶段):  

图片

需要注意的是,由于 ClickHouse 会将右侧表的数据加载到内存中并创建哈希表,因此将较小的表放在 JOIN 的右侧可以更高效地使用内存,并且速度通常更快。  

类似地,ClickHouse 的部分合并 JOIN(基于外部排序的 JOIN 算法)也有类似的构建和扫描阶段。例如,部分合并 JOIN 会先对右表进行排序,然后扫描左表。因此,将较小的表作为右表也能显著提高效率。  

为了更灵活地选择构建表,ClickHouse 引入了新的设置项 query_plan_join_swap_table,可以根据需要调整构建表的选择逻辑。其取值如下:  

  • auto(默认值):自动选择行数较少的表作为构建表,几乎适用于所有 JOIN 查询。  

  • false:固定使用右表作为构建表。  

  • true:固定使用左表作为构建表。  

接下来,我们通过一个 TPC-H 查询示例演示 query_plan_join_swap_table 的 auto 模式(有关表的创建和加载方法以及测试硬件信息,请参见上一节)。该查询将连接 lineitem 表和 part 表。  

首先,查看两个表的大小:  

SELECT
    table,
    formatReadableQuantity(sum(rows)) AS rows,
    formatReadableSize(sum(bytes_on_disk)) AS size_on_disk
FROM system.parts
WHERE active AND (table IN ['lineitem', 'part'])
GROUP BY table
ORDER BY table ASC;
   ┌─table────┬─rows───────────┬─size_on_disk─┐
1. │ lineitem │ 600.04 million │ 26.69 GiB    │
2. │ part     │ 20.00 million  │ 896.47 MiB   │
   └──────────┴────────────────┴──────────────┘

可以看到,lineitem 表的规模远大于 part 表。  

下一条查询语句将 lineitem 表和 part 表进行连接,并且把规模大得多的lineitem表放在连接操作的右侧:

SELECT 100.00 * sum(
  CASE
  WHEN p_type LIKE 'PROMO%'
  THEN l_extendedprice * (1 - l_discount)
  ELSE 0 END) / sum(l_extendedprice * (1 - l_discount)) AS promo_revenue
FROM part, lineitem
WHERE l_partkey = p_partkey;

接着运行一个查询,将规模更大的 lineitem 表放在 JOIN 的右侧,同时将 query_plan_join_swap_table 设置为 false(默认行为)。此时,ClickHouse 会将 lineitem 表的数据加载到内存中(并行加载到多个哈希表中,因为并行哈希 JOIN 是默认算法):  

SELECT 100.00 * sum(
  CASE
  WHEN p_type LIKE 'PROMO%'
  THEN l_extendedprice * (1 - l_discount)
  ELSE 0 END) / sum(l_extendedprice * (1 - l_discount)) AS promo_revenue
FROM part, lineitem
WHERE l_partkey = p_partkey
SETTINGS query_plan_join_swap_table='false';
   ┌──────promo_revenue─┐
1. │ 16.650141208349083 │
   └────────────────────┘

1 row in set. Elapsed: 55.687 sec. Processed 620.04 million rows, 12.67 GB (11.13 million rows/s., 227.57 MB/s.)
Peak memory usage: 24.39 GiB.

然后,将 query_plan_join_swap_table 设置为 auto 并运行相同的查询。此时,ClickHouse 会基于表大小的估算结果,选择将较小的 part 表作为构建表,先将其加载到哈希表中,再对 lineitem 表进行流式连接:  

SELECT 100.00 * sum(
  CASE
  WHEN p_type LIKE 'PROMO%'
  THEN l_extendedprice * (1 - l_discount)
  ELSE 0 END) / sum(l_extendedprice * (1 - l_discount)) AS promo_revenue
FROM part, lineitem
WHERE l_partkey = p_partkey
SETTINGS query_plan_join_swap_table='auto';
   ┌──────promo_revenue─┐
1. │ 16.650141208349083 │
   └────────────────────┘

1 row in set. Elapsed: 9.447 sec. Processed 620.04 million rows, 12.67 GB (65.63 million rows/s., 1.34 GB/s.)
Peak memory usage: 4.72 GiB.

结果显示,查询速度提升了 5 倍以上,内存使用量减少了 5 倍。

JOIN 优化:表达式提取  

贡献者:János Benjamin Antal  

对于包含多个 OR 条件链的 JOIN 查询,例如以下抽象案例:  

JOIN ... ON (a=b AND x) OR (a=b AND y) OR (a=b AND z)

…当 ClickHouse 使用基于哈希表的 JOIN 算法时,会为每个条件单独创建一个哈希表。  

为了减少哈希表的数量并支持更高效的谓词下推(将过滤条件推到更接近数据源的位置以减少数据量),可以从上述 JOIN 查询的 ON 子句中提取公共表达式:  

JOIN ...ON a=b AND (x OR y OR z)

这一优化功能可以通过开启新设置 optimize_extract_common_expressions(设为 1)来实现。由于该功能仍处于实验阶段,默认值为 0(关闭)。  

接下来,我们用一个 TPC-H 查询展示该设置的效果(有关表的创建、数据加载及测试硬件说明,请参考上一节)。  

首先,我们运行以下包含多个 OR 条件链的 JOIN 查询,并将 optimize_extract_common_expressions 设置为 0(禁用优化):  

SELECT
  sum(l_extendedprice * (1 - l_discount)) AS revenue
FROM
  lineitem, part
WHERE
(
        p_partkey = l_partkey
    AND p_brand = 'Brand#12'
    AND p_container in ('SM CASE', 'SM BOX','SM PACK', 'SM PKG')
    AND l_quantity >= 1 AND l_quantity <= 1 + 10
    AND p_size BETWEEN 1 AND 5
    AND l_shipmode in ('AIR', 'AIR REG')
    AND l_shipinstruct = 'DELIVER IN PERSON'
)
OR
(
        p_partkey = l_partkey
    AND p_brand = 'Brand#23'
    AND p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK')
    AND l_quantity >= 10 AND l_quantity <= 10 + 10
    AND p_size BETWEEN 1 AND 10
    AND l_shipmode in ('AIR', 'AIR REG')
    AND l_shipinstruct = 'DELIVER IN PERSON'
)
OR
(
        p_partkey = l_partkey
    AND p_brand = 'Brand#34'
    AND p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG')
    AND l_quantity >= 20 AND l_quantity <= 20 + 10
    AND p_size BETWEEN 1 AND 15
    AND l_shipmode in ('AIR', 'AIR REG')
    AND l_shipinstruct = 'DELIVER IN PERSON'
)
SETTINGS optimize_extract_common_expressions = 0;

在测试机器上,这个查询运行了 30 分钟,但仅完成了 3% 的进度……我们随即中止了查询,并将 optimize_extract_common_expressions 设置为 1(启用优化),再次运行相同的查询:  

SELECT
  sum(l_extendedprice * (1 - l_discount)) AS revenue
FROM
  lineitem, part
WHERE
(
        p_partkey = l_partkey
    AND p_brand = 'Brand#12'
    AND p_container in ('SM CASE', 'SM BOX','SM PACK', 'SM PKG')
    AND l_quantity >= 1 AND l_quantity <= 1 + 10
    AND p_size BETWEEN 1 AND 5
    AND l_shipmode in ('AIR', 'AIR REG')
    AND l_shipinstruct = 'DELIVER IN PERSON'
)
OR
(
        p_partkey = l_partkey
    AND p_brand = 'Brand#23'
    AND p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK')
    AND l_quantity >= 10 AND l_quantity <= 10 + 10
    AND p_size BETWEEN 1 AND 10
    AND l_shipmode in ('AIR', 'AIR REG')
    AND l_shipinstruct = 'DELIVER IN PERSON'
)
OR
(
        p_partkey = l_partkey
    AND p_brand = 'Brand#34'
    AND p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG')
    AND l_quantity >= 20 AND l_quantity <= 20 + 10
    AND p_size BETWEEN 1 AND 15
    AND l_shipmode in ('AIR', 'AIR REG')
    AND l_shipinstruct = 'DELIVER IN PERSON'
)
SETTINGS optimize_extract_common_expressions = 1;
   ┌───────revenue─┐
1. │ 298937728.882 │ -- 298.94 million
   └───────────────┘

1 row in set. Elapsed: 3.021 sec. Processed 620.04 million rows, 38.21 GB (205.24 million rows/s., 12.65 GB/s.)
Peak memory usage: 2.79 GiB.

这次查询仅用 3 秒便完成了执行并返回结果,性能提升极其显著。

非等值 JOIN:默认支持  

贡献者:Vladimir Cherkasov  

自 24.05 版本以来,ClickHouse 已以实验功能形式支持在 JOIN 的 ON 子句中使用非等值条件:  

-- Equi join
SELECT t1.*, t2.* FROM t1 JOIN t2 ON t1.key = t2.key;

-- Non-equi joins
SELECT t1.*, t2.* FROM t1 JOIN t2 ON t1.key != t2.key;
SELECT t1.*, t2.* FROM t1 JOIN t2 ON t1.key > t2.key

在当前版本中,这项功能已全面启用,并默认支持。  

敬请期待今年后续版本更新,我们将继续带来更多令人兴奋的 JOIN 改进!

征稿启示

面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com

Ubuntu20安装clickhouse最新版本详细教程 文章目录环境说明:安装步骤:第1步:检查是否支持SSE4.2(一般都支持)第2步:为apt添加clickhouse仓库第3步:添加依赖并更新apt数据库第4步:安装clickhouse服务端及客户端第5步:启动clickhouse第6步:客户端连接测试第7步:DBeaver客户端连接clickhouse 环境说明: 系统版本:Ubuntu20.04 LTS 64位 clickhouse版本:21.2.3.15 说明:以下所有操作都是在有sudo权限的普通用户(wedo)下操作的,你若使用root用户操作的话 阅读详情

相关推荐

IGBT基础知识

IGBT

u010783226的专栏 1万+

ClickHouse版本升级

clickhouse数据库升级

sfgagasfga的博客 2413

开关电源设计实战:如何用AP值快速选型磁芯(附计算公式推导)

本文为开关电源工程师提供了基于AP值的磁芯快速选型实战指南。文章深入解析了AP值作为磁芯‘功率吞吐量’指标的核心物理意义,并通过详细的公式推导和24W反激电源设计实例,手把手演示如何利用AP值计算公式,结合电流密度、窗口利用率等关键参数,从众多磁芯型号中高效筛选出合适型号,同时强调了选型后的关键校验步骤与常见误区。

weixin_29234239的博客 872

ClickHouse 23.12 版本发布说明

迎接2024年圣诞节后的第一个新版本。

ClickHouseDB的博客 2130

银行数据仓库体系实践(3)--数据架构

狭义的数据仓库数据架构用来特指数据分布,广义的数据仓库数据架构还包括数据模型、数据标准和数据治理。即包含相对静态部分如元数据、业务对象数据模型、主数据、共享数据,也包含相对动态部分如数据流转、ETL、整合、访问应用和数据全生命周期管控治理。 数据架构层面通过数据分类、分层部署等手段,从非功能性视角将数据合理布局。通过整体架构管控和设计,支持业务操作类和管理分析类应用(系统),满足业...

acumen_leo的博客 7010

chipseeker Y叔

这一次讲解非常重要的peak注释,注释在ChIPseeker里只需要用到一个函数annotatePeak,它可以满足大家各方面的需求。 输入 当然需要我们上次讲到的BED文件,ChIPseeker自带了5个BED文件,用getSampleFiles()可以拿到文件的全路径,它返回的是个named list,我这里取第4个文件来演示。annotatePeak的输入也可以是GRanges对象,你如果用R做peak calling的话,直接就可以衔接上ChIPseeker了。 require(ChIPseeke

生信小博士的博客 1588

ClickHouse 24.1 版本发布说明

ClickHouse 在 2024 年的首个新版本发布来了!

ClickHouseDB的博客 2659

密码子偏好性分析实战指南:从codonW到EMBOSS-CUSP的完整流程解析

本文详细解析了密码子偏好性分析的完整流程,从基础概念到实战操作,涵盖codonW和EMBOSS-CUSP工具的使用技巧。通过RSCU、ENC、CAI等关键参数分析,帮助研究者理解基因表达调控规律,优化外源基因表达效率,适用于分子生物学和合成生物学研究。

weixin_33737774的博客 571

ClickHouse 24.3 版本发布说明

本文字数:10774;估计阅读时间:27 分钟审校:庄晓东(魏庄)本文在公众号【ClickHouseInc】首发北半球迎来春天,也是 ClickHouse 发布新版本的时候了。发布概要本次ClickHouse 24.3版本包含了🎁、🛷、🐛一如既往,我们诚挚地欢迎所有在 24.3 版本中新加入的贡献者!ClickHouse 之所以备受欢迎,很大程度上要归功于社区的努力贡献。看到社区不断壮大总是令人感到谦卑。

ClickHouseDB的博客 1880

hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案

hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案。

1291

基于泰勒展开改进的物理信息神经网络

基于泰勒展开改进的物理信息神经网络

天天酷科研的博客 503

ClickHouse 24.9 版本发布说明

首发又到新版本发布的时间了!

ClickHouseDB的博客 1151

优化dalsa相机检测界面

上节实现了使用qt结合dalsa相机显示检测到缺陷的画面,由于窗口过于简陋,本节将进行一个界面优化。

A1983Z的博客 986

ClickHouse 24.10 版本发布说明

本文字数:13817;估计阅读时间:35 分钟作者:ClickHouse Team本文在公众号【ClickHouseInc】首发又到了新版本发布的时间!本次ClickHouse 24.10 版本包含了🎁、🛷、🐛在本次发布中,clickhouse-local 更加实用,新增了复制和计算器模式。可刷新物化视图已达到生产就绪标准,远程文件支持缓存,表克隆操作也得到了简化。正如往常,我们热烈欢迎所有 24.9 版本中的新贡献者!

ClickHouseDB的博客 1746

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ClickHouse 24.8 LTS 版本发布说明

本文字数:13885;估计阅读时间:35 分钟作者:ClickHouse Team本文在公众号【ClickHouseInc】首发时间飞逝,又到了新版本发布的时刻!本次ClickHouse 24.8 版本包含了🎁、🛷、🐛这个版本是长期支持 (LTS) 版本,发布后将获得长达 12 个月的支持。如果你想了解稳定版本和 LTS 版本的区别,可以查阅文档。本次更新包括全新升级的 JSON 类型、针对时间序列数据的表引擎、Kafka 消息的精准一次性处理,当然也少不了对表连接操作的优化!

ClickHouseDB的博客 2642

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ClickHouse 24.7 版本发布说明

本文字数:8563;估计阅读时间:22 分钟作者:ClickHouse Team本文在公众号【ClickHouseInc】首发时间!又一个月过去了,这意味着又到了发布新版本的时间!本次ClickHouse 24.7 版本包含了🎁、🛷、🐛一如既往,我们特别欢迎所有在 24.7 版本中的新贡献者!ClickHouse 的广受欢迎,很大程度上归功于社区的积极贡献。看到社区不断壮大,总是让人感到谦虚。

ClickHouseDB的博客 1429

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ClickHouse 24.4 版本发布说明

本文字数:13148;估计阅读时间:33 分钟审校:庄晓东(魏庄)本文在公众号【ClickHouseInc】首发新的一个月意味着新版本的发布!发布概要本次ClickHouse 24.4版本包含了🎁、🛷、🐛和往常一样,我们向 24.4 版本中的所有新贡献者表示热烈欢迎!ClickHouse 的受欢迎程度在很大程度上归功于社区的努力。看到社区不断壮大总是令人感到骄傲。

ClickHouseDB的博客 1599

ClickHouse 24.11 版本发布说明

本次ClickHouse 24.11版本包含了9个新功能🎁、15项性能优化🛷、68个bug修复🐛

ClickHouseDB的博客 1413

ClickHouse 24.6 版本发布说明

本文字数:14127;估计阅读时间:36 分钟作者:ClickHouse team本文在公众号【ClickHouseInc】首发又到了发布新版本的时间!本次ClickHouse 24.6 版本包含了🎁、🛷、🐛我们向 24.6 版本的所有新贡献者表示特别欢迎!ClickHouse 的流行离不开社区的贡献,看到社区不断壮大,总是令人感动。

ClickHouseDB的博客 1207

ClickHouse 24.5 版本发布说明

本文字数:12168;估计阅读时间:31 分钟审校:庄晓东(魏庄)本文在公众号【ClickHouseInc】首发Meetup活动ClickHouse Shanghai User Group第1届 Meetup 讲师招募中,欢迎讲师在文末扫码报名!发布概要本次ClickHouse 24.5版本包含了🎁、🛷、🐛一如既往,我们对 24.5 版本的所有新贡献者表示特别欢迎!ClickHouse 的受欢迎程度在很大程度上归功于社区的贡献。看到这个社区不断壮大,总是让人感到谦卑。

ClickHouseDB的博客 1343

ClickHouse 25.9 版本发布说明

ClickHouse 25.9 版本共带来了 25 项新功能 🍎、 22 项性能优化 🍁、 以及 83 个bug修复 🌿。

ClickHouseDB的博客 1928

ClickHouse 25.1 版本发布说明

本文字数:12318;估计阅读时间:31 分钟作者: ClickHouse Team本文在公众号【ClickHouseInc】首发又到了每月发布新版本的时间!发布概要ClickHouse 25.1 版本正式发布,本次更新带来了🦃、在本次发布中,我们优化了并行哈希连接算法,引入了二级哈希表进行加速;在表级别新增了 MinMax 索引;改进了 Merge 表;增加了自增功能……还有更多精彩更新等你探索!热烈欢迎 25.1 版本的新贡献者!

ClickHouseDB的博客 1841

ClickHouse Release 23.10 版本发布说明

新的功能包括SHOW MERGES和SHOW SETTINGS命令,新的byteSwap、arrayRandomSample、jsonMergePatch等等

ClickHouseDB的博客 1448

ClickHouse 25.3 版本发布说明

ClickHouse 25.3 版本正式发布,本次更新带来了18项新功能🌱、13项性能优化🐣、48个bug修复🌦️

ClickHouseDB的博客 1636

ClickHouse 23.11 版本发布说明

23.11版本新增25个新功能,实现了24项性能优化,修复了70处bug。

ClickHouseDB的博客 1436

ClickHouse 25.11 版本发布说明

本次发布新增了 ACME 集成、小型 GROUP BY 的并行合并、投影作为辅助索引等多项实用功能!

ClickHouseDB的博客 997
上一篇: 利用高级监控仪表板解决常见数据库问题
下一篇: 使用 Evidence.dev 可视化 BlueSky 数据
ClickHouseDB
博客等级 码龄3年 1707粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值