db2

简单明了!OLTP场景下的数据分布式设计原则

天涯浪子 提交于 2020-05-05 18:19:08
作者介绍 温卫斌, 就职于中国民生银行信息科技部,目前负责分布式技术平台设计与研发,主要关注分布式数据相关领域。 前言 最近几年做分布式项目,很多工作是关于OLTP(联机交易系统)场景下数据分布式架构的,疫情期间正好整理下这方面的一些设计与实践。为避免篇幅太长,本文分为设计篇和技术篇,设计篇主要偏向数据拆分的理论与方法,还有一些原则与经验。技术篇则主要会介绍分库分表中间件的设计与使用实践,以及如何构建一个完整的分布式数据服务平台。 一般来说做分布式架构,应用层是好做分布式的,因为往往都是无状态的(或者通过将数据转移到DB、缓存、MQ等方式来实现无状态),只需在流量入口、即在应用前面加一个负载均衡即可(例如Nginx、HAProxy、F5),这在大单体架构也多已具备。所以一般我们说分布式架构,一个重要的部分就是要做数据的分布式化。 传统单体集中式架构 数据的分布式不像应用那么简单,因为各节点的数据可能是不一样的,需要进行路由、解决多副本一致性,甚至多写冲突等问题。虽然实现方案复杂,不过数据的分布式本质上就两种朴素思想:复制和分片。复制技术在传统关系数据库中也很常见,主要用来做主备、双活,例如 MySQL Replication、Oracle DataGuard等。分片在数据库里也有对应产品。例如 MySQL Fabric、Oracle Sharding,但与复制相比

第一天MySQL

自作多情 提交于 2020-05-05 10:07:38
MySQL学习笔记 2020/5/4 一、 数据库的相关概念 数据库的好处 1.1 能够永久性的保存数据,实现数据持久化 1.2 可以实现结构化查询,方便管理   2.数据库相关概念 2.1数据库(DB->database):存储一组有组织的数据的容器 2.2 数据库管理系统(DBMS->database management system):又称数据库软件或数据库产品,用于管理数据库中的数据 2.3 结构化查询语言(structured query language):用于和DBMS进行通信的语言(SQL语言不是某个数据库软件特有,而是几乎所有数据库软件都通用的语言) 二、 一些数据库软件 MySQL(08年被sun公司收购,09年sun公司被oracle公司收购) Oracle DB2 sqlserver 三、 数据库的特点 将数据放到表内,表再放在库中(如security库) 一个数据库可以有多个表,每个表都有一个名字,用来标识自己(如security中的users) 表具有一些特性,这些特性定义了数据在表中如何存储,类似以c++中“类”的设计(如为储存学生数据的表) 表由列组成,也称为字段。所有表都是由一个或多个列组成的,每一列类似于c++中的“属性”(如security库中的user表中的username、password、id等字段) 表中的数据是按行存储的

小记----Mybatis

北战南征 提交于 2020-05-05 02:33:24
使用mybatis操作数据库有两种方式xml注入和@注解方式,两种方式在项目中是可以共存的。 注解方式:使用注解方式 默认 需要实体类的属性值和表的列名保持一致,否则无法映射到对应的值;或者使用@Results来手动设置映射关系,优点:看着优雅一点,方便修改,缺点:动态sql语句不好写,比较麻烦 xml形式:很常用的方式,有各种逆向工程可以生成mapper.xml文件,看着比较乱,各种标签满天飞,修改的时候很痛苦 我们会发现无论是hibernate还是mybatis,为了方便我们的写sql都煞费苦心。但最后他们都殊途同归指向了“约定大于配置”。hibernate搞了个jpa,而mybatis也相应推出了mp。而mp 是一个 MyBatis 的增强工具 。 看看官网对他的介绍: 无侵入 :只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小 :启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作 :内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调用 :通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成 :支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence)

数据库原理

微笑、不失礼 提交于 2020-05-04 10:10:35
1、数据库管理系统   1>数据库是数据的汇集,它以一定形式存于存储介质上   2>DBMS是管理数据库的系统软件,它实现数据库系统的各种功能,是数据库系统的核心   3>DBA(数据库管理员)负责数据库的规划、设计、协调、维护、管理和性能优化等工作   4>应用程序指以数据库为基础的应用程序 2、数据库管理系统的优点   1>相互关联的数据的集合   2>较少的数据冗余   3>程序与数据相互独立   4>保证数据的安全、可靠   5>最大限度地保证数据的正确性   6>数据可以并发使用并能同时保证一致性 3、数据库管理系统的基本功能   1>数据定义     定义数据类型等   2>数据处理     增删改查等   3>数据安全     权限控制等   4>数据备份     备份还原等 4、数据库系统架构   1>单机架构   2>大型主机/终端架构   3>主从架构(C/S)     目前主流,用户访问量成为瓶颈   4>分布式架构     解决用户访问量瓶颈 5、关系型数据库   1>关系:关系就是二维表,满足如下性质:     表中的行、列次序并不重要   2>行row:表中的每一行,又称为一条记录(record)   3>列column:表中的每一列,成为属性,字段   4>主键(Primary key):用于唯一确定一个记录的字段,避免出现一样的字段   5

