ClickHouse Release 23.10 版本发布说明

【Clickhouse从入门到精通】第60篇:ClickHouse生态总结与未来展望 ClickHouse系列收官总结 本文作为《ClickHouse从入门到精通》系列的第60篇收官之作,系统回顾了整个系列的知识体系。文章从基础概念到高级应用,全面梳理了ClickHouse的核心技术: 知识体系:完整回顾了60篇文章的知识图谱,包括列式存储原理、MergeTree引擎家族、分布式架构等核心内容 生态工具:详细盘点了ClickHouse的企业版工具、运维监控、数据集成和可视化方案 版本演进:分析了从21.x到24.x的主要版本特性升级 未来趋势:展望了向量化引擎、湖仓一体、AI集成等发展方向 阅读详情

图片

本文字数:9454;估计阅读时间:24 分钟

审校:大平

我们非常激动地分享在23.10版本中的一系列令人惊叹的功能。

发布概要:

  • 新增23个新功能
  • 实现了26项性能优化
  • 修复了60处bug

以下是一小部分突出的功能... 但是此版本包含新的 SHOW MERGES 和SHOW SETTINGS 命令,新的 byteSwap、arrayRandomSample、jsonMergePatch、formatQuery、formatQuerySingleLine函数,argMin 和 argMax作为组合器,带有分区的参数化 ALTER 命令,具有更好名称的 untuple 函数,强制执行投影,允许没有主键的表,还有更多。

新的贡献者

和往常一样,我们向23.10中的所有新贡献者表示热烈欢迎!ClickHouse的流行在很大程度上要归功于社区的努力。看到社区不断壮大总是令人敬畏的。

如果你在这里看到自己的名字,请与我们联系...但我们也会在Twitter等地找到你。

AN, Aleksa Cukovic, Alexander Nikolaev, Avery Fischer, Daniel Byta, Dorota Szeremeta, Ethan Shea, FFish, Gabriel Archer, Itay Israelov, Jens Hoevenaars, Jihyuk Bok, Joey Wang, Johnny, Joris Clement, Lirikl, Max K, Priyansh Agrawal, Sinan, Srikanth Chekuri, Stas Morozov, Vlad Seliverstov, bhavuk2002, guoxiaolong, huzhicheng, monchickey, pdy, wxybear, yokofly

最大三角形三桶(Largest Triangle Three Buckets)

由Sinan贡献

最大三角形三桶是一种降采样数据以便更容易进行可视化的算法。它试图保留初始数据的视觉相似性,同时减少点的数量。特别是,它似乎非常擅长保留局部极小值和极大值,这在其他降采样方法中经常丢失。

我们将通过Kaggle SF Bay Area Bike Share数据集来看看它是如何工作的,该数据集包含一个跟踪在每分钟的每个站点里可用停车位数量的CSV文件。

让我们创建一个数据库:

CREATE DATABASE BikeShare;
USE BikeShare;

然后创建一个名为status的表,由status.csv文件填充:

create table status engine MergeTree order by (station_id, time) AS
from file('Bay Area Bikes.zip :: status.csv', CSVWithNames)
SELECT *
SETTINGS schema_inference_make_columns_nullable=0;

SELECT formatReadableQuantity(count(*))
FROM status

┌─formatReadableQuantity(count())─┐
│ 71.98 million                   │
└─────────────────────────────────┘

原始数据

首先,让我们看一下某个站点在几天内的原始数据。以下查询返回4,537个点,存储在raw.sql文件中:

from BikeShare.status select toUnixTimestamp64Milli(time), docks_available
where toDate(time) >= '2013-08-29' and toDate(time) <= '2013-09-01'
and station_id = 70
FORMAT CSV

我们可以通过运行以下查询来可视化随时间变化的可用停车位:

clickhouse local --path bikeshare.chdb < raw.sql |
uplot line -d, -w 100 -t "Raw Data"

图片

接下来,我们将看看:如果我们将点的数量减少大约10倍会发生什么,我们可以通过对10分钟的时间段内的点进行平均来实现。这个查询将存储在avg.sql文件中,如下所示:

