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运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数 ,可根据其参数个 ...
随机推荐
- TypeScript:接口
介绍 TypeScript的核心原则之一是对值所有的结构类型进行类型检查.在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义约束. 接口的基本使用 interface ...
- windows传输文件到linux
PFSTP 打开该软件,在安装putty自带的 连接服务器 open 192.168.142.131 按提示输入账户密码 传送文件 put C:\Users\13662\nifi-1.13.2-bin ...
- #Powerbi 1分钟学会,设置有密码保护的powerbi报告
目前,有一些朋友和笔者一样,公司暂时没有部署powerbi服务器,但是有时也需要使用powerbi共享一些看板. 如果直接将制作好的报告直接发布在公网上,又存在一定的风险,即便可能只是公布1天. 那么 ...
- c++算法之离散化
什么是离散化? 离散化,故离散数学,其中的"离散"就是不连续的意思.离散化可以保持原数值之间相对大小关系不变的情况下将其映射成正整数. 也就是给可能用到的数值按大小关系分配一个编号 ...
- 【NestJS系列】核心概念:Middleware中间件
前言 用过express与koa的同学,对中间件这个概念应该非常熟悉了,中间件可以拿到Request.Response对象和next函数. 一般来讲中间件有以下作用: 执行任何代码 对请求与响应拦截并 ...
- 《SQL与数据库基础》01. SQL概述 · 分类
目录 SQL概述 SQL语法特征 SQL分类 本文以 MySQL 为例 SQL概述 SQL(Structured Query Language),结构化查询语言,用于访问和处理数据库的标准的计算机语言 ...
- 《小白WEB安全入门》02. 开发篇
@ 目录 初识HTML潜在漏洞 初识CSS潜在漏洞 初识JS潜在漏洞 初识后端潜在漏洞 后端能做什么 后端种类 后端框架 潜在漏洞 本系列文章只叙述一些超级基础理论知识,极少有实践部分 本文涉及到的语 ...
- python 面试题第一弹
1. 如何理解Python中的深浅拷贝 浅拷贝(Shallow Copy)创建一个新的对象,该对象的内容是原始对象的引用.这意味着新对象与原始对象共享相同的内存地址,因此对于可变对象来说,如果修改了其 ...
- Java爬虫实战系列——常用的Java网络爬虫库
常用的Java网络爬虫库 Java 开发语言是业界使用最广泛的开发语言之一,在互联网从业者中具有广泛的使用者,Java 网络爬虫可以帮助 Java 开发人员以快速.简单但广泛的方式为各种目的抓取数据. ...
- role
角色权限管理改造方案 # 为什么需要角色 现有的权限方案 .net后台权限管理 在后台类中配置,权限 = 一级菜单:二级菜单:三级菜单: 通过在view模板中判断是否有权限显示菜单 后端通过权限配 ...