ClickHouse是个由老毛子国内市场使用率第一的搜索引擎Yandex开源的OLAP型列式数据库。
背景
之前因为业务接触到ClickHouse,但因为没有系统的了解过导致遇见个很小的问题、花了大量的时间、用了很挫的方式来解决问题,痛定思痛的情况下决心系统的逐步学习一下。ClickHouse无论是存储还是使用方式都不同程度的异于我们常用的Mysql,PostgreSql,Mssql等行式数据库,但它支持绝大部分的SQL语法。
ClickHouse是个由老毛子国内市场使用率第一的搜索引擎Yandex开源的OLAP型列式数据库。
之前因为业务接触到ClickHouse,但因为没有系统的了解过导致遇见个很小的问题、花了大量的时间、用了很挫的方式来解决问题,痛定思痛的情况下决心系统的逐步学习一下。ClickHouse无论是存储还是使用方式都不同程度的异于我们常用的Mysql,PostgreSql,Mssql等行式数据库,但它支持绝大部分的SQL语法。
ClickHouse是个由老毛子国内市场使用率第一的搜索引擎Yandex开源的OLAP型列式数据库。
最近,数据分析项目要做一个广告素材推广成效分析功能。需求评审下来大概是通过给广告素材打标签进行分类,然后按标签纬度进行分析数据。
该项目之前的数据是存放在Elasticsearch,但总是感觉ES的DSL语句过于繁琐不利于阅读且学习成本较高,内部针对该问题讨论之后选用了在大数据处理上同样出色的ClickHouse作为新功能的数据仓库(试点功能233)。
因为是列式数据库,所以不需要遵守数据库三大范式。
之前因为需要并发同步单张数据表的脚本,因为设置协程数量太多连接数过高导致服务宕机 … 得不偿失,所以想怎么控制一下协程数量
利用channel阻塞,上代码:
最近接触一个项目,需要每天定时把PgSql一张数据量超大的数据表同步到ClickHouse 思考这种场景下怎么提高同步速度。
思路
按照主键排序分区间查询
在程序中除了迭代器还有生成器均是可迭代对象,迭代器是通过移动游标来遍历数据,那生成器呢
生成器创建方式(python)
1 | generator = (i for i in [1, 2, 3]) // 这里有区别于 [i for i in [1, 2, 3]] |
游标(cursor)是可以从数据库检索结果集中每次提取一行记录的机制,游标的作用就是对结果集进行遍历,方便对记录进行操作。
三种特性:
不能更新它
根据SQL语句确定顺序,不能向后获取记录和跳过记录
敏感游标指向的是数据表,不敏感游标指向的则是临时数据表。(Mysql使用的是敏感游标)
游标使用的变量必须在声明游标之前声明
项目中某个定时任务执行过程中出现死锁问题,具体错误如下:
1 | Error 1213: Deadlock found when trying to get lock; try restarting transaction |
检查一下表引擎 & 事务隔离级别
1 | mysql> show variables like '%storage_engine%'; |
之前项目数据表有分表设计,现在因为业务量增长数据表数据量膨胀数倍导致单表性能不理想 … 所以希望在不影响用户使用的情况下扩展数据表(迁移)
基本分为热迁移和冷迁移两种方式
通俗的来说就是停机迁移,比如某些游戏合服维护等
优点: 操作可靠性高、数据一致性有保证、数据回滚方便
缺点: 用户体验差
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true