WITH buckets AS (
  SELECT
    toStartOfInterval(time, INTERVAL 10 minute) AS bucket,
    AVG(docks_available) AS average_docks_available,
    AVG(toUnixTimestamp64Milli(time)) AS average_bucket_time
  FROM BikeShare.status
  where toDate(time) >= '2013-08-29' and toDate(time) <= '2013-09-01'
  AND (station_id = 70)
  GROUP BY bucket
  ORDER BY bucket
)
SELECT average_bucket_time, average_docks_available
FROM buckets
FORMAT CSV

我们可以这样生成可视化:

clickhouse local --path bikeshare.chdb < avg.sql |
uplot line -d, -w 100 -t "Average every 5 mins"

图片

这种降采样效果并不太差,但它失去了曲线形状中一些更微妙的变化。在原始数据可视化中,缺失的变化用红色圈出:

图片

让我们看看Largest Triangle Three Buckets算法的效果。查询(lttb.sql)如下所示:

from BikeShare.status
select untuple(arrayJoin(
  largestTriangleThreeBuckets(50)(
    toUnixTimestamp64Milli(time), docks_available
)))
where toDate(time) >= '2013-08-29' and toDate(time) <= '2013-09-01' AND station_id = 70
FORMAT CSV

然后我们可以生成这样的可视化:

clickhouse local --path bikeshare.chdb < lttb.sql |
uplot line -d, -w 100 -t "Largest Triangle Three Buckets"

图片

从视觉检查来看,这个可视化版本只缺少以下本地最小值:

图片

arrayFold

由Lirikl贡献

ClickHouse提供了带有许多扩展和强大改进的SQL,使其更适合用于分析任务。ClickHouse SQL的一个示例是对数组的广泛支持。数组在其他编程语言(如Python和JavaScript)的用户中是众所周知的。它们通常用于以一种简洁而直接的方式,对各种问题进行建模和求解。ClickHouse有超过70个用于处理数组的函数,其中许多函数都是高阶函数,提供了很高的抽象水平,使您能够以简洁和声明性的方式表达,满足对数组进行复杂操作的需求。我们自豪地宣布,这个数组函数家族现在有了一个新的、期待已久的、最强大的成员:arrayFold。

arrayFold等效于JavaScript中的Array.reduce函数,用于通过在累积方式下将lambda函数应用于数组元素,从而从左到右折叠或减少数组中的元素,从最左侧的元素开始,并在处理每个元素时累积结果。这个累积过程可以被认为是将数组元素一起 folding。

以下是一个简单的例子,我们在其中使用 arrayFold 来计算数组 [10, 20, 30] 的所有元素的总和:

SELECT arrayFold((acc, v) -> (acc + v), [10, 20, 30],  0::UInt64) AS sum

┌─sum─┐
│  60 │
└─────┘

请注意,在上述 arrayFold 的示例调用中,我们传递了一个lambda函数 (acc, v) -> (acc + v) 和一个初始累加器值 0。

然后,lambda函数被调用,其中 acc 设置为初始累加器值 0,v 设置为第一个(最左侧)数组元素 10。接下来,lambda函数被调用,其中 acc 设置为前一步的结果,v 设置为第二个数组元素 20。这个过程继续进行,从左到右迭代地折叠数组元素,直到达到数组的末尾,产生最终结果 60。

这个图表展示了我们lambda函数体中的 + 运算符如何在每个迭代步骤中累积应用于初始累加器和所有从左到右的数组元素:

图片

我们只是用上面的例子作为介绍。我们本可以使用arraySum或arrayReduce(sum)来计算所有数组元素的总和。但 arrayFold 更为强大。它是ClickHouse数组函数家族中最通用和灵活的成员之一,可用于执行各种数组操作,如聚合、过滤、映射、分组以及更复杂的任务。

