DataBase
首席IT民工
编程才是真爱^_^
展开
-
oceanbase
how to install oceanbase and add oblogproxy plugin原创 2023-02-24 11:00:18 · 198 阅读 · 0 评论 -
数据库设计的思考
1 视图随着重构的进行,所有的表都将变成视图,那么使用视图查询就没有什么问题,而继承提供了一种不用视图的方案.由于Mybatis的sql嵌入功能,加上with语法,那么可以不创建数据库的视图,而是使用with创建临时视图,这样在新老版本更替的时候就不会出现代码和数据库不一样的情况...原创 2021-07-13 09:25:38 · 199 阅读 · 0 评论 -
On TransactionIsolation(6)RepeatableRead
书接上回,提到了repeatable read到底是怎样的情况,从上次的例子看出来有些即使没有没读取的数据,在repeatable read的情况也会读取历史数据,这样做有个好处就是如果先前读的数据和后来读的数据有着某种联系,那么repeatable read可以保证多次读取的数据是内在一致的。对于同一个表里,多行数据会读取历史信息(无论是否被读取过),那么不同表的数据呢?更进一步,如果DDL语句会体现出来么?测试代码如下package com.qbit;import java.sql.Con原创 2020-10-28 16:06:22 · 743 阅读 · 0 评论 -
On TransactionIsolation(5)different transaction
目录结论测试代码read_uncommitedread_commitedrepeatable_readserializable根据代码来看,isolation是针对单个连接而言的,如果对于读和写使用不同的隔离级别会是什么效果呢?结论先说结论,如下 write read READ_UNCOMMITTED READ_COMMITTED REPEATABLE_READ SERIALIZABLE READ_UNCOMMITTE..原创 2020-10-28 14:09:03 · 163 阅读 · 0 评论 -
On TransactionIsolation(4)MsSql
使用下面的代码连接数据库private static Connection connection() { try { Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver.class.getName()); Connection out= DriverManager.getConnection("jdbc:sqlserver://172.23.47.6:1433","sa",原创 2020-10-27 11:56:57 · 145 阅读 · 1 评论 -
On TransactionIsolation(3)Postgresql
postgresql的测试需要将connection方法改成以下private static Connection connection() { try { Connection out=DriverManager.getConnection("jdbc:postgresql://172.23.47.6:5432/postgres","postgres","mima"); out.setTransactionIsolation(Conne原创 2020-10-26 17:32:26 · 324 阅读 · 0 评论 -
On TransactionIsolation(2)Oracle
Oracle的连接需要将connection改为如下情况private static Connection connection() { try { Class.forName(oracle.jdbc.OracleDriver.class.getName()); Connection out= DriverManager.getConnection("jdbc:oracle:thin:@172.23.47.6:1521:ORCLCDB",原创 2020-10-26 17:18:19 · 313 阅读 · 0 评论 -
On TransactionIsolation(1)MySql
参见https://blog.csdn.net/kamputer/article/details/109292200将connection方法修改如下,主要是讲隔离级别设置为Connection.TRANSACTION_READ_UNCOMMITTEDprivate static Connection connection() { try { Class.forName(com.mysql.cj.jdbc.Driver.class.getName());原创 2020-10-26 16:43:50 · 149 阅读 · 0 评论 -
On TransactionIsolation(0)
写了一段代码,通过两个connection来连接数据库,一个写,一个读。每次写线程写完都通知读线程来读取数据。package com.qbit;import java.sql.*;import java.util.concurrent.Callable;import java.util.concurrent.Executors;import java.util.concurrent.atomic.AtomicBoolean;import java.util.concurrent.locks原创 2020-10-26 16:19:46 · 234 阅读 · 0 评论 -
SQL优化经验
文章目录原因or结果索引单列索引&联合索引索引列索引类型综述错误示例函数无效冗余表内冗余冗余列函数列冗余表宽表窄表读写分离错误写多读少用于写入的读分区缓存下面的❤未必准确,是为了参考。重要的是提供各种方法,需要根据具体情况来选择原因or结果当我们收到系统的一个功能卡的反馈的问题时需要搞清楚的是这个功能卡是自身造成的还是收到了其他的影响造成的。我们可以把这个操作在用于性能优化的环境复现下看是否还卡(注意数据尽量和生产保持一致),如果发现并不卡则可能是其他原因造成,问题的症结不在这,另外下面的情况原创 2020-10-21 10:23:56 · 506 阅读 · 0 评论 -
一个Sql重写优化器(三)Impl
文章目录Simple implJoin reducedSimple impl这种情况仅仅将DSL转换为一个Sql然后执行,使用了NIO的特性,但是对于Sql本身未做优化。import com.google.common.base.*;import com.google.common.collect.*;import io.r2dbc.spi.Row;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUt原创 2020-10-20 16:56:18 · 465 阅读 · 0 评论 -
一个Sql重写优化器(二)DSL
文章目录建模可以被join的columnwhere普通查询selectComplexQuerySqlStatement建模建模虽然不是必须的,但是可以复用模型从而避免一些错误可以被join的public interface Relation<R> { String getName();}public interface Alias<T> { String getAlias(); Relation<T> getRelation();}原创 2020-09-22 12:19:41 · 294 阅读 · 0 评论 -
一个Sql重写优化器(一)原理
文章目录backgroundSql重写reactor一点讨论background通过观察业务中一些慢查询的SQL以及他们的执行计划,可以发现PostgreSQL的默认优化器在执行limit的语句中生成的执行计划有问题,他是先做了join再limit,但是jion动辄上百万行记录,但是limit一般只需要几十条记录,其实limit可以内推但是由于left join本身可能让结果集的行数增多所以PostgreSQL没有这样做,(其实如果更Smart一点可以观察如果是join的主键则不会增多,另外left j原创 2020-09-22 11:59:38 · 613 阅读 · 0 评论 -
数据仓库一书的感悟与批判-财务
文章目录数仓的起点企业信息依从准则前财务行为数仓的起点每个数据仓库都必须有一个起点.在很多机构中,起点是一个关于财务的数据仓库.当然,财务和商务是非常接近的,或者至少和商务的核心接近.财务涉及的信息一般较少.财务数据一般很有规矩,因此,经常是很多数据仓库很好的起点.企业信息依从准则在这里再专门提到一种涉及到企业信息依从准则的DW,它是为了接受外来的审计而按照法律准备的,所以它很少使用(所以性能要求不高),但是数据要求完整,否则有灭顶灾难。前财务行为前财务行为就是财务交易之前的磋商。它解释了财原创 2020-05-11 15:17:09 · 281 阅读 · 0 评论 -
数据仓库一书的感悟与批判-ODS
文章目录桥梁ODS桥梁读到这里我发现了Inmon的一个特点,就是对定义的精确把握。考虑下面一个场景:由于我们要解决一个问题Q1,于是我们打造了一个系统A1,并针对Q1做了定制化的限定,这样的话A1就可以不多不少的解决Q1.后面又出现/发现了问题Q2(可能是一个和Q1相似的问题,也可能是Q1未能解决的问题),这时一般情况可能是扩充A1以解决Q2,但是对于Inmon而言,这时需要一个新系统A2从而解决Q2,如果A2和A1有联系也是应该的,但是不应侵蚀A1系统原有的边界。ODS按照上面的那种方式,当业务系原创 2020-05-11 15:02:31 · 150 阅读 · 0 评论 -
数据仓库一书的感悟与批判-高级话题
文章目录探查性数据仓库DW和DM的物理关系测试财务数据仓库探查性数据仓库探查性数据库是抽取了数仓中部分数据进行分析,试图得到大宗销售多在星期三进行这样的结论,另外还有一种称为数据挖掘型的数据仓库是分析所有数据去验证上面那条结论和数据仓库的数据不停更新不同的是探查性数据库在探查时会冻结,以防止两次探查的结论相矛盾(保证可重复读)DW和DM的物理关系文中赞成分来处理,因为他俩已经解除了绑定,可以使用两台更挫的机器代替一台厉害的机器.测试文中认为DW的数据不需要像DB中那样精确,只要不影响最后DSS原创 2020-05-11 14:22:57 · 139 阅读 · 0 评论 -
数据仓库一书的感悟与批判-关系模型vs多维模型
文章目录关系模型多维模型DM关系模型关系模型就是经典的DB的模型,各个表的逻辑关系都是对等的.多维模型多维模型也是星型模型,就是把表分为事实表和维表两类,二者的关系是不对等,往往是一个事实表对应多个维表.另外如果出现了公用的维表,那么就产生了雪花模型总的来说如下关系模型多维模型对等不对等间接访问直接访问来源于DB来源于DM未优化针对特定需求优化适应未来适应当下高成本低成本DM从维度模型再向最终用户走下去就是DM,文中比较了DB原创 2020-05-11 13:46:35 · 264 阅读 · 0 评论 -
数据仓库一书的感悟与批判-大型数据仓库
文章目录大型数仓的问题存储费用利用率多级存储性能优化大型数仓的问题存储费用随着数据量的增大,存储费用越来越高,并且要注意到存储费用并不只是存储硬件的费用,还包括相应的处理硬件和软件的费用利用率数据越多的时候数据利用率越低多级存储人工有人来对多种存储介质中数据进行同步HSM系统全量同步CMSM行级同步,就是根据当前请求自动去加载数据.就有点像操作系统的分页算法,站在调用方看似乎所有的数据都ready了等待读取,其他是真正读取的时候才从下一级的存储读到上一次存储.性能优化根据实际原创 2020-05-11 11:47:38 · 143 阅读 · 1 评论 -
数据仓库一书的感悟与批判-WEB
文章目录web点击流数据ODS数据分析文本多字段基于概率的匹配web看到web这一章才明白,前面数仓对接的操作性应用都是指企业内部应用,如此看来这本书基本上还是站在前互联网的视角来看待问题.点击流数据正如前面提到的,站在传统的企业IT角度来看,点击流数据的粒度太低,不作用作分析,所以也没必要装入数据仓库.文中提到需要一个叫GM的软件来抛弃90%的数据.ODS在这里,ODS终于上场,作为DB和DW之间的数据存储系统,它既作为DW存储很多数据,又作为DB提供实时数据访问.特殊的,ODS不是用来冗余D原创 2020-05-11 10:46:29 · 165 阅读 · 0 评论 -
数据仓库一书的感悟与批判-EIS
文章目录EIS对EIS的使用判断趋势发现异常值向下钻取分析事件映射EISEIS试图提供一些有用的信息,并且还漂亮的展现出来,但是却不愿意像DW那样去处理一些苦活和脏活,最后它演化成了一个最前面的系统,就是BI对EIS的使用判断趋势发现异常值向下钻取分析为了应对EIS分析员无法预知的兴趣点,DW做了全量的做工以确保后续管理员对于哪个主题有兴趣都可以向下钻取.事件映射对于一个变化的时间线,通过加入一些事件来观察之间的关系.当然这样可能会导致错误的因果绑定....原创 2020-05-11 09:05:45 · 277 阅读 · 0 评论 -
数据仓库一书的感悟与批判-分布式
目录康威定律第一定律第二定律反定律多DW之间的数据交换康威定律第一定律往往我们技术人员讨论的分布式是一种技术上的分布式,为了应对海量数据/需求而使用多台物理机来提供更强大的性能.但是文中提到了两外两种天然的分布式数据仓库:一种是总部和分部有各自的DW,另一种是不同部门各自建立的DW,这个简直完美的体现了康威定律.第二定律对于一个部门间/地区间差异较大的集团来说,整合大家保持一致很困难的.正如文中所举的例子,亚马逊河上的货物信息对于香港是没有用的.如此看来,数据仓库扮演着信息化高速公路的角色,是统一原创 2020-05-09 18:03:53 · 175 阅读 · 0 评论 -
数据仓库一书的感悟与批判-粒度
目录DW=DB+Data存储空间的估算实体表数据行数估算业务活动表数据行数估算粒度的确定越细越好?确定的方法DM的影响DB法律DW=DB+DataDW相对于DB的最大一点是对于数据物理情况的讨论,对于DB而言,设计的时候遵循关系模型的设计范式,顶多在性能出现问题时打破设计范式,而对于DW而言,设计范式从一开始就是被打破的,其中原因就是数据量的大小.对于DB而言,虽然其称为Database,但是它只关注了DDL(有时也考虑DML),但是对于Data本身却缺少考虑.粒度就是一个体现出DW和DB这种差异的地方原创 2020-05-09 11:41:16 · 163 阅读 · 0 评论 -
数据仓库一书的感悟与批判-决策支持系统的发展
目录DSSDW数据的时效性表1表2表3DW vs DB开发模式硬件利用DW的帮助DSS理解这本书首先要解决的问题就是DSS这个词,也许在此之前听说了BI,DW等术语,对于他们之间的差别也有些困惑.在这本书里,从结果而不是过程界定了我们要做的事:就是为管理层的决策做支持.这个界定相对于后面出现的大数据,实时计算等概念而言更传统,也更确定.这样就树立了一个标尺,或者是一个大概的标尺,来确定如何处理数据而不是处于对未来各种各样的数据使用的恐惧中.既然是DSS,做出决定的就是管理者,是人,那么对于时效性的要求原创 2020-05-09 10:51:17 · 212 阅读 · 1 评论 -
数据仓库一书的感悟与批判-数据仓库环境
目录粒度低粒度数据的清理活样本数据库报表错误数据的解决粒度从DW的名字上来看DW收集了多个DB的数据,打通了数据的关联,应该能回答DB无法回答的数据问题,人们也是给予了这样的期望的.但是从实践上来看,DW无法做的这一点,在这里我有点感觉受到了欺骗.一方面DW声称提供更多的功能,另一方面DW又无法提供人们所期望的那些功能(这些功能难以提供,所以人们格外的渴望).是的,我说的就是粒度.粒度太细就会更无用,也占用更多的资源(包括存储资源和计算资源),而粒度太粗则担心无法面对未来的需求.书中给出的方案是双粒度原创 2020-05-09 10:53:30 · 142 阅读 · 0 评论 -
数据仓库一书的感悟与批判-设计数据仓库
目录DSSDW数据的时效性表1表2表3DSS理解这本书首先要解决的问题就是DSS这个词,也许在此之前听说了BI,DW等术语,对于他们之间的差别也有些困惑.在这本书里,从结果而不是过程界定了我们要做的事:就是为管理层的决策做支持.这个界定相对于后面出现的大数据,实时计算等概念而言更传统,也更确定.这样就树立了一个标尺,或者是一个大概的标尺,来确定如何处理数据而不是处于对未来各种各样的数据使用的恐...原创 2020-05-08 13:57:22 · 214 阅读 · 0 评论 -
Cassandra学习笔记
安装docker方式docker run --name cassandra -d -p 9042:9042 cassandra注意涉及到cassandra有好几个端口,9042是用于提供外部访问的。登录cassandra的客户端指令是cqlsh,初始情况下账号和密码都是cassandra使用datagrip登陆后发现没有一个namespace创建namespacecreate k...原创 2020-04-30 14:12:16 · 433 阅读 · 0 评论 -
基于docker-compose的hive搭建
docker-compose.yml在hadoop配置文件的基础上增加几个服务,另外把配置文件名字都改成env.env hive-server: image: bde2020/hive:2.3.2-postgresql-metastore env_file: - ./env.env environment: HIVE_CORE_CONF_jav...原创 2020-04-29 15:48:17 · 2308 阅读 · 3 评论 -
基于docker-compose的hadoop集群搭建
docker-compose.yml这个配置文件是根据bde2020文件略作调整,去掉了tag信息(可以拉取latest)和volume信息,另外也去掉了restart配置version: "3"services: namenode: image: bde2020/hadoop-namenode container_name: namenode ports: ...原创 2020-04-29 14:40:10 · 2848 阅读 · 6 评论 -
SQL学习笔记
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC INSERT INTO 语句INSERT INTO 语句用于向表格中插入新的行。语法INSERT INTO 表名称 VALUES (值1, 值2,....)我们转载 2014-01-20 16:01:56 · 873 阅读 · 0 评论 -
【Oracle Database 12c New Feature】How to Learn Oracle (12c New Feature) from Error
这篇文章也许并不太牵涉什么技术点,只是描述一下我自己在学习的时候大概是什么状态,什么思路,因为自认自己的学习能力还不错,因此也期望这样的学习方法对其他人会有帮助。看这篇文章的时候,你可以同步地想一想如果是你遇到这样的错误,你会怎么处理,怎么发散,怎么研究?Oracle Database 12c前几天正式发布了,如果学习一个新版本的数据库?我通常是从New Features Guide文档看起,转载 2014-05-06 17:55:52 · 1114 阅读 · 0 评论 -
Oracle中查看慢查询进度的脚本
SELECT se.sid, opname, TRUNC (sofar / totalwork * 100, 2) pct_work, elapsed_seconds elapsed, ROUND (elapsed_seconds * (totalwork - sofar) / sofar) remain_time,转载 2016-05-04 08:27:47 · 1727 阅读 · 0 评论 -
oracle调用JAVA类的方法 (第二种方法测试不行)
第二种方法测试不行转载 2016-06-14 13:59:41 · 1969 阅读 · 0 评论 -
使用pl/sql来调用java
我的oreacle版本是11.2第一步:使用pl/sql连上oracle后,创建javafile - new - Progran Window- Java source编辑完编译。例如我的是create or replace and compile java source named hello aspublic class hello{public s原创 2016-06-14 14:08:45 · 767 阅读 · 0 评论 -
CentOS 7 安装PostgreSQL 9.6
字数566 阅读30 评论0 喜欢0CentOS Yum 工具安装,简单方便,官方源列表,RPM LIST。添加RPMyum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm安装Postgr转载 2016-11-28 23:06:15 · 8347 阅读 · 0 评论 -
ActiveMQ: configure PostgreSQL for Message Persistence
We are gathered here today to discuss the use of datastores with ActiveMQ.ActiveMQ(AMQ) supports various datastores for message persistence, including PostgreSQL(PG). When considering a migration to转载 2016-12-05 08:05:34 · 951 阅读 · 0 评论 -
Sass系统技术选型笔记(3)DB
想当年oracle和db2都在神坛上,我在最开始用的mysql,一直向往什么时候用上oracle,可后来有了去ioe运动,我用上了oracle后发现其12c的新特性用处不大,但是oracle的架子倒是挺大.另外现在大数据也挺火,虽然我们的业务暂时可能没那么大,但是对于非关系型数据库还是有些需求,至于缓存暂时用不上. 候选方案有mysql,mariadb,postgresql原创 2016-11-25 14:55:55 · 978 阅读 · 0 评论 -
springboot集成liquibase来实现数据库版本管理
bootstrap.yml里加上下面配置从而使用xml格式的配置文件(觉得xml强大些)liquibase: enabled: true change-log: classpath:/db/changelog/db.changelog-master.xml当然,指定的位置xml文件是需要存在的<?xml version="1.0" encoding="UTF-8"?><...原创 2018-06-04 17:13:27 · 2164 阅读 · 0 评论 -
数据库设计的思考(json和array)
由于postgresql支持json和array这种非传统的关系型数据库的数据类型,所以这就提供了一种诱惑把某些数据直接存为json或array这种数据类型,下面分析一下利弊:好处: A 一次就可以加载所有数据,不用关联查询.这种情况一般是有一对多关系的存在(对于一对一关系可能就直接合并到一个表了),不用进行两次查询,也减少了vo和po之间的转化(这种情况一般会为返回的vo定...原创 2018-08-18 12:27:03 · 1245 阅读 · 0 评论 -
数据snapshot的保存
数据snapshot的保存两种方式行级json是否还需要业务表需要注意的坑两种方式行级这个方式最好配合表继承来处理,创建一个父表主要是定义表结构,不存数据。然后创建业务表和snapshot表都继承该父表。然后创建触发器在insert和update后把数据刷入snapshot(为什么要后置触发呢,这样保证在snapshot可以看到整个生命周期)。这里有一个坑,就是如果业务表继承了其他的表,那么...原创 2019-01-23 11:59:56 · 2469 阅读 · 0 评论 -
hadoop集群搭建[非docker版本]
设置JAVA_HOMEexport JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/修改core-site.xml<configuration> <property> <name>fs.defaultFS</name> <va...原创 2019-07-28 14:27:58 · 295 阅读 · 0 评论