首先用一句话总结要辨析的5中范式分别解决的问题:
1NF:属性原子性
2NF:部分依赖
3NF:传递依赖(非主属性对关键码)
BCNF:传递依赖(主属性对候选键)
4NF:(最高级别的范式,不常用这里引用定义)D是R上成立的FD和MVD集合,并且D中每个非平法的X→→Y的左部X都是R的超键
其中第一范式,画图省略。第四范式不常用画图省略。
2NF如下:
3NF:
...
分类:
其他好文 时间:
2014-10-22 01:08:01
阅读次数:
257
2014-10-1609:56:37目标:全文搜索 使用SQL搜索关键字,同时保证快速和精确,依旧是相当地困难。 SQL的一个基本原来(以及SQL所继承的关系原理)就是一列中的单个数据是原子性的。反模式:模式匹配 使用Like 或者正则表达式。 缺点:(1)无法使用索引,进行全...
分类:
数据库 时间:
2014-10-16 14:14:02
阅读次数:
225
本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游
00 – Undo Log
Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。
- 事务的原子性(Atomicity)
事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发生
...
分类:
数据库 时间:
2014-10-15 16:09:01
阅读次数:
241
如果把事务管理比喻成一块砖的话,那么数据库管理就是一座房子,可见,事务管理是数据管理的基础并且它们有着紧密的联系。下面我先从宏观上介绍一下事务管理与数据库的管理。
一、导图宏观把控
事务是构成单一逻辑单元的工作集合,要么完全执行,要么完全不执行。它有四个性质,隔离性,它与数据管理的并发控制有关;持久性,它与数据库管理的恢复有关;原子性和一致性,他俩是数据库中的安全性与完...
分类:
数据库 时间:
2014-10-14 23:03:59
阅读次数:
260
AQS的设计思想是通过继承的方式提供一个模板让大家可以很容易根据不同场景实现一个富有个性化的同步器。同步器的核心是要管理一个共享状态,通过对状态的控制即可以实现不同的锁机制。AQS的设计必须考虑把复杂重复且容易出错的队列管理工作统一抽象出来管理,并且要统一控制好流程,而暴露给子类调用的方法主要就是操作共享状态的方法,以此提供对状态的原子性操作。一般子类的同步器中使用AQS提供的getState、s...
分类:
编程语言 时间:
2014-10-13 22:48:57
阅读次数:
249
满足同步需求的另一种方法是使用不可变对象(Immutable Object)。到目前为止,我们介绍了许多与原子性和可见性相关的问题,例如得到失效数据,丢失更新操作或光查到某个对象处于不一致的状态等等,都与多线程视图同时访问同一个可变的状态相关。如果对象的状态不会改变,那么这些问题与复杂性也就自然消失了。
如果某个对象在被创建后其状态就不能被修改,那么这个对象就被成为不可变对象。线程安全型是不可变对象的固有属性之一,他们的不变性条件是由构造函数创建的,只要他们的状态不改变,那么这些不变性条件就...
分类:
编程语言 时间:
2014-10-12 23:49:08
阅读次数:
326
在研究AQS框架时,会发现这个类很多地方都使用了CAS操作,在并发实现中CAS操作必须具备原子性,而且是硬件级别的原子性,java被隔离在硬件之上,明显力不从心,这时为了能直接操作操作系统层面,肯定要通过用C++编写的native本地方法来扩展实现。JDK提供了一个类来满足CAS的要求,sun.misc.Unsafe,从名字上可以大概知道它用于执行低级别、不安全的操作,AQS就是使用此类完成硬件级...
分类:
编程语言 时间:
2014-10-11 22:52:56
阅读次数:
321
ACID在传数据库系统中,事务具有ACID 4个属性(Jim Gray在《事务处理:概念与技术》中对事务进行了详尽的讨论)。(1) 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。(2) 一致性(Consistent):在事务开始和完成时,数据都必...
分类:
其他好文 时间:
2014-10-11 16:24:55
阅读次数:
323
昨天完成了无锁队列的实现,然后思考了一下锁的原理,锁的核心无非是保证有一个变量需要被原子性地更新,比如,我们用一个bool x,表示锁,当我们获取锁的时候,我们需要保证的是锁能够只在同一时间被多个线程中的一个线程去读取和更新,在逻辑上有如下的代码:
bool GetLock(bool& x){
if(x){
x= false;
...
分类:
其他好文 时间:
2014-10-10 20:34:04
阅读次数:
198
事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体如下:1. 原子性(Atomic) 一个事务包含多个操作,这些操作要么全部执行,要么全都不执行。实现事务的原子性,要支持回滚操作,在某个操作失败后,回滚到事务执行之前的状态。 回滚实际上是一个比较高层抽象的概念,大.....
分类:
其他好文 时间:
2014-10-10 18:50:24
阅读次数:
206