提供自定义折叠函数(lambda函数形式)以及在每个迭代步骤中保持、检查和塑造折叠状态(累加器)的可能性是一种强大的组合,可以用简洁且可组合的方式,进行复杂的数据处理。我们通过一个更复杂的示例进行演示。大约一年前,我们向社区提出了一个问题,要求其构建一个能重现 git blame 命令的查询,并会给第一个提出解决方案的人快递一件T恤。我们甚至提到:

“从提交历史中重建这个命令特别具有挑战性 - 尤其是因为ClickHouse目前没有一个能够以当前状态迭代的arrayFold函数。”

现在,你有机会赢得T恤 🤗

以下是一个相关且简化的例子,模拟了一个由ClickHouse驱动的文本编辑器,提供无限的时间/版本旅行,我们仅存储每行的更改,并利用 arrayFold 轻松重建每个版本(或时间点)的完整文本。

我们创建用于存储行更改历史记录的表(对于每个版本,我们还可以使用DateTime字段来跟踪更改的时间):

CREATE OR REPLACE TABLE line_changes
(
    version UInt32,
    line_change_type Enum('Add' = 1, 'Delete' = 2, 'Modify' = 3),
    line_number UInt32,
    line_content String
)
ENGINE = MergeTree
ORDER BY time;

我们存储了一份行的更改历史:

INSERT INTO default.line_changes VALUES
(1, 'Add'   , 1, 'ClickHouse provides SQL'),
(2, 'Add'   , 2, 'with improvements'),
(3, 'Add'   , 3, 'that makes it more friendly for analytical tasks.'),
(4, 'Add'   , 2, 'with many extensions'),
(5, 'Modify', 3, 'and powerful improvements'),
(6, 'Delete', 1, ''),
(7, 'Add'   , 1, 'ClickHouse provides a superset of SQL');

我们创建了三个用于操作数组内容的用户定义函数(我们仅出于可读性考虑创建了这些UDF;或者,我们可以将它们的主体嵌入到下面的主查询中):

-- add a string (str) into an array (arr) at a specific position (pos)
CREATE OR REPLACE FUNCTION add AS (arr, pos, str) -> 
  arrayConcat(arraySlice(arr, 1, pos-1), [str], arraySlice(arr, pos));
  
-- delete the element at a specific position (pos) from an array (arr)
CREATE OR REPLACE FUNCTION delete AS (arr, pos) -> 
  arrayConcat(arraySlice(arr, 1, pos-1), arraySlice(arr, pos+1));

-- replace the element at a specific position (pos) in an array (arr)
CREATE OR REPLACE FUNCTION modify AS (arr, pos, str) -> 
  arrayConcat(arraySlice(arr, 1, pos-1), [str], arraySlice(arr, pos+1));

我们创建了一个使用 arrayFold 的参数化视图的主查询:

CREATE OR REPLACE VIEW text_version AS
WITH T1 AS (
  SELECT arrayZip(
    groupArray(line_change_type),
    groupArray(line_number),
    groupArray(line_content)) as line_ops
  FROM (SELECT * FROM line_changes 
        WHERE version <= {version:UInt32} ORDER BY version ASC)
)
SELECT arrayJoin(
  arrayFold((acc, v) -> 
    if(v.'change_type' = 'Add',       add(acc, v.'line_nr', v.'content'),
    if(v.'change_type' = 'Delete', delete(acc, v.'line_nr'),
    if(v.'change_type' = 'Modify', modify(acc, v.'line_nr', v.'content'), []))),
    line_ops::Array(Tuple(change_type String, line_nr UInt32, content String)),
    []::Array(String))) as lines
FROM T1;

我们穿越文本的各个版本:

SELECT * FROM text_version(version = 2);

┌─lines─────────────────────────────────────────────┐
│ ClickHouse provides SQL                           │
│ that makes it more friendly for analytical tasks. │
└───────────────────────────────────────────────────┘


SELECT * FROM text_version(version = 3);

┌─lines─────────────────────────────────────────────┐
│ ClickHouse provides SQL                           │
│ with improvements                                 │
│ that makes it more friendly for analytical tasks. │
└───────────────────────────────────────────────────┘


SELECT * FROM text_version(version = 7);

