事务管理

Spark Streaming的事务处理

为君一笑 提交于 2020-03-12 19:21:29
本期内容 exactly once 输入不重复 输出不重复 exactly once :有且仅被执行一次。(不多,不少,一次刚好) 首先和大家聊下概念: 事务是恢复和 并发控制 的基本单位。 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID特性 。 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。 简单记忆法则(一持原隔) 如:银行转账,A向B转账500元,这个步骤可以分为A扣500元,B加500元 两部分。 如果 A减500元成功后,在B加500元的时候失败了,那么A减掉的500就不生效。也就是说。要么两个操作都成功,要么两个操作都失败。 先了解下SparkStreaming的数据流转流程 数据一致性的要求: 数据源可靠。数据源产生出来后

Ibatis 事务

女生的网名这么多〃 提交于 2020-03-12 16:39:55
一 基于JDBC的事务 针对的是一个JDBC连接实现,不能跨多个数据库连接。如两个操作分别由两个不同的Connection执行,则不能实现 事例: public static void main(String[] args) throws SQLException, IOException { // TODO Auto-generated method stub Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); try{ sqlMapClient.startTransaction(); User user = (User) sqlMapClient.queryForObject("getUser", "test"); System.out.println("id=" + user.getId()); sqlMapClient.commitTransaction(); }finally{ //如果出现异常或没有提交,会进行roll back sqlMapClient.endTransaction(); } } 内部实现原理 MappedStatement

Spring声明式事务管理

我怕爱的太早我们不能终老 提交于 2020-03-12 13:09:26
Spring 的事务管理有两种方式:一种是传统的编程式事务管理,即通过编写代码实现的事务管理;另一种是基于 AOP 技术实现的声明式事务管理。由于在实际开发中,编程式事务管理很少使用,所以我们只对 Spring 的声明式事务管理进行详细讲解。 Spring 声明式事务管理在底层采用了 AOP 技术,其最大的优点在于无须通过编程的方式管理事务,只需要在配置文件中进行相关的规则声明,就可以将事务规则应用到业务逻辑中。 Spring 实现声明式事务管理主要有两种方式: 基于 XML 方式的声明式事务管理。 通过 Annotation 注解方式的事务管理。 我们通过银行转账的案例讲解如何使用 XML 的方式实现 Spring 的声明式事务处理。 1. 创建项目 在 MyEclipse 中创建一个名为 spring 的 Web 项目,将 Spring 支持和依赖的 JAR 包复制到 Web 项目的 lib 目录中,并添加到类路径下。所添加的 JAR 包如下图所示。 从上图中可以看出,这里增加导入了 spring-tx-3.2.13.RELEASE.jar(事务管理),以及 MySQL 驱动、JDBC 和 C3P0 的 JAR 包。 2. 创建数据库、表以及插入数据 在 MySQL 中创建一个名为 spring 的数据库,然后在该数据库中创建一个 account 表,并向表中插入两条数据,其

MySQL相关知识

一世执手 提交于 2020-03-12 11:58:06
目录 1. MySQL背景介绍 2. MySQL发展史 3. MySQL分支介绍 4. MySQL的优点 5. MySQL数据库组成 6. MySQL的原理 7. MySQL执行流程 8. MySQL日志 9. MySQL事务、锁、索引与SQL优化 ## MySQL背景介绍 随着互联网企业的兴起,例如阿里巴巴、网易、Yahoo、Facebook等大型互联网公司的推动,目前Mysql已经成为世界上最流行的数据库,并一步步开始占领了原有商业数据库的市场,目前Mysql已经成为互联网公司甚至部分传统公司的首选数据库。 ## MySQL发展史 最初为AB公司的产品,Mysql5.0及之前的版本均由AB公司管理,在2008年的时候AB公司被Sun公司收购,Mysql也就归属到了Sun公司下,但在Sun还没待多久,Sun公司就被Oracle公司收购了,此期间诞生了一个Sun向Oracle的过渡版本:Mysql5.5(5.1-5.5之间没有发布过版本),直至5.6Mysql就彻底归属于Oracle公司旗下了,从Oracle收购Mysql以来,Mysql发展的速度及新的功能越来越强大,逐步向Oracle靠拢,如:表空间、redo、undo分离、隐藏索引,至2019年,Mysql8.0.15已经GA(官方发布稳定版本),整体发展过程如下(AB版本不做加入): 5.1 → 5.5 → 5.6 → 5

笔记:MySQL相关知识

孤街醉人 提交于 2020-03-12 09:03:48
MySQL背景介绍 MySQL发展史 MySQL分支介绍 MySQL的优点 MySQL数据库组成 MySQL的原理 MySQL执行流程 MySQL日志 MySQL事务、锁、索引与SQL优化 MySQL背景介绍 随着互联网企业的兴起,例如阿里巴巴、网易、Yahoo、Facebook等大型互联网公司的推动,目前Mysql已经成为世界上最流行的数据库,并一步步开始占领了原有商业数据库的市场,目前Mysql已经成为互联网公司甚至部分传统公司的首选数据库。 MySQL发展史 最初为AB公司的产品,Mysql5.0及之前的版本均由AB公司管理,在2008年的时候AB公司被Sun公司收购,Mysql也就归属到了Sun公司下,但在Sun还没待多久,Sun公司就被Oracle公司收购了,此期间诞生了一个Sun向Oracle的过渡版本:Mysql5.5(5.1-5.5之间没有发布过版本),直至5.6Mysql就彻底归属于Oracle公司旗下了,从Oracle收购Mysql以来,Mysql发展的速度及新的功能越来越强大,逐步向Oracle靠拢,如:表空间、redo、undo分离、隐藏索引,至2019年,Mysql8.0.15已经GA(官方发布稳定版本),整体发展过程如下(AB版本不做加入): 5.1 → 5.5 → 5.6 → 5.7 → 8.0 MySQL分支介绍 MySQL 是一个开源数据库

郝斌 SqlServer2005 学习笔记

不打扰是莪最后的温柔 提交于 2020-03-11 23:56:26
1.0 什么是数据库 狭义:存储数据的仓库。 广义:可以对数据进行存储和管理的软件以及数据本身统称为数据库。 另外一种说法:数据库是由表、关系、操作组成。 2.0 为什么要学习数据库 几乎所有的应用软件的后台都需要数据库。 数据库存储数据占用的空间小,容易持久化。 存储比较安全。 容易维护和升级。 数据移植比较容易。 简化对数据的操作。 3.0 数据结构和数据库的区别 数据结构是在系统软件级别研究数据的存储和操作。(内存) 数据库是在应用软件级别研究数据的存储和操作。(外部存储) 4.0 数据库中连接概念 5.0 对内存数据的操作,编程语言更加灵活;对于硬盘数据的操作,通过数据库管理软件更加容易。但是对于复杂的数据操作,当通过数据库语言没法操作时,通常把数据先写入内存通过编程语言处理以后,再存入数据库。 6.0 建议初学者从三个方面学习数据库  数据库是如何存储数据的 字段、记录、表、约束  数据库是如何操作数据的 insert、update、delete、TL-SQL、存储过程、函数、触发器  数据库是如何显示数据的 select(查询) 7.0 创建数据库 8.0 删除数据库 9.0 数据库的备份和还原 10.0 数据库的分离和附加 11.0 用户的创建和密码修改 安全性→登录名 12.0 表以及表相关的基本概念 字段(也叫 列):模拟的是某一个事物的某一个静态的特征。

JPA原理

让人想犯罪 __ 提交于 2020-03-11 17:56:30
事务 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。 本地事务 紧密依赖于底层资源管理器(例如数据库连接 ),事务处理局限在当前事务资源内。此种事务处理 方式不存在对应用服务器的依赖,因而部署灵活却无法支持多数据源的分布式事务。在数据库连 接中使用本地事务示例如下: public void transferAccount() { Connection conn = null; Statement stmt = null; try{ conn = getDataSource().getConnection(); // 将自动提交设置为 false,若设置为 true 则数据库将会把每一次数据更新认定为一个事务并自动提交 conn.setAutoCommit(false); stmt = conn.createStatement(); // 将 A 账户中的金额减少 500 stmt.execute("update t_account set amount = amount - 500 where account_id = 'A'"); // 将 B 账户中的金额增加 500 stmt.execute("update t

如何单独启动wamp 中自带的MySQL

∥☆過路亽.° 提交于 2020-03-11 16:51:03
一、软件环境   python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块。本篇文章我是记录了python操作mysql数据库, mysql数据库下载   由于我之前安装的是wampserver,默认安装了php、mysql和apache这3个环境,因此我没有在单独安装mysql数据库,只是下载了一个mysql管理工具Navicat for MySQL。在使用Navicat for MySQL连接本地mysql数据库时,发生连接失败问题,经过网上查询得知是mysql服务没有启动,如何启动mysql服务请看 如何单独启动wamp 中自带的MySQL 。其实很简单,就是打开命令行,选择目录到mysql数据库的bin目录下,执行mysqld命令即可。   mysql 和mysqld 的区别:   mysqld 是服务端程序   mysql是命令行客户端程序 二、数据库操作   python操作mysql数据库,新增、修改和删除比较简单,都是执行一个简单的sql语句。查询除了执行sql语句外还需要使用 fetchone和 fetchall 来获取数据条目 1 # -*- coding: UTF-8 -*- 2 3 __author__ = 'Administrator' 4 5 import

细嗅Promise

笑着哭i 提交于 2020-03-11 14:59:42
读完这篇文章,预计会消耗你 40 分钟的时间。 Ajax 出现的时候,刮来了一阵异步之风,现在 Nodejs 火爆,又一阵异步狂风刮了过来。需求是越来越苛刻,用户对性能的要求也是越来越高,随之而来的是页面异步操作指数般增长,如果不能恰当的控制代码逻辑,我们就会陷入无穷的回调地狱中。 ECMAScript 6 已经将异步操作纳入了规范,现代浏览器也内置了 Promise 对象供我们进行异步编程,那么此刻,还在等啥?赶紧学习学习 Promise 的内部原理吧! 第一章 了解 Promise 一、场景再现 由于 javascript 的单线程性质,我们必须等待上一个事件执行完成才能处理下一步,如下: // DOM ready之后执行 $(document).ready(function(){ // 获取模板 $.get(url, function(tpl){ // 获取数据 $.get(url2, function(data){ // 构建 DOMString makeHtml(tpl, data, function(str){ // 插入到 DOM 中 $(obj).html(str); }); }); }); }); 为了减少首屏数据的加载,我们将一些模板和所有数据都放在服务器端,当用户操作某个按钮时,需要将模板和数据拼接起来插入到 DOM 中,这个过程还必须在 DOMReady

Oracle索引和事务

。_饼干妹妹 提交于 2020-03-09 20:34:39
Oracle索引和事务 1. 什么是索引?有什么用? 1.索引是数据库对象之一,用于加快数据的检索,类似于书籍的目录。在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息。 2.索引是建立在表上的可选对象;索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率 3.索引在逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表; 4.索引一旦建立,在表上进行DML操作时(例如在执行插入、修改或者删除相关操作时),oracle会自动管理索引,索引删除,不会对表产生影响 5.索引对用户是透明的,无论表上是否有索引,sql语句的用法不变 6.oracle创建主键时会自动在该列上创建索引 2. 索引的底层实现原理 当一列索引创建成功后,oracle系统会这个列复制一个份放入缓存,并按照一定规则做排序和去重,从而减少检索数据的范围。 但是索引不是创建的越多越好,因为一个索引的创建,就需要在缓存中开辟一个空间,过多的索引反而会加重数据库的检索速度。 3. 索引的设计理念 1.某个字段在条件查询中会被高频率的调用 where 条件 2.表关联的连接字段 on 条件 3.实际业务需求 4.索引的创建是不是越多越好?为什么? 1.首先数据量小的表不需要建立索引