Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Rust 管理clickhouse之Migration

Rust 管理clickhouse之Migration

原创
作者头像
Gilmore0000001
发布于 2024-04-10 12:59:39
发布于 2024-04-10 12:59:39
1650
举报

一、Sql文件规范

  1. 按照官方文件命名必须以'V__'开头
  2. 从V1开始编号V2,V3,.....
  3. 文件只增不减

命名必须'V__'
命名必须'V__'

二、Migration代码示例

代码语言:rust
AI代码解释
复制
use klickhouse::*;

mod embedded {
    use refinery::embed_migrations;
    // 指定sql文件路径
    embed_migrations!("./src/sql_migrations/");
}

#[tokio::main]
async fn main() -> Result<()> {
    // 建立与 Klickhouse 的连接
    let mut client = Client::connect("172.xx.xxx.xx:9000", ClientOptions{
        default_database: "default".to_string(),
        username: "default".to_string(),
        password: String::new(),
    }).await?;
    
    // 运行嵌入的数据库迁移
    embedded::migrations::runner().run_async(&mut client).await.unwrap(); 

    Ok(())
}

代码语言:context
AI代码解释
复制
[dependencies]
chrono = "0.4.34"
futures = "0.3.30"
# klickhouse = "0.11.0"
klickhouse = { version = "0.12.0", features = ["refinery"] }
rand = "0.8.4"
tokio = { version = "1.26.0", default-features = false, features = ["full"] }
uuid = "1.7.0"
refinery = { version = "0.8"}
rusqlite = "0.31.0"

三、元数据表

元数据表:refinery_schema_history
元数据表:refinery_schema_history

特别注意

每个库都会生成一张refinery_schema_history元数据表,所以建议各个业务方以自己project名建库名,示例如下

