数据库数据定期同步实现

需求背景:有一个业务方需要定期跟数据库进行数据同步,就是需要定期往数据库中同步部分数据,而这些数据并不能被当前系统直接使用,需要做一些处理同步到系统所使用的数据库中,处理比较复杂,没办法进行实时的同步,所以需要写个定时任务,将处理后的数据进行同步,说白了就是数据库中两个表的数据同步。 实现这个需求,首先想到的是直接通过sql 进行同步,表之间数据同步无非是三种操作:更新,删除,插入,假设两个表
阅读本文

数据库的事务(transaction)

数据库的事务(transaction) 事务的四大特性(ACID) 原子性(Atomicity),事务中的所有操作是一个不可分割的原子单位,要么全部执行成功,要么全部执行失败。 一致性(Consistency),事务执行后,数据库状态与业务规则保持一致。例如转账,两人余额之和保持不变,不会凭空增加或减少。 隔离性(Isolation),并发操作中,不同事务应隔离开来,互不干扰。 持久性(Dura
阅读本文

数据库中@代表什么意思

“@“是:局部变量声明,如果没有“@“的字段代表是列名;    eg:  声明变量: declare @name varchar(8)  赋值: set @name= ‘张三‘  查询: select * from stuInfo where stuName = @name    由set 和 select 进行赋值;  select一般用于查询数据,然后再赋值变量。
阅读本文

SpringBoot填坑系列---XML方式配置数据库

本次只是简单的运用SpringBoot搭建框架,对其原理并不做深入的探究1.POM文件 1 <?xml version=“1.0“ encoding=“UTF-8“?> 2 <project xmlns=“http://maven.apache.org/POM/4.0.0“ xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance“ 3
阅读本文

数据库编程

declare @a int; 定义:declare 是声明的意思 +@ +变量名 + 数据类型 注意数据类型啊declare @b int; set @a = 1; 赋值:set + @ +变量名 = 所附的值set @b = 2;--select @a = max(degree) from Score; 这也是一种赋值,也可以看作是查询,查出score表中的最高成绩
阅读本文

数据库代码

scratch     乱写      case       案例       server       服务器      input       输入 score        学分      course        课程      then          然后         expression         表达式continue          继续           de
阅读本文

登陆MySQL数据库,以及常用操作命令

登陆mysql 打cmd命令终端,如果已经添加了mysql的环境变量,可以直接使用命令 mysql -uroot -p 直接回车,之后按提示输入密码, 如果未添加mysql的环境变量,可以切换到mysql的安装目录下的bin目录,再使用 mysq -uroot 你也可以手动为mysql添加环境变量。这里就不介绍怎么添加环境变量的方法了 密码输入正确之后,就会出现“Welcome to the
阅读本文

Hibernate 配置文件

映射文件(.hbm.xml) 1 <?xml version=“1.0“ encoding=“UTF-8“?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 “-//Hibernate/Hibernate Mapping DTD 3.0//EN“ 4 “http://www.hibernate.org/dtd/hibernate-mappi
阅读本文

动态代理

创建代理InvocationHandler接口常见用例数据库连接以及事物管理单元测试中的动态Mock对象自定义工厂与依赖注入(DI)容器之间的适配器类似AOP的方法拦截器利用Java反射机制你可以在运行期动态的创建接口的实现。java.lang.reflect.Proxy类就可以实现这一功能。这个类的名字(译者注:Proxy意思为代理)就是为什么把动态接口实现叫做动态代理。动态的代理的用途十分广泛
阅读本文

HyperLedger Fabric 1.0的Transaction处理流程

如果把区块链比作一个只能读写,不能删改的分布式数据库的话,那么事务和查询就是对这个数据库进行的最重要的操作。以比特币来说,我们通过钱包或者Blockchain.info进行区块链的查询操作,而转账行为就是Transaction的处理。而HyperLedger Fabric在1.0对系统架构进行了升级,使得事务的处理更加复杂。一、架构让我们来看看Fabric 0.6到1.0的架构图:这个图来自IBM
阅读本文

MySQL 分表和分区

1.为什么需要分表和分区  在开发的过程中,经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,如果涉及联合查询的情况,性能更加糟糕。分表和分区的目的就是减少数据库的负担,提高数据库的效率,就是提高表的增删改查。 2.分表  分表是讲一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个
阅读本文

MVC系列博客之排球计分(三)模型类的实现

最初我使用的是连接数据库的方法来建立数据连接的,后来听了同学用EF框架来生成数据库自动连接,感觉很好用,然后我就重新用EF框架生成数据库使用EF框架生成数据库,要有相应的模型类,模型类如下: public int ID { get; set; }        [DisplayName(“球员编号“)]        public string Name { get; set; }
阅读本文

EF的表连接方法Include()

在EF中表连接常用的有Join()和Include(),两者都可以实现两张表的连接,但又有所不同。例如有个唱片表Album(AlbumId,Name,CreateDate,GenreId),表中含外键GenreId连接流派表Genre(GenreId,Name)。每个唱片归属唯一一个流派,一个流派可以对应多个唱片。1.Join(),两表不必含有外键关系,需要代码手动指定连接外键相等(具有可拓展性
阅读本文

Druid连接池(二)

DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池,不知道速度有没有BoneCP快)。  配置参数 和其它连接池一样DRUID的DataSource类为:com.alibaba.druid.pool.Drui
阅读本文

C# 自动生成数据库

1.窗体下的代码private void button1_Click(object sender, EventArgs e) { OpenFileDialog of = new OpenFileDialog(); of.Filter = “*.sql|*.*“; of.InitialDirectory = Applic
阅读本文

ssh框架中文保存数据库MySQL乱码

检查后台获取前端页面数据打印到console控制台无乱码:tomcat配置没有问题;检查MySQL数据库编码设置:字符集:utf8 -- UTF-8 Unicode,排序规则:utf8_general_ci无误,数据库可以保存中文。两方面无误后保存乱码:在ssh框架配置数据库连接参数后追加 “? useUnicode=true&characterEncoding=UTF-8”如下:jdbc.url
阅读本文

redis 数据库

redis server有很多个数据库空间如下如所示dbnum表示的是数据库的数量,db指针指向的是一个redisdb数组,默认都是16个,每一个都是一个redisdb结构的数据库,redis client结构里面会有一个redisdb的指针,指向的就是其中的一个数据库每一个redisdb里面都有一个字典,指向的就是kv结构。  过期时间和生存时间的问题,我们可以通过设置EXPIRE,PEXPIR
阅读本文

MYSQL性能优化之数据库的分库分表

数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。 说白了,就是分担写负载 分库分表一 节点:mysql数据库一主多从的数
阅读本文

数据库连接池(3)-c3p0

1.任何人都可以实现自己的数据库连接池,但不推荐这么做。这对数据库要求的很高,有许多的细节要考虑。 现在已经又一批非常成熟的数据库连接池产品,如c3p0,DBCP。它们的适用方式大体一样,我们就已c3p0为例子,来学习如何使用数据库连接池。c3p0请求大战机器人的名称。 2.具体使用数据库连接池的jar包。 (1)导入连接池jar包 由于要适用mysql测试,需要把mysql的驱动包导进去
阅读本文

数据库的查询方式

数据库的查询方式 数据库的连接查询分为3种方式 内连接 外连接 左外连接 右外连接 全外连接 自然连接 内连接 内连接有三种表示方式: 1. 方言版(不一定适用于所有数据库) select * from table1 t1, table2 t2 where t1.column1=t2.column2; 上述代码会先将table1的每一行和table2的每一行进行笛卡尔积组合,然后将符合条
阅读本文