┌─lines─────────────────────────────────────────────┐
│ ClickHouse provides a superset of SQL             │
│ with many extensions                              │
│ and powerful improvements                         │
│ that makes it more friendly for analytical tasks. │
└───────────────────────────────────────────────────┘

在上面的主查询中,我们使用了ClickHouse中的一个典型设计模式,即使用groupArray聚合函数将表的特定行值(暂时)转换为数组。然后,可以通过数组函数方便地进行处理,并通过arrayJoin聚合函数将结果转换回各个表行。请注意,我们如何利用 arrayFold 来累积重建文本版本,从一个空数组作为初始累加器值开始,并使用累加器数组内的位置表示行号。

导入Numpy数组

由Yarik Briukhovetskyi贡献

今年早些时候,曾在一个系列的共两部分的博客里,我们探讨了ClickHouse对矢量的支持。作为其中的一部分,我们将来自LAION数据集的超过20亿个矢量,及其相应的元数据加载到了ClickHouse中。该数据集包含了超过20亿个图像,及其标题的矢量嵌入,是从分布式爬取中收集的。这些嵌入是使用多模型生成的,允许用户通过文本搜索图像,反之亦然。

这些矢量以 npy 格式的Numpy数组分布在流行的平台HuggingFace上。每个矢量还有相应的元数据,以Parquet文件的格式存储,其中包含标题、图像的高度或宽度以及图像和文本之间的相似性分数等属性。

为了在当时将这些数据插入ClickHouse,我们不得不编写Python代码将 npy 文件与Parquet文件合并,目的是将所有列合并到一个表中。虽然ClickHouse对Parquet有很好的支持,但不支持 npy 格式。为了增加难度,npy 文件只设计为包含浮点数数组。因此,数据集的连接需要基于行位置完成。虽然Python方法足够,并且可以很容易地并行化处理超过2300组文件的合并,但当我们不能只用ClickHouse本地方法解决问题时,我们总是感到沮丧!这个特定的问题对于其他Hugging Face数据集也很常见,这些数据集包含嵌入和元数据。因此,希望以轻量级、无代码的方式将这些数据加载到ClickHouse。

在23.10中,ClickHouse现在支持 npy 文件,使我们能够重新审视这个问题。

对于LAION数据集,文件以四位数字后缀编号,例如text_emb_0023.npy,metadata_0023.parquet,具有共同的后缀表示一个子集。对于每个子集,我们有3个文件:一个用于图像嵌入的 npy 文件,一个用于文本嵌入的文件,以及一个Parquet元数据文件。

SELECT array AS text_emb
FROM file('input/text_emb/text_emb_0000.npy')
LIMIT 1
FORMAT Vertical

Row 1:
──────
text_emb: [-0.0126877,0.0196686,..,0.0177155,0.00206757]

1 row in set. Elapsed: 0.001 sec.


SELECT *
FROM file('input/metadata/metadata_0000.parquet')
LIMIT 1
FORMAT Vertical
SETTINGS input_format_parquet_skip_columns_with_unsupported_types_in_schema_inference = 1

Row 1:
──────
image_path:    185120009
caption:       Color version PULP FICTION alternative poster art
NSFW:          UNLIKELY
similarity:    0.33966901898384094
LICENSE:       ?
url:           http://cdn.shopify.com/s/files/1/0282/0804/products/pulp_1024x1024.jpg?v=1474264437
key:           185120009
status:        success
width:         384
height:        512
original_width:  768
original_height: 1024
exif:          {"Image Orientation": "Horizontal (normal)", "Image XResolution": "100", "Image YResolution": "100", "Image ResolutionUnit": "Pixels/Inch", "Image YCbCrPositioning": "Centered", "Image ExifOffset": "102", "EXIF ExifVersion": "0210", "EXIF ComponentsConfiguration": "YCbCr", "EXIF FlashPixVersion": "0100", "EXIF ColorSpace": "Uncalibrated", "EXIF ExifImageWidth": "768", "EXIF ExifImageLength": "1024"}
md5:           46c4bbab739a2b71639fb5a3a4035b36