代码语言:context
AI代码解释
复制
Project:bigdata
database:bigdata
元数据表:bigdata.refinery_schema_history
元数据表所在节点:172.xx.xxx.xx

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Rust每周一库】hyper - 底层http库
现在说到写应用,网络框架肯定是必不可少的。今天就给大家简单介绍一下hyper。hyper是一个偏底层的http库,支持HTTP/1和HTTP/2,支持异步Rust,并且同时提供了服务端和客户端的API支持。很多同学可能觉得既然hyper是个偏底层的框架,那是不是就不需要去了解了呢?首先很多上层的框架,比如rocket、iron和reqwest底层都是基于hyper的。(关于Rust中各种网络开发框架,这里有个很全面的综述和比较。)所以如果在使用这些框架的时候遇到了一些问题,对hyper的了解肯定是有一定的帮助的。再者学习Rust的我们都是奔着成为大佬的路线去的,很难说不会有直接操作偏底层框架的需求。
MikeLoveRust
2020/02/12
3.2K0
Rust 中的 QUIC 实现 --- quinn
QUIC 是基于 UDP 的多路复用、安全传输协议。可以简单理解为在用户空间将 TCP 里的机制实现了一遍,比如拥塞控制、流量控制等。好处是升级比较方便,TCP 协议栈是内核中实现的,只能随内核升级,而 QUIC 可灵活升级。
谛听
2022/01/30
4.2K0
介绍一款还不错的Rust ClickHouse客户端
用过 Rust 的应该都知道,tokio 是异步编程的基石,很多框架都是基于 tokio 之上构建的。目前一些 ClickHouse 的客户端代码比较陈旧,使用的 tokio 版本很低 (0.x)。
Nauu
2021/08/25
2.1K0
构建基于 Rust 技术栈的 GraphQL 服务(2)- 查询服务第二部分
上一篇文章《构建基于 Rust 技术栈的 GraphQL 服务(2)- 查询服务第一部分》中,介绍了构建 GraphQL Schema、整合 Tide 和 async-graphql,以及验证 query 服务。
niqin.com
2022/06/30
8880
构建基于 Rust 技术栈的 GraphQL 服务(2)- 查询服务第二部分
基于 actix、async-graphql、rbatis 构建异步 Rust GraphQL 服务(3)- 重构
首先,我们通过 shell 命令 cd ./actix-web-async-graphql-rbatis/backend 进入后端工程目录(下文中,将默认在此目录执行操作)。
niqin.com
2022/06/30
1.4K0
基于 actix、async-graphql、rbatis 构建异步 Rust GraphQL 服务(3)- 重构
Rust的第二次接触-写个小服务器程序
蛮久前入门了一下 Rust 语言。它的设计模型非常地吸引C/C++的开发者。但是学习语言嘛还是要练习一下,之前也用它给我们项目写了个命令行小工具。这回拿来写个小型的服务器程序吧。
owent
2018/10/09
4.2K2
Next.js + Rust 革新全栈开发,Rust没那么难
最近,shuttle 发布了新的 Node.js CLI 包,允许用户快速引导由 Next.js 前端加 Axum 后端(一种流行的 Rust Web 框架,以易于上手、语法简单著称)开发的应用程序。
深度学习与Python
2023/08/10
9170
Next.js + Rust 革新全栈开发,Rust没那么难
构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(3)- 重构
行文开始,先感谢几位指导的老师。相关标题和内容都已经在博客站点修改,微信公众号中就不重复推送了。
niqin.com
2022/06/30
1K0
构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(3)- 重构
大数据ClickHouse进阶(二十六):ClickHouse数据备份
在ClickHouse中存在副本,主要作用是保证数据的高可用,副本不能防止数据误删这类操作,ClickHouse提供了多种数据备份的方法来防止数据误删。
Lansonli
2022/11/17
2.6K0
大数据ClickHouse进阶(二十六):ClickHouse数据备份
【译】如何提升 Rust 代码性能
性能是开发者为其应用程序选择 Rust 的首要原因之一。事实上,它是 rust-lang.org 主页上 ["为什么选择Rust?"](https://www.rust-lang.org/#:~:text=Version%201.55.0-,Why%20Rust%3F,-Performance ""为什么选择Rust?"")一节中列出的第一个原因,甚至在内存安全之前。这也是有原因的,许多基准测试表明,用Rust编写的软件速度很快,有时甚至是最快[2]的。但这并不意味着所有用Rust编写的软件都能保证快速。事实上,写低性能的Rust代码是很容易的,特别是当试图通过Clone 或Arc替代借用来""安抚""借用检查器时,这种策略通常被推荐给 Rust 新手。这就是为什么对 Rust 代码进行剖析和基准测试是很重要的,可以看到任何瓶颈在哪里,并修复它们,就像在其他语言中那样。在这篇文章中,我将根据最近的工作经验,展示一些基本的工具和技术,以提高 mongodb crate 的性能。
张汉东
2021/10/27
2K0
Rust:axum学习笔记(7) websocket
核心就是handle_socket这个function,这里我们只是简单的将收到的内容,原封不动的发回浏览器。
菩提树下的杨过
2022/04/27
2.2K1
Rust:axum学习笔记(7) websocket
【Rust日报】2023-06-20 使用Quickwit、Jaeger和Grafana监控您的Rust应用程序
使用Quickwit、Jaeger和Grafana监控您的Rust应用程序 你可能已经看过了Lucas Palmieri的博客文章Are we observable yet? An introduct
MikeLoveRust
2023/09/26
8400
【Rust日报】2023-06-20 使用Quickwit、Jaeger和Grafana监控您的Rust应用程序
基于 actix、async-graphql、rbatis、pgsql/mysql 构建 GraphQL 服务(4)-变更服务
前 3 篇文章中,我们初始化搭建了工程结构,选择了必须的 crate,并成功构建了 GraphQL 查询服务,以及对代码进行了第一次重构。本篇文章,是我们进行 GraphQL 服务后端开发的最后一篇:变更服务。本篇文章之后,GraphQL 服务后端开发第一阶段告一阶段,之后我们进行 基于 Rust 的 Web 前端开发。本系列文章中,采用螺旋式思路,Web 前端基础开发之后,再回头进行 GraphQL 后端开发的改进。
niqin.com
2022/06/30
1.3K0
基于 actix、async-graphql、rbatis、pgsql/mysql 构建 GraphQL 服务(4)-变更服务
【Rust日报】2022-04-24 redb:嵌入式DB
一个简单、便携、高性能、ACID、嵌入式的 Key-Value 存储工具。使用纯 Rust 编写,受 Imdb 启发,更多细节可阅读下面的设计文档。
MikeLoveRust
2022/06/10
7560
【Rust日报】2023-06-14 prometheus 官方 rust_client 使用示例
promethes 是我们常用的监控系统之一,下面是一个使用 rust_client 的🌰:
MikeLoveRust
2023/09/26
3730
【Rust日报】2023-06-14 prometheus 官方 rust_client 使用示例
Rust使用gRPC
需要先安装protoc(Protocol Buffers Compiler),可据此Protobuf Compiler Installation[1]下载
fliter
2024/01/09
2760
Rust使用gRPC
时序数据库Influx-IOx源码学习六-1(数据写入之分区)
上一章说到如何创建一个数据库,并且数据库的描述信息是如何保存的。详情见:https://my.oschina.net/u/3374539/blog/5025128
刘涛华
2021/04/26
4800
Rust从零实现一个命令行端口扫描工具
按照惯例,还是和之前实现的文本编辑器一样,我给这个工具起名为X-SCAN,它的功能很简单,通过命令行参数的方式对指定IP进行扫描,扫描结束之后返回该IP地址中处于开放状态的端口号,学完本文,你将自己实现一个如下效果的端口扫描工具(截图以CSDN平台的IP地址的扫描结果为例)
堆栈哲学
2024/06/07
2380
Rust从零实现一个命令行端口扫描工具
构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(4)- 变更服务
在构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(3)- 第一次重构之后,因这段时间事情较多,所以一直未着手变更服务的开发示例。现在私事稍稍告一阶段,让我们一起进行变更服务的开发,以及第二次重构。
niqin.com
2022/09/01
1.6K0
构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(4)- 变更服务
「Go开源」goose:深入学习数据库版本管理工具
goose是一个用go语言编写的数据库版本管理的命令行工具。其github地址如下:https://github.com/pressly/goose
Go学堂
2023/10/25
7990
「Go开源」goose:深入学习数据库版本管理工具
推荐阅读
相关推荐
【Rust每周一库】hyper - 底层http库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档