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运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数 ,可根据其参数个 ...
随机推荐
- vue项目node_modules文件过大问题
node_modules目录下.cache下最大文件删除即可(vue-loader)
- js 关于 replace 取值、替换第几个匹配项(两种方式:正则、普通字符串操作)
〇.前言 在日常开发中,经常遇到针对字符串的替换.截取,知识点比较碎容易混淆,特此总结一下,仅供参考. 一.替换第一个匹配项 字符串替换 let strtest = "0123测试repla ...
- redis数据持久化之RDB和AOF
前言 redis虽然是内存缓存程序,但是可以将内存中的数据保存到硬盘上,从而实现数据保存.目前有两种redis数据持久化方式,分别是RDB和AOF. RDB模式 RDB之简介 RDB(redis da ...
- quarkus依赖注入之十:学习和改变bean懒加载规则
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<quarkus依赖注入> ...
- ModuleNotFoundError: No module named 'requests' 解决办法
问题记录:运行python程序时,出现报错:ModuleNotFoundError: No module named 'requests' 问题原因:没有安装requests库 解决办法:安装requ ...
- Geotools实现shape文件的写入
众所周知Geotools作为开源的Java GIS三方库,已经成为GIS服务器端的主流开源库,其功能非常强大,涉及到GIS业务的方方面面,其中就包括GIS数据的读写,今天小编就借助Geotools来实 ...
- [Lua][Love] "图块集与地图" 加载显示功能 TileMap
效果 安装库 安装两个库,分别用来读xml和csv,如果有luarocks,执行下列命令 luarocks install xml2lua luarocks install ftcsv manoelc ...
- 如何利用AI智能聊天机器人10秒钟做出一个故事绘本的神奇插件
原文链接:如何利用AI智能聊天机器人10秒钟做出一个故事绘本的神奇插件 ChatGPT以下称为AI智能聊天机器人 一.AI智能聊天机器人4中集成"Stories"插件 对于已经熟悉 ...
- [超详细]SpringBoot整合WebSocket
1. 什么是WebSocket? WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它允许在浏览器和服务器之间进行实时的.双向的通信.相对于传统的基于请求和响应的 HTTP 协议, ...
- Set Concept
集合(Set)就是一种用来装事物的容器(或者称为结构),它所装的东西叫元素.集合这个容器的逻辑性很强,可以说是现在比较严谨的工具. 集合里的元素,它们可以是任何类型的数学对象:数字.符号.变量.空间中 ...