1 row in set. Elapsed: 0.167 sec.

ClickHouse文件读取和查询执行在性能上高度并行化。无序读取通常是必不可少的,以实现快速解析和读取。然而,为了连接这些数据集,我们需要确保所有文件按顺序读取,以便允许按行号连接。因此,我们需要使用max_threads=1。窗口函数 row_number() OVER () AS rn 为我们提供了一个行号,我们可以在其上连接我们的数据集。因此,我们的查询以替代自定义Python脚本的方式为:

INSERT INTO FUNCTION file('0000.parquet')
SELECT *
FROM
(
  SELECT
      row_number() OVER () AS rn,
      *
  FROM file('input/metadata/metadata_0000.parquet')
) AS metadata
INNER JOIN
(
  SELECT *
  FROM
  (
      SELECT
          row_number() OVER () AS rn,
          array AS text_emb
      FROM file('input/text_emb/text_emb_0000.npy')
  ) AS text_emb
  INNER JOIN
  (
      SELECT
          row_number() OVER () AS rn,
          array AS img_emd
      FROM file('input/img_emb/img_emb_0000.npy')
  ) AS img_emd USING (rn)
) AS emb USING (rn)
SETTINGS max_threads = 1, input_format_parquet_skip_columns_with_unsupported_types_in_schema_inference = 1

0 rows in set. Elapsed: 168.860 sec. Processed 2.82 million rows, 3.08 GB (16.68 thousand rows/s., 18.23 MB/s.)

在这里,我们将具有后缀 0000 的 npy 和parquet文件连接起来,并将结果输出到新的 0000.parquet 文件中。这个示例可以很容易地适应直接从Hugging Face读取文件。

关于性能的一个小注释。上述方法并没有比原始的Python实现方式(耗时227秒)快得多,并且在内存效率上也较低,因为前者是一次处理一个块的连接 - 在这方面,我们的Python脚本,在这个问题上受益于作为问题定制的自定义解决方案。我们还被迫使用了单个线程执行读取以保留行顺序。然而,这是通用的,对于大多数数据集来说已经足够用了。对于那些希望在多个文件之间并行处理过程的人,也可以应用一个相对简单的bash命令。

Meetup 活动报名

好消息:ClickHouse Shenzhen User Group第1届 Meetup 已经开放报名了,将于2024年1月6日在深圳市南山区海天二路33号 腾讯滨海大厦举行,扫码免费报名

图片

图片

​​​​联系我们

手机号:13910395701

邮箱:Tracy.Wang@clickhouse.com

满足您所有的在线分析列式数据库管理需求

Debian 10 安装 ClickHouse 实战指南:APT 官方源配置与生产级调优 ClickHouse 是面向 OLAP 场景的高性能列式数据库,其核心原理基于向量化执行引擎、MergeTree 表引擎与稀疏索引机制,技术价值在于亚秒级聚合查询与高吞吐写入能力,广泛应用于用户行为分析、实时日志统计和本地化实时数仓建设。在 Debian 10 这类长期支持(LTS)发行版上部署,需兼顾系统稳定性、APT 包管理安全性和二进制兼容性——尤其涉及 bullseye 源适配、GPG 密钥安全导入及 wsl --install 太慢 等典型工程约束。本文聚焦 Debian 10 环境下可审计、可复 阅读详情

相关推荐

CentOS 7 部署 ClickHouse 22.8 LTS 实战指南

ClickHouse 是一款面向 OLAP 场景的高性能列式数据库,其核心优势在于向量化执行引擎与极致压缩比带来的亚秒级分析能力。在企业级生产环境中,CentOS 7 因其长期稳定性与广泛兼容性仍被大量政企、金融及交通监控系统采用,但其较旧的 glibc 2.17、OpenSSL 1.0.2k 和 systemd 219 等组件常导致新版 ClickHouse 安装失败或运行异常。本文聚焦于官方兼容的 22.8.12.1 LTS 版本,详解如何在最小化 CentOS 7 环境中绕过依赖冲突、SELinux

weixin_33862993的博客 523