C#设计模式--工厂模式之简单模式

人盡茶涼 提交于 2020-05-03 23:18:51
简单工厂模式定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 工厂( Creator )角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。 抽象产品( Product )角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 具体产品( Concrete Product )角色 是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的。 图解: 代码案例: // 抽象产品 public interface Database { // 定义了数据库删除增加两个方法 void Delete(); void Insert(); } // 具体产品 // Sqlserver的增删 public class Sqlserver:Database { public void Delete() { Console.WriteLine( " delete data from sqlserver " ); } public void Insert() {

mysql异地备份方案经验总结

余生颓废 提交于 2020-05-02 09:18:56
Mysql 数据库异地备份脚本 实验环境 : 关闭防火墙不然不能授权登录 Mysql-server : 192.168.30.25 Mysql-client: 192.168.30.24 实验要求:对 mysql-server 的 auth 和 client 库实现异地备份,每天凌晨 2:00 进行备份 并写一个数据恢复脚本(库里有数据) mysql 服务端授权,给予 select 和 lock tables 权限 , 已备份 [root@localhost ~]# mysql -uroot -p123456 mysql> grant select,lock tables on auth.* to 'admin'@'192.168.30.24'identified by '123456'; mysql> grant select,lock tables on client.* to 'admin'@'192.168.30.24' identified by '123456'; mysql> flush privileges; 连接测试 这个需要安装好后的 mysql, 连接测试 [root@client ~]# mysql -uadmin -p -h192.168.30.25 mysql> show databases; +--------------------+ |

jdbc 几种关系型数据库的连接 和 driver_class,以及简单的使用

六月ゝ 毕业季﹏ 提交于 2020-05-01 21:13:54
1,关系型数据路的 driver_class 和 url 1,oracle driverClass:oracle.jdbc.OracleDriver url:jdbc:oracle:thin:@127.0.0.1:1521:dbname 2,mysql driverClass:com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true 注意: 高版本的 mysql 需要显示指定 useSS 3,sql_server driverClass:com.microsoft.sqlserver.jdbc.SQLServerDriver url:jdbc:sqlserver://localhost:1433; DatabaseName=dbname 4,db2 driverClass:com.ibm.db2.jcc.DB2Driver url:jdbc:db2://127.0.0.1:50000/dbname 5,sybase driverClass:com.sybase.jdbc.SybDriver url:jdbc:sybase:Tds:localhost:5007/dbname 6,postgre_sql driverClass:org.postgresql

DB2使用MERGE INTO语句实现西虹市首富的新增及更新操作

江枫思渺然 提交于 2020-05-01 18:27:51
首先我们新建一张名为 XIHONGSHISHOUFU 的表,这张表是评委会初步评选出的西虹市首富的候选人员,下面的SQL语句包含建表和插入数据的部分: CREATE TABLE XIHONGSHISHOUFU ( REGION_ID INTEGER, NAME VARCHAR(20), MONEY DECIMAL(20,2), AGE INTEGER ); INSERT INTO XIHONGSHISHOUFU VALUES (101,'小明',100.00,30), (102,'小王',200.00,35), (104,'小李',300.00,25); 这张表的数据展示如下: REGION_ID NAME MONEY AGE 101 小明 100.00 30 102 小王 200.00 35 104 小李 300.00 25 我们这里简单地解释一下上面的数据, XIHONGSHISHOUFU 这张表包含了如下信息: REGION_ID:区号; NAME:这个区目前评审出的最有钱人的姓名; MONEY:这个区最有钱的人的资产估值; AGE:这个人的年龄。 然而呢,接下来评委会收到了一张新的名单,是之前以往的一些有钱人的清单。 所以评委会现在需要做的是更新一下数据,从而得到新的西渱市首富清单。 新的有钱人清单的表结构和上面的表是一样的,下面是这张表 SHOUFU_BACKUP

MySQL5.7多源复制配置过程

試著忘記壹切 提交于 2020-05-01 17:17:02
MySQL5.7多源复制配置过程 ~ ~ MySQL多源复制使Slave可以并行接收来自多个直接Master的事务。多源复制可用于将多个服务器备份到单个服务器、合并表分片并将数据从多个服务器合并到单个服务器。在应用事务时,多源复制不会实现任何冲突检测或解决方案,如果需要则这些任务将由应用程序。 在多源复制拓扑中,Slave会为其接收事务的每个Master创建一个复制通道。 角色 IP M1 192.168.75.132 M2 192.168.75.130 S 192.168.75.131 一、基础配置说明 1)服务器设置 多源复制拓扑至少需要配置两个主服务器和一个从属服务器。在这里假设两个主服务器为master1和master2,以及一个从服务器slavehost。从服务器将从每个主机复制一个数据库,即从master1复制db1,从master2复制db2。 2)binlog设置 多源复制拓扑中Master端可以配置为基于GTID的复制或基于二进制日志位置的复制,但不运行混用。 Master配置: log_bin =/data/mysql_5.7.22/mysql-bin binlog_format =ROW 3)复制信息存储设置 在多源复制拓扑中的Slave需要设置master_info_repository和relay_log_info