clickHouse-golang
clickHouse优势与劣势
ClickHouse和传统的MySQL在设计和使用场景上有一些显著的区别,因此它们各自具有不同的优势和劣势。
ClickHouse的优势:
分布式架构:ClickHouse是为大数据分析而设计的分布式列存储数据库,可以方便地处理海量数据并支持高并发查询。
高性能:ClickHouse在数据分析场景下具有出色的查询性能,特别是针对聚合查询和大规模数据集的查询。
列存储:ClickHouse采用列存储结构,适合于大规模数据的聚合查询,能够显著减少I/O操作,提高查询速度。
优化查询引擎:ClickHouse针对大规模数据分析场景进行了优化,支持高效的数据压缩和并行查询。
灵活的水平扩展:ClickHouse易于水平扩展,可以通过添加更多的节点来增加存储容量和查询吞吐量。
ClickHouse的劣势:
不适合OLTP场景:相对于传统的关系型数据库(如MySQL),ClickHouse不适合用于需要频繁更新和事务处理的OLTP场景。
复杂性:ClickHouse的配置和管理相对复杂,特别是对于初学者来说,可能需要花费一些时间来学习和理解其工作原理和最佳实践。
功能较为专一:ClickHouse更专注于大规模数据的分析查询,对于其他类型的数据库操作(如事务处理)支持较弱。
golang操作clickHouse
package main
import (
"database/sql"
"fmt"
_ "github.com/ClickHouse/clickhouse-go"
)
var connect *sql.DB
func initDb() {
conn, err := sql.Open("clickhouse", "tcp://localhost:9000?username=root&password=123456&database=default&block_size=4096")
if err != nil {
fmt.Println("连接失败:", err)
return
}
connect = conn
}
func createTable() {
_, err := connect.Exec("CREATE TABLE bike (id Int32, value String) ENGINE = Memory")
if err != nil {
fmt.Println("创建表失败:", err)
return
}
}
func Insert() {
tx, err := connect.Begin()
if err != nil {
fmt.Println("开启事务失败:", err)
return
}
stmt, err := tx.Prepare("INSERT INTO bike (id, value) VALUES (?, ?)")
if err != nil {
fmt.Println("准备插入语句失败:", err)
return
}
_, err = stmt.Exec(1, "特斯拉")
if err != nil {
fmt.Println("插入数据失败:", err)
return
}
_, err = stmt.Exec(2, "小米汽车")
if err != nil {
fmt.Println("插入数据失败:", err)
return
}
err = tx.Commit()
if err != nil {
fmt.Println("提交事务失败:", err)
return
}
}
func QuerySelect() {
rows, err := connect.Query("SELECT id,value FROM bike")
if err != nil {
fmt.Println("查询数据失败:", err)
return
}
defer rows.Close()
type Bike struct {
Id int `json:"id"`
Value string `json:"value"`
}
for rows.Next() {
u := Bike{}
err = rows.Scan(&u.Id, &u.Value)
if err != nil {
fmt.Println("扫描结果失败:", err)
return
}
fmt.Println(u)
}
}
func main() {
initDb()
//createTable()
//Insert()
QuerySelect()
}
clickHouse-golang的更多相关文章
- golang sql database drivers
https://github.com/golang/go/wiki/SQLDrivers SQL database drivers The database/sql and database/sql/ ...
- Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目
Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open- ...
- 记一次golang的内存泄露
程序功能 此程序的主要功能是将文件中数据导入到clickhouse数据库中. [问题描述] 服务器内存每隔一段时间会耗尽 [问题分析] 由于使用的是go语言开发的,所以采用了业界流行的工具pprof. ...
- 用golang开发系统软件的一些细节
用golang开发系统软件的一些细节 作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 (本文的pdf版本) ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- 说说Golang的使用心得
13年上半年接触了Golang,对Golang十分喜爱.现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的.一直 ...
- TODO:Golang指针使用注意事项
TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...
- Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩
目录: 前序 效果图 简介 全部代码 前序: 接触 golang 不久,一直是边学边做,边总结,深深感到这门语言的魅力,等下要跟大家分享是最近项目 服务端 用到的图片压缩程序,我单独分离了出来,做成了 ...
- golang struct扩展函数参数命名警告
今天在使用VSCode编写golang代码时,定义一个struct,扩展几个方法,如下: package storage import ( "fmt" "github.c ...
- golang语言构造函数
1.构造函数定义 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数 ,可根据其参数个 ...
随机推荐
- Linux 概念:grub2
GRUB 2是许多发行版的缺省efi模式引导加载程序. grub2 与 grub 的区别 官方手册:https://www.gnu.org/software/grub/manual/grub/html ...
- CF1855B Longest Divisors Interval 题解
题意: 给定一个数 \(n\),求一个连续区间 \([l,r]\) 使得 \(n\) 是区间内每个数的倍数,最大化这个区间的长度(多组数据). 思路: 逆向思考一波,( 如果一个数 \(x\) 不是 ...
- rpm安装21c单实例数据库
linux 7.6 使用rpm安装21c单实例数据库 一.基础环境配置 1.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld s ...
- 手写 Vuex4 源码
本文首发于掘金,未经许可禁止转载 Vuex4 是 Vue 的状态管理工具,Vuex 和单纯的全局对象有以下两点不同: Vuex 的状态存储是响应式的 不能直接改变 store 中的状态.改变 stor ...
- 知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装
知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装 知识图谱(Knowledge Graph)- Neo4j 5.10.0 CentOS 安装 https:// ...
- python flask 简单应用开发
转载请注明出处: Flask 是一个基于 Python 的微型 Web 框架,它提供了一组简洁而强大的工具和库,用于构建 Web 应用程序.Flask 的主要作用是帮助开发者快速搭建轻量级的.灵活的 ...
- Badusb制作,远程别人电脑
Badusb制作 插一下U盘黑一台电脑,插了我的U盘你可就是我的脑了,(▽) 理论准备 我们要用它就应该知道他的工作原理是怎么样的,方便我们去发散思维去使用它. Badusb的原理是利用HID(Hum ...
- 《SQL与数据库基础》06. 函数
目录 函数 字符串函数 数值函数 日期函数 流程函数 本文以 MySQL 为例 函数 函数是指一段可以直接被另一段程序调用的程序或代码. 要查看函数操作的结果,可以使用 SELECT 函数(参数); ...
- js调起android安卓与ios苹果方法 vue3.0 + ts
let shareSelect = (ev :any) => { const u :any= navigator.userAgent; const win :any = window const ...
- Elasticsearch之索引简单应用
本篇所有操作都在 Kibana 上执行 创建第一个索引 PUT product { // 索引设置 "settings": { // 分片数量 "number_of_sh ...