Clickhouse 日期时间 格式转换

中文 和秒的计量 英文缩写 英文全称 毫秒 0.001s ms millisecond 微妙 0.000 001s us microsecond 纳秒 0.000 000 001s ns nanosecond Clickhouse最多只支持到纳秒,多数情况下只需要计算到微妙级别的即可。 Clickhouse> select now() dt,now64(3) ms,now64(6) us,now64(9)...

vkingnew 的技术博客 5万+

ClickHouse安装部署全攻略:从环境准备到生产配置

在线分析处理(OLAP)是处理海量数据分析的核心技术范式,其核心原理在于通过列式存储、向量化执行等设计,优化数据读取与聚合计算效率,从而在数据仓库、实时报表等场景中实现亚秒级查询响应。这一技术价值在于能够大幅降低大数据分析的系统复杂性与查询延迟,尤其适用于用户行为分析、物联网监控等需要快速洞察的领域。本文聚焦于高性能OLAP数据库ClickHouse的实战部署,深入解析其安装前的硬件环境检查、版本选择策略,并对比包管理器、二进制包与Docker三种主流安装方式的优劣与具体操作步骤,帮助读者快速构建稳定可靠的

weixin_30239339的博客 375

ClickHouse 24.1 版本发布说明

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

ClickHouseDB的博客 2659

MLOps模型上线实战:从Notebook到生产环境的灰度发布与可观测性

机器学习模型服务化是将离线训练成果转化为稳定线上能力的关键环节,其核心在于跨越数据、模型与业务之间的工程鸿沟。不同于简单封装API,真正的模型上线需构建分层灰度机制、强契约化的服务接口(如Avro Schema)、以及以日志-指标-链路(L/M/T)为基石的可观测性体系。本文聚焦MLOps中‘模型部署’这一高风险阶段,深入解析影子模式、金丝雀发布、自动回滚等生产就绪实践,并融合数据漂移检测、特征生命周期管理、模型监控因果链等关键热词,覆盖金融风控、工业预测性维护、电商推荐等典型场景,为算法工程师、平台工程师

weixin_30443747的博客 448

Mythos推理架构:锚定链式推理与可验证闭环技术解析

大语言模型的推理能力正从概率连贯走向确定性验证。锚定链式推理(State Anchor Layer)通过密码学哈希固化中间结论,实现多步逻辑的不可篡改引用;闭环检测器(Closure Detector)则基于推理路径图(RPG)拓扑结构,强制保障‘前提→推导→结论’的全链路覆盖。这类技术显著提升输出的可审计性、可回溯性与归责能力,尤其适用于金融合规、医疗器械说明书验证、跨国法律条款比对等高可信度场景。Mythos所代表的‘Step Change’并非参数升级,而是将AI输出从‘能回答’推进到‘可证明’——其

weixin_30587927的博客 682

ClickHouse 23.12 版本发布说明

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

ClickHouseDB的博客 2130

多维聚合实战:从立方体建模到上下文感知聚合

多维聚合是现代数据分析的核心能力,本质是将数据组织为可切片、钻取、旋转的高维空间结构。其技术原理在于维度作为坐标轴定义数据位置,聚合运算需依赖查询上下文动态适配粒度与逻辑。关键价值在于支撑BI实时分析、用户行为下钻、风控指标动态加权等复杂场景,显著提升业务响应敏捷性与计算资源利用率。本文聚焦Data Manipulation in Multi-Dimensional Aggregation这一核心环节,深入解析Slice/Dice/Drill-down操作实现、上下文感知聚合函数开发及元数据驱动架构设计,覆

weixin_30568591的博客 347

ClickHouse 数据插入、更新与删除操作 SQL

ClickHouse是一个用于高性能分布式数据库管理系统的开源软件。它专注于处理大规模数据集,具有出色的查询性能和可靠的数据存储。在本文中,我们将重点介绍ClickHouse中的数据插入、更新和删除操作的SQL语法和示例代码。

牛肉胡辣汤 4159

GNU Radio系列教程(一):什么是GNU Radio?为什么我需要用GNU Radio?

