![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 60
Lens5935
这个作者很懒,什么都没留下…
展开
-
SQL生成整年日期表(全)
背景:折线图生成全年时间数据。原创 2022-09-29 18:04:13 · 3256 阅读 · 5 评论 -
数据库“写时模式”与“读时模式”对比
schema on write与schema on readschema on write(写时模式)作用于数据源到数据汇聚存储之间,典型使用就是传统数据库。数据不管是在入库还是采用装载外部数据或者将一个查询的输出结果写入数据库或者是使用UPDATE语句,数据库存储对于在数据写入数据库时都需要对schema进行检查控制。因此写时模式需要预先设置schema。schema on read(读时模式)作用于数据汇聚存储到数据查询分析之间,数据先存储,然后在需要查询分析...原创 2022-03-19 17:12:10 · 4325 阅读 · 0 评论 -
MySQL登录出现ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
出现错误详情:解决办法:# 第一步:找到mysql的安装目录,我的默认在/usr/local/mysql (不用去bin目录下)# 第二步:执行 sudo ./support-files/mysql.server start# 第三步:启动MySQL[root@hadoop2 mysql]# mysql -u root -p大功告成!...原创 2021-08-31 22:53:43 · 254 阅读 · 0 评论 -
Canal原理介绍及安装详解
Canal简介概述:canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。背景:早期的数据库同步业务,主要是基于trigger的方式获取增量变更。从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。基于日志增量订阅&消费支持的业务:数据库镜像 数据库实时备份原创 2021-07-01 14:19:19 · 590 阅读 · 0 评论 -
Crontab定时任务弊端
Crontab定时任务弊端:各个任务之间的依赖基于执行时间实现,容易造成前面的任务未结束或失败而后面的任务已经运行; 任务难以并发执行,增加了整体的处理时间; 无法设置任务优先级; 任务的管理维护不方便,无法进行执行效果的分析。...原创 2021-05-21 11:55:33 · 591 阅读 · 0 评论 -
MySQL中利用help_topic实现行转列
行列转换常见场景由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式。即同一个列中存储了多个属性值(具体结构见下表)。 这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果。源表数据:期望得到目标结果:思路分析:这个join最基本原理是笛卡尔积,通过实现循环,依次按照逗号分割截取后,改变列的数值方法:id构建:如有一行数据value有100个逗号分割的值,需要循环100次,mysql内部也有属性表help_topic自增id help.原创 2021-04-28 14:33:19 · 8592 阅读 · 2 评论 -
RAID磁盘阵列是什么(一看就懂)
背景:在单机时代,通常采用单块磁盘进行数据存储和读写的方式,由于寻址和读写的时间消耗,导致I/O性能非常低,且存储容量还会受到限制。此外,单块磁盘极其容易出现物理故障,经常导致数据的丢失。因此大家就在想,有没有一种办法将多块独立的磁盘结合在一起组成一个技术方案,来提高数据的可靠性和I/O性能呢。所以,RAID技术就应运而生。RAID 是什么?RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,简称为「磁盘阵列」,其实就是用多个独立原创 2021-03-29 10:58:36 · 1111 阅读 · 6 评论 -
ClickHouse安装教程(附图片详解)
下载地址:https://packagecloud.io/altinity/clickhouseclickhouse-client 包,包含 clickhouse-client 应用程序,它是交互式ClickHouse控制台客户端。 clickhouse-common 包,包含一个ClickHouse可执行文件。 clickhouse-server 包,包含要作为服务端运行的ClickHouse配置文件。总共包含4个RPM包 clickhouse-client-19.17.10.1-1.原创 2021-02-24 09:53:57 · 2950 阅读 · 0 评论 -
Hive实现App版本号比较(详解)
APP版本号的原则规范:版本号是唯一的 且是一串数字APP版本号的组成:软件版本号有四部分组成:<主版本号.><子版本号>.<阶段版本号>.<日期版本号加希腊字母版本号>希腊字母版本号共有5种:base、alpha、beta、RC、Release,例如:2.1.0.181209_Release。希腊字母版号:Alpha版:也叫α版(开发环境),此版本主要是以实现软件功能为主,通常只在软件开发者内部交流; Beta版:此版本相对于...原创 2021-02-22 17:39:11 · 1491 阅读 · 3 评论 -
PostgreSQL 使用RETURNING返回DML值(附详解)
需求:在写函数的过程中经常涉及到对表的增(insert)删(delete)改(update)查(select)操作,就是在对表操作后,获取操作行的某些列的值,或者获取操作行所有的数据。insert-select select-delete update-select select-into解决办法:postgresql有个returning特性,在function返回之前insert或者update的值,可以返回之前各种DML(insert,delete,update)掉的值,比mysq原创 2021-02-17 21:25:29 · 926 阅读 · 1 评论 -
PostgreSQL的递归查询(with recursive用法)
WITH语句通常被称为通用表表达式(Common Table Expressions)或者CTEs。CTE 优缺点可以使用递归 WITH RECURSIVE,从而实现其它方式无法实现或者不容易实现的递归查询 当不需要将查询结果被其它独立查询共享时,它比视图更灵活也更轻量 CTE只会被计算一次,且可在主查询中多次使用 CTE可极大提高代码可读性及可维护性 CTE不支持将主查询中where后的限制条件push down到CTE中,而普通的子查询支持需求:如何实现(省份>城市>区原创 2021-02-17 13:29:19 · 8523 阅读 · 4 评论 -
PostgreSQL函数实现获取操作影响的行数
获取普通的操作所影响的行数,PostgreSQL中有内置的变量DIAGNOSTICS与ROW_COUNT可以做到这一点。CREATE OR REPLACE FUNCTION fun_affect_rows()RETURNS text AS $BODY$declare v_count int;begininsert into click values('test video_id1');GET DIAGNOSTICS v_count = ROW_COUNT;raise notice '本.原创 2021-02-16 19:31:07 · 1667 阅读 · 1 评论 -
PostgreSQL11中实现动态SQL
动态SQL用于减少查询时的重复任务,通过允许有效的数据查询来简化数据库程序员的工作。例如,可以使用动态SQL每天为某个表创建表分区,在所有外键上添加缺少的索引,或者向某个表添加数据审核功能,而不会产生主要的编码效果。动态SQL的另一个重要用途是克服PL/pgSQL缓存的副作用,因为使用执行语句未缓存。动态 SQL 是通过 EXECUTE 语句实现的。该 EXECUTE 语句接受一个字符串,并简单地计算它。执行语句的摘要如下:EXECUTE command-string [ INTO [ST原创 2021-02-16 18:27:03 · 2220 阅读 · 1 评论 -
PostgreSQL中crosstab实现动态行转列(附案例)
行转列,通用做法是使用 case when 。today,介绍一下新的方法 -- crosstabcrosstab 函数被用来生成pivot(扭曲,转动)展示,即通过横向而不是下拉展示(行转列)。如下面这个例子:源表:row1 val11row1 val12row1 val13...row2 val21row2 val22row2 val23...期望的结果:row1 val11 val12 val13 ....原创 2021-02-16 13:48:25 · 5505 阅读 · 0 评论 -
列数据库和行数据库
列数据库和行数据库列数据库和行数据库的根本区别是如何存储数据列数据库把某个record的不同column存储在不同的file中,而行数据库把同一个record的数据逐行地存放在file中 行式存储把一行中的数据值串在一起存储起来,然后再存储下一行的数据,列式存储把一列中的数据值串在一起存储起来,然后再存储下一列的数据 受早期的硬件条件和使用场景限制,主流的事务型数据库(OLTP)大多采用行式存储,近些年分析型数据库(OLAP)的兴起,列式存储更为流行行数据库:以下图为例,所有的列依次排..原创 2021-01-31 12:02:20 · 1570 阅读 · 0 评论 -
MySql中USING用法
using等价于join操作中的on,例如a和b根据id字段关联,那么以下等价using(id) 等价于 on a.id=b.idselect key,cnt1,cnt2from ( select 1 tag,key,sum(value) cnt1 from %(table)s group by key ) a left outer join ( select 1 tag, sum(value) cnt2 from %(table)s ) b using ...原创 2021-01-14 10:44:41 · 270 阅读 · 0 评论 -
Mysql中时间和日期函数
一、MySQL 获得当前日期时间函数1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时...转载 2021-01-07 11:13:28 · 176 阅读 · 0 评论 -
MySQL去重中 distinct 和 group by 的区别
开题:SQL中的 group by 和 distinct 了解吗,简单介绍一下?group by 是按照指定的规则对数据进行分组,所谓的分组就是将一个数据划分成若干个组,然后针对若干个组进行数据处理。 distinct 是一个关键字,常用于select之后,用于取出去重之后的值。所以,group by 和 distinct 都可以用于去重。那有什么区别呢?测试数据:CREATE TABLE student ( stu_no VARCHAR(40) NOT NULL, n.原创 2021-01-06 18:52:56 · 7806 阅读 · 5 评论 -
MySql存储过程动态生成最新日期
需求:请用sql生成一张从2019年09月01日至今日的日期。思路:编写存储过程动态生成。解决办法:创建表test_date:create table test_date(date date);创建存储过程:DELIMITER $$CREATE PROCEDURE generate_date ()BEGIN declare indexdate Date; set indexdate=date("2019-09-01"); while i..原创 2021-01-06 14:41:29 · 393 阅读 · 0 评论 -
Hive中的explode使用全解(附图片详解)
数据表:表名:default.class_info,分别是班级,姓名,成绩 3列单列Explode:需求:将student这一列中数据由一行变为多行(使用split和explode,并结合lateral view函数实现)select class,student_namefrom default.class_info lateral view explode(split(student,',')) t as student_name结果如下:...原创 2020-11-26 12:19:09 · 15275 阅读 · 0 评论 -
【SQL】查询已经连续7天登陆的用户
整体思路:用户登录日期去重-->row_number()函数分组排序获得排序编号-->日期减去编号——根据每个用户count(值)判断连续登陆天数具体实现:用户每天登陆次数可能不止一次,所以需要将日期去重。 用row_number()函数将用户分组,按照去重后的日期排序后计数得到登录次数。 然后用日期减去计数得到结果(如果每次减去的结果相同,则表明用户一直处于连续登陆登录状态)。 最后按照用户和结果分组,得到相同值出现的次数,此时得到的值大于等于7的就是连续7天登陆的用户了。实原创 2021-01-05 16:36:01 · 4525 阅读 · 2 评论 -
Hive中常用函数 wm_concat & concat_ws & collect_set & sort_array总结
concat_ws & collect_set:应用1:user each_id user_id1 id1 user_id1 id2 user_id2 id1 user_id2 id2 user_id2 id3 user_id3 id1 user ids user_id1 id1,id2 user_id2 id1,id2,id3 user_id3 id1 select dt,原创 2021-01-05 12:10:50 · 6466 阅读 · 0 评论 -
PythonORM框架之SQLAlchemy
SQLAlchemy 是一个功能强大的Python ORM 框架,建立在数据库API之上,使用关系对象映射进行数据库操作,将对象转换成SQL,然后使用数据API执行SQL并获取执行结果更多内容:http://docs.sqlalchemy.org/en/latest/dialects/index.html'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'## MySQL-Python :mysql+mysqldb://<user>:<pass.原创 2020-11-27 14:30:48 · 148 阅读 · 0 评论 -
数据库存储过程之优缺点
存储过程优点:重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。 减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。 安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程,可指定存储过程的使用权。 存储过程只需要在创建时进行编译,后续执行存储过程都不需要重新编译,提高数据库执行速度。 当对数据库进行复杂操作时(update、insert、query、d原创 2020-11-19 11:30:00 · 1526 阅读 · 0 评论 -
MySQL每隔三小时统计数据
MySql中每隔3小时统计数据,sql如下:SELECT NAME, IFNULL(count + count1, 0) AS `count`FROM ( SELECT t1.NAME, t.count, t1.count1 FROM ( SELECT CASE WHEN HOUR(start_time) BETWEEN 0 AND 3 THEN '00' WHEN HOUR(start_time) BETWEEN 3 AND 6 THEN '03' WHEN HOU原创 2020-10-26 12:04:59 · 1161 阅读 · 2 评论 -
MySQL索引失效问题详解
MySQL5.7创建数据表user:CREATE TABLE `user` ( `id` int(5) unsigned NOT NULL AUTO_INCREMENT, `create_time` datetime NOT NULL, `name` varchar(5) NOT NULL, `age` tinyint(2) unsigned zerofill NOT NULL, `sex` char(1) NOT NULL, `mobile` char(12) NOT N原创 2020-09-18 16:07:40 · 586 阅读 · 1 评论 -
数据维度相关知识--kylin
kylin理论基础:空间换时间,使用预计算(相比实时计算),对业务所需的维度组合和度量进行预聚合,提前把可能是查询都预先计算好,当查询到达时直接访问预计算聚合结果,反馈用户查询结果,省去对大数据的扫描和运算,而不是再去计算。kylin实现原理:kylin从数据仓库中最常用的Hive中读取源数据,使用MapReduce/spark作为cube构建的引擎,并把预计算的结果保存再Hbase中,对外暴露Rest API/JDBC/ODBC等查询接口。kylin的预聚合思想实现数据多维度下钻,将维度.原创 2020-09-14 16:16:56 · 343 阅读 · 0 评论 -
数据仓库-模型设计
数据模型设计名词解释:ODS --- 原始数据层 DWD--- 明细数据层 DWS--- 轻度汇总层 ADS/DM --- 应用层/数据集市层 DIM --- 维表ODS是业务数据进⼊数据中台的第⼀站,是所有数据加⼯的源头,控制住源头,才能从根本上防⽌⼀个重复的数据体系的出现。对于ODS层表的命名采⽤ODS_业务系统数据库名_业务系统数据库表名⽅式,⽐如ods_warehous_stock,warehous是业务系统数据库名,stock是该库下⾯的表名。DWD/DWS/ADS/D...原创 2020-08-30 21:36:21 · 801 阅读 · 0 评论 -
CentOS7 YUM 在线安装MySQL5.7(附图片详解)
1、删除已安装的MySQL检查MariaDB[root@localhost java]# rpm -qa|grep mariadb#删除相关依赖包(若不存在,可以跳过)[root@localhost java]# rpm -e --nodeps mariadb-libs#检查是否删除干净[root@localhost java]# rpm -qa|grep mariadb检查MySQL[root@localhost java]# rpm -qa|grep mysql.原创 2020-08-27 15:33:14 · 406 阅读 · 0 评论