首页 > 数据库 >腾讯云的TDSQL-H LibraDB,底层是Clickhouse

腾讯云的TDSQL-H LibraDB,底层是Clickhouse

时间:2024-10-23 14:42:21浏览次数:1  
标签:default TDSQL sum cluster LibraDB test table id Clickhouse

一. java版本引用方式通过jdbc

可参考腾讯文档https://cloud.tencent.com/document/product/1488/79810

<dependency>
   <groupId>ru.yandex.clickhouse</groupId>
   <artifactId>clickhouse-jdbc</artifactId>
   <version>0.3.2</version>
</dependency>
驱动:
Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
url:
connectionStr:格式为 jdbc:clickhouse://" + url + ":8123。其中,url 为前提条件获取的 JDBC 连接 TDSQL-H LibraDB 实例时的主机地址。

二. 两种建表方式

第一种: 通过配置CDC,将源数据库(如 mysql,mysql-c)数据同步到引擎库

可设置忽略同步(如DDL中的delete Drop等),同步类型为表结构 + 全量数据 + 增量数据,默认建立副本引擎表(ReplicatedMergeTree),本地表(on cluster)和分布表(基于本地表)

     String createTableDDL = "create table test_table_local on cluster default_cluster " +
                        "(id UInt32, " +
                        "dt_str String, " +
                        "dt_col DateTime) " +
                        "engine=ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}')" +
                        "partition by toYYYYMM(dt_col)" +
                        "order by (id)" +
                        "primary key (id)" +
                        "sample by (id)" +
                        "settings index_granularity = 8192;";
                stmt.execute(createTableDDL);
                System.out.println("create local table done.");
            }
            {
                String createTableDDL = "create table test_table on cluster default_cluster " +
                        "as default.test_table_local " +
                        "engine=Distributed(default_cluster, default, test_table_local, rand());";
                stmt.execute(createTableDDL);
                System.out.println("create distributed table done");

第二种: 可手动建立各种引擎库和引擎表

其中 轻量级删除只针对MVCC的CDC同步的表,手动建的表加上增加 allow_fast_delete_column = 1 参数也不行

参考 https://cloud.tencent.com/document/product/1488/77418

三.基本的语法 (https://clickhouse.com/docs/zh)

1. Clickhouse 不支持常规的 update/delete/replace into等

2. alter delete 删除副本引擎表式,需删本地表并且指定集群 on cluster  cluster_name

3. Clickhouse 不支持事务(如 @Transactional)

4. 一行转多列的group by ,如  arrayJoin(splitByString (',', `dept_ids`)) as deptId             group by deptId

5.JSON 语法,可参考文档,最基本的取key, visitParamExtractInt 替换 json_extract

6. 内嵌sql问题,select的字段不能参入到计算公式中

错误的sql:

select
c
sum(a) as a
case when sum(b) = 0 then 0 else sum(a) / sum(b) as ab
from (
 select
  c,d
  sum(a) as a,
  sum(b) as b
from table
group by c,d
) a
group by c

正确的sql:

select
c
sum(a_temp) as a
case when sum(b_temp) = 0 then 0 else sum(a_temp / sum(b_temp) end as ab
from (
 select
  c,d
  sum(a) as a_temp,
  sum(b) as b_temp
from table
group by c,d
) a
group by c

7. formatDateTime(dateTime, '%H:%M'), '%H:%M'这里需要时常量,不能是case when 这类判断

8. 一个很有疑问的查询,如按照时间分区的副本表,按照下面两种方式查询,结果就完全不一样

本来只是想按照查询起始时间来给一列动态赋值,结果赋值列别名用的表中的时间字段,并且字段还在查询条件中,导致查询出来的数据已经错乱,where条件中的dateTime,

和前面嵌套查询一样,需要规范处理

 

 

 四.常用的Clickhouse语法

查delete等操作执行情况
SELECT
database,
table,
mutation_id,
command,
create_time,
is_done
FROM system.mutations
where database = 'test'
and table = 'test'
;
杀掉delete某个进程
KILL MUTATION WHERE database = 'test' ASYNC;

查看表情况
SELECT
*
FROM system.parts
WHERE table = 'test';
查看正在执行的sql
SELECT
    query_id,
    user,
    address,
    query
FROM system.processes
ORDER BY query_id ASC

create DATABASE report ON CLUSTER default_cluster;

DROP DATABASE report ON CLUSTER default_cluster  SYNC;


ALTER TABLE test ON CLUSTER default_cluster DELETE WHERE data_time >= '2024-10-01 15:30:00'
and data_time < '2024-10-01 16:00:00'
;

OPTIMIZE TABLE test;

 

标签:default,TDSQL,sum,cluster,LibraDB,test,table,id,Clickhouse
From: https://www.cnblogs.com/long-yuan/p/18496353

相关文章

  • TB 级数据入库无压力:Apache DolphinScheduler 助力 ClickHouse 优化
    引言......
  • Clickhouse 23.8.9.54 部署安装
    Clickhouse23.8.9.54部署安装ClickHouse是一个开源的列式数据库管理系统(DBMS),专为高性能的在线分析处理(OLAP)而设计。它由Yandex于2016年开源,专门应对需要处理大量数据并进行快速分析查询的场景。ClickHouse最显著的特性是其列式存储架构,使得它在处理大数据集时,具有......
  • Clickhouse原理解析
    Clickhouse的标签#OLAP#列式存储行式数据库和列式数据库适用于不同的业务场景:如何查询多久查一次各类查询的比例各类查询要求的延迟和吞吐量每种查询读取多少数据读和写的关系,比例数据集的大小如何使用本地数据集是否用事务数据复制和完整性的要求OLAPOLAP的特点......
  • clickhouse 备份
    此命令是在clickhouse22.7.5版本下执行:官方文档见:https://clickhouse.com/docs/en/operations/backup#command-summary参考文档: https://blog.csdn.net/lusklusklusk/article/details/139781360创建备份目录mkdir/backups/修改权限:chmod766/backups/logsudochown-Rc......
  • ClickHouse 的 Mutations
    mutationsALTER查询是通过一种称为"mutations"的机制实现的,其中最常见的是ALTERTABLE...DELETE和ALTERTABLE...UPDATE。它们是在后台异步进行的,类似于MergeTree表中的合并。 对于*MergeTree表,mutations是通过重写所有的part来执行的。mutations不具有原子......
  • 深入解析ClickHouse:优势、架构、数据组织与应用场景
    引言在大数据时代,随着数据量的不断增长,越来越多的企业需要高效的数据分析工具来支持实时决策。ClickHouse作为一款高性能的列式数据库,因其在实时分析处理方面的卓越表现,逐渐在数据仓库领域脱颖而出。本篇博客将对ClickHouse进行深入解析,全面介绍其优势、数据架构、数据组织方......
  • ClickHouse 数据保护指南:从备份到迁移的全流程攻略
    一、背景运行3年的clickhouse需要迁移机房,迁移单库单表的140亿条的数据。采用clickhouse-backup的方式进行备份迁移,打包备份,再加上数据拷贝,数据恢复一共花费30分钟。数据在一定量级,避免使用SQL导入导出的方式,效率太低二、clickhouse-backup工具介绍clickhouse-back......
  • 大数据新视界 --大数据大厂之 ClickHouse:大数据分析领域的璀璨明星
           ......
  • 【ClickHouse 表引擎&SQL操作&副本&分片集群 02】
    一、表引擎表引擎决定了如何存储表的数据。类似mysql的引擎InnoDB,MyISAM数据的存储方式和位置,写到哪里以及从哪里读取数据一般的引擎都存储在本地的磁盘,clickhouse存储的位置在:/var/lib/clickhouse -->其中data存储数据,metadata存储建表语句支持那些查询以及如何支持并......
  • ClickHouse性能调优 - 当磁盘IO是瓶颈的时候
    引言ClickHouse的性能调优问题是一个大的话题。虽然ClickHouse以其高速的数据处理能力而闻名,但在实际使用中,磁盘IO常常成为影响系统性能的瓶颈。本文将探讨在磁盘IO成为瓶颈时,如何通过一系列优化措施来提升ClickHouse的整体性能。磁盘IO瓶颈磁盘IO瓶颈指的是在数据读写过程中,磁......