目录 一、什么是软件无线电? 二、GNU Radio到底能做什么事情? 三、我如果不精通编程,还能用GNU Radio吗? 四、GNU Radio使用需要授权吗? 五、基于GNU Radio,人们已经做了取得了哪些成果? 六、数字信号处理、基带、时钟同步…这些名词是什么意思? 七、有用的链接和联系方式 GNU Radio是一个免费的开源软件工具包,该工具包提供了可用于软件无线电的信号处理模块。基于一些通用的射频前端设备,该工具包可以用来实现软件无线电系统。此外,该工具包也可以用于单纯...

无线通信实验室 1万+

PLUS模型土地利用变化模拟使用简介

因子包括自然因子如社会因子,通过计算整理得到新图层,并以tif文件输出到驱动因子的文件夹里,驱动因子文件夹里存放的是tif文件格式。线性回归使用提供的所有的LULC资源数据,可以选择往后预测的年数,选择好数据之后,可以得出预测的每一年的每一用地类型面积数据。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。

qq_42831270的博客 5806

ClickHouse 23.7 版本发布说明

31个新功能、16项性能优化、47项bug修复,本文描述了一小部分特别值得重点关注的新功能

ClickHouseDB的博客 943

TSmaster CANFD配置避坑指南:为什么你的PCAN盒不支持最新版本?

本文针对TSmaster配置PCAN硬件进行CANFD通信时的常见问题,提供了详细的避坑指南。重点解析了CANFD配置中TSEG1等关键参数的理解误区,并深入探讨了TSmaster新版本与PCAN硬件驱动之间的兼容性变化,帮助工程师快速定位并解决连接失败或无法发送CANFD报文等问题。

alpha的博客 541

ClickHouse 25.5 版本发布说明

ClickHouse 25.5 版本带来了 15 项新特性、23 项性能优化和 64 项缺陷修复。

ClickHouseDB的博客 1703

LDA模型参数优化实战:从auto设置到passes调优

本文深入探讨了LDA主题模型的参数优化实战,重点解析了如何通过设置alpha='auto'与eta='auto'让模型自适应语料,并详细阐述了passes参数对训练效果的核心影响。文章提供了系统的调优方法与评估策略,旨在帮助用户从“能用”到“用好”LDA,产出清晰、可解释的主题分析结果。

weixin_29163797的博客 118

C++ 小游戏程序 (共七款)

C++编程小游戏_闪耀的天狼星的博客-优快云博客_游戏c++C++跑酷小游戏_闪耀的天狼星的博客-优快云博客。好玩的c++编程小游戏,共六款。代码】C++跑酷小游戏。

小天狼星_布莱克 的博客 3万+

ClickHouse版本管理深度解析:架构演进与生产环境实战指南

ClickHouse版本管理是企业级实时分析数据库运维的核心技能,直接关系到生产环境的稳定性、数据安全性和系统性能。随着ClickHouse版本的快速迭代,如何制定科学的升级策略、规避兼容性风险、确保数据一致性,成为数据库管理员面临的关键挑战。ClickHouse版本升级不仅仅是软件包的替换,更是一次系统架构的优化过程,需要从底层存储引擎到上层查询优化的全方位考量。 ## 🔍 ClickHou

gitblog_00253的博客 612

SAP FAGLFLEXT 是 SAP 新总账的核心余额表,存储多维度的汇总余额数据。核心结论:该表按 “科目 + 会计年度 + 期间 + 维度” 存储累计余额,字段可分为基础标识

FAGLFLEXT是SAP新总账的核心余额表,采用"科目+年度+期间+维度"结构存储多维汇总数据。其字段分为基础标识(科目、年度等)、维度细分(公司代码、利润中心等15个维度)、金额数值(本外币余额)、辅助控制(状态标识)四大类,支持新总账的灵活核算。该表通过凭证自动更新,与旧总账GLT0相比显著扩展了维度核算能力,各维度需在科目主数据或Ledger配置中启用才能使用。

金牌架构师 454

执行flink sql连接clickhouse库

导入IDEA,maven编译即可,生成flink-connector-clickhouse-1.16.0-SNAPSHOT.jar。手把手教学,flink connector打通clickhouse大数据库,通过下发flink sql,来使用ck。flink官方不支持clickhouse连接器,工作中难免会用到。4.将此依赖包,导入flink工程。spring boot工程。

genghongsheng的博客 1541

【项目解析】2KW 230V 数字逆变器控制系统(二)

【项目解析】 2KW 230V 数字逆变器控制系统(一) 项目的 交流输出电压 并不是单纯一个电压环就能控制好的,而是典型的 双环控制架构:最终占空比控制量会经过计算: 然后写入 单片机 TMM 定时器的比较寄存器 (TMGRA0/TMGRD0/TMGRC1), → 定时器输出互补 PWM, → 驱动 IGBT 全桥, → 经过 LC 滤波形成 230 VAC / 50Hz 的正弦电压。总结交流电压是双环控制的结果:目标/作用:把输出 RMS 电压稳到目标(例如 230 VAC);在母线波动与负载变化下

Naiva的博客 1296

鸿宇多用户商城user.php RCE漏洞复现

鸿宇多用户商城 user.php 存在任意命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。

0xSec 1621

clickhouse集群部署

【代码】clickhouse集群部署。

weixin_46676071的博客 587

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ClickHouse可视化DBM(Incubator) Release 1.3.0-SNAPSHOT

UI 将徽标添加到菜单 用vue-codemirror替换代码编辑器 将发布时间表添加到索引 升级Vue默认版本(2.5.10->2.15.3+)和electron… 优化过程监控图的展示 Enhancement 支持构建数据源选择协议 优化软件图标(圆形) 支持查询历史分页 支持文本查询选择Issues-13 支持多查询结果显示 添加如何贡献文档 添加软件网站 增加顶部菜单重载应用快捷功能 支持全局编辑器通用配置 支持开发者模式应用图标显示 支持sql格式 查询历史支持复制SQL 替换调试

qianmoQ - 关注云计算,关注大数据 458

pscad IEEE标准系统搭建说明

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

终极DBeaver驱动包:一站式JDBC驱动解决方案,让数据库连接效率提升10倍 [特殊字符]

- 最新版本:兼容DBeaver 24.0.0 - 包含驱动:200+款JDBC驱动 - 支持数据库:30+种类型 - 更新频率:定期同步官方最新驱动 开始使用DBeaver驱动包,告别繁琐的驱动下载,专注于数据本身的价值挖掘! 💻

gitblog_00545的博客 384

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Langfuse开源AI工程平台:构建可观测性LLM应用的终极指南

Langfuse是一个开源LLM工程平台,专为团队协作开发、监控、评估和调试AI应用而设计。作为YC W23的优秀项目,Langfuse提供了完整的AI应用可观测性解决方案,支持OpenTelemetry、LangChain、OpenAI SDK、LiteLLM等主流框架的无缝集成。在当今AI应用开发全球化的浪潮中,Langfuse凭借其强大的多语言支持和国际化架构,成为构建全球化AI应用监控解决

gitblog_00579的博客 508

机器学习模型生产交付:从Notebook到高可靠服务的系统化实践

机器学习模型部署不是简单封装API,而是涵盖模型封装、特征服务、推理引擎、契约校验与可观测性的全栈工程实践。其核心在于解决环境漂移、隐式依赖、数据-模型耦合及故障定位滞后等现实问题。通过分层解耦架构(如Triton Serving+Feast Feature Store)、显式契约驱动(inference_spec.yaml)、可审计CI/CD流水线及模型专属监控体系,实现低延迟、高可用、可回滚的线上服务。本文聚焦真实产线中验证有效的交付方法论,覆盖Artifact标准化打包、灰度发布策略、PSI漂移检测、

weixin_30475039的博客 395
上一篇: 详解最小化 Kafka 到 ClickHouse 延迟的原理和方法
下一篇: 解绑传统云数据仓库
ClickHouseDB
博客等级 码龄3年 1707粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值