热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ACID/CAP/BASE理论

ACID理论原子性事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,要么全部执行,要么全部不执行。任何一项操

ACID理论


原子性

事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,要么全部执行,要么全部不执行

任何一项操作失败都将导致整个事务失败,同时其他已经被执行的操作都将被撤销并回滚。只有所有的操作全部成功,整个事务才算是成功完成。


一致性

事务的一致性是指事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行前后,数据库都必须处于一致性状态。换句话说,事务的执行结果必须是使数据库从一个一致性状态转变到另一个一致性状态。

举个例子

银行的转账操作就是一个事务。假设A和B原来账户都有100元。此时A转账给B50元,转账结束后,应该是A账户减去50元变成50元,B账户增加50元变成150元。A、B的账户总和还是200元。转账前后,数据库就是从一个一致性状态(A100元,B100元,A、B共200元)转变到另一个一致性状态(A50元,B150元,A、B共200元)。假设转账结束后只扣了A账户,没有增加B账户,这时数据库就处于不一致的状态。


隔离性

事务的隔离性是指在并发环境中,并发的事务是相互隔离的,事务之间互不干扰

在标准的SQL规范中,定义的4个事务隔离级别,不同隔离级别对事务的处理不同。4个隔离级别分别是:读未提交、读已提交、可重复读取和串行化。

下表展示了不同隔离级别下事务访问数据的差异


隔离级别脏读可重复读幻读
读未提交存在不可以存在
读已提交不存在不可以存在
可重复读取不存在可以存在
串行化不存在可以不存在

以上4个级别的隔离性依次增强,分别解决不同的问题。事务隔离级别越高,就越能保证数据的完整性和一致性,但同时对并发性能的影响也越大

通常,对于绝大多数的应用来说,可以优先考虑将数据库系统的隔离级别设置为读已提交,这能够在避免脏读的同时保证较好的并发性能。尽管这种事务隔离级别会导致不可重复读、幻读和第二类丢失更新等并发问题,但较为科学的做法是在可能出现这类问题的个别场合中,由应用程序主动采用悲观锁或乐观锁来进行事务控制。


持久性

事务的持久性又称为永久性,是指一个事务一旦提交,对数据库中对应数据的状态变更就应该是永久性的。即使发生系统崩溃或机器宕机等故障,只要数据库能够重新启动,那么一定能够将其恢复到事务成功结束时的状态。


CAP理论

无论你是一个系统架构师,还是一个普通开发,当你开发或者设计一个分布式系统的时候,CAP理论是无论如何也绕不过去的。本文就来介绍一下到底什么是CAP理论,如何证明CAP理论,以及CAP的权衡问题。

CAP理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

 


读者需要注意的的是,CAP理论中的CA和数据库事务中ACID的CA并完全是同一回事儿。两者之中的A都是C都是一致性(Consistency)。CAP中的A指的是可用性(Availability),而ACID中的A指的是原子性(Atomicity),切勿混为一谈。



Consistency 一致性

一致性指“all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致,所以,一致性,说的就是数据一致性,分布式的一致性。

对于一致性,可以分为从客户端和服务端两个不同的视角:

从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。

从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致(比如zk的zab协议中的消息广播)。

一致性是因为有并发读写才有的问题,因此在理解一致性的问题时,一定要注意结合考虑并发读写的场景。

从客户端角度,多进程并发访问时,更新过的数据在不同进程如何获取的不同策略,决定了不同的一致性。

三种一致性策略

对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。

如果能容忍后续的部分或者全部访问不到,则是弱一致性。

如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。

CAP中说,不可能同时满足的这个一致性指的是强一致性。


Availability 可用性

可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。

对于一个可用性的分布式系统,每一个非故障的节点必须对每一个请求作出响应。所以,一般我们在衡量一个系统的可用性的时候,都是通过停机时间来计算的。


可用性分类可用水平(%)年可容忍停机时间
容错可用性99.9999<1 min
极高可用性99.999<5 min
具有故障自动恢复能力的可用性99.99<53 min
高可用性99.9<8.8h
商品可用性99<43.8 min

通常我们描述一个系统的可用性时&#xff0c;我们说淘宝的系统可用性可以达到5个9&#xff0c;意思就是说他的可用水平是99.999%&#xff0c;即全年停机时间不超过 (1-0.99999)*365*24*60 &#61; 5.256 min&#xff0c;这是一个极高的要求。

好的可用性主要是指系统能够很好的为用户服务&#xff0c;不出现用户操作失败或者访问超时等用户体验不好的情况。一个分布式系统&#xff0c;上下游设计很多系统如负载均衡、WEB服务器、应用代码、数据库服务器等&#xff0c;任何一个节点的不稳定都可以影响可用性。


Partition Tolerance分区容错性

分区容错性指“the system continues to operate despite arbitrary message loss or failure of part of the system”&#xff0c;即分布式系统在遇到某节点或网络分区故障的时候&#xff0c;仍然能够对外提供满足一致性和可用性的服务。

分区容错性和扩展性紧密相关。在分布式应用中&#xff0c;可能因为一些分布式的原因导致系统无法正常运转。好的分区容错性要求能够使应用虽然是一个分布式系统&#xff0c;而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了&#xff0c;其他剩下的机器还能够正常运转满足系统需求&#xff0c;或者是机器之间有网络异常&#xff0c;将分布式系统分隔未独立的几个部分&#xff0c;各个部分还能维持分布式系统的运作&#xff0c;这样就具有好的分区容错性。

简单点说&#xff0c;就是在网络中断&#xff0c;消息丢失的情况下&#xff0c;系统如果还能正常工作&#xff0c;就是有比较好的分区容错性。

如上图&#xff0c;是我们证明CAP的基本场景&#xff0c;网络中有两个节点N1和N2&#xff0c;可以简单的理解N1和N2分别是两台计算机&#xff0c;他们之间网络可以连通&#xff0c;N1中有一个应用程序A&#xff0c;和一个数据库V&#xff0c;N2也有一个应用程序B2和一个数据库V。现在&#xff0c;A和B是分布式系统的两个部分&#xff0c;V是分布式系统的数据存储的两个子数据库。

在满足一致性的时候&#xff0c;N1和N2中的数据是一样的&#xff0c;V0&#61;V0。在满足可用性的时候&#xff0c;用户不管是请求N1或者N2&#xff0c;都会得到立即响应。在满足分区容错性的情况下&#xff0c;N1和N2有任何一方宕机&#xff0c;或者网络不通的时候&#xff0c;都不会影响N1和N2彼此之间的正常运作。

如上图&#xff0c;是分布式系统正常运转的流程&#xff0c;用户向N1机器请求数据更新&#xff0c;程序A更新数据库Vo为V1&#xff0c;分布式系统将数据进行同步操作M&#xff0c;将V1同步的N2中V0&#xff0c;使得N2中的数据V0也更新为V1&#xff0c;N2中的数据再响应N2的请求。

这里&#xff0c;可以定义N1和N2的数据库V之间的数据是否一样为一致性&#xff1b;外部对N1和N2的请求响应为可用行&#xff1b;N1和N2之间的网络环境为分区容错性。这是正常运作的场景&#xff0c;也是理想的场景&#xff0c;然而现实是残酷的&#xff0c;当错误发生的时候&#xff0c;一致性和可用性还有分区容错性&#xff0c;是否能同时满足&#xff0c;还是说要进行取舍呢&#xff1f;

作为一个分布式系统&#xff0c;它和单机系统的最大区别&#xff0c;就在于网络&#xff0c;现在假设一种极端情况&#xff0c;N1和N2之间的网络断开了&#xff0c;我们要支持这种网络异常&#xff0c;相当于要满足分区容错性&#xff0c;能不能同时满足一致性和响应性呢&#xff1f;还是说要对他们进行取舍。


假设在N1和N2之间网络断开的时候&#xff0c;有用户向N1发送数据更新请求&#xff0c;那N1中的数据V0将被更新为V1&#xff0c;由于网络是断开的&#xff0c;所以分布式系统同步操作M&#xff0c;所以N2中的数据依旧是V0&#xff1b;这个时候&#xff0c;有用户向N2发送数据读取请求&#xff0c;由于数据还没有进行同步&#xff0c;应用程序没办法立即给用户返回最新的数据V1&#xff0c;怎么办呢&#xff1f;

有二种选择&#xff0c;第一&#xff0c;牺牲数据一致性&#xff0c;保证可用性。响应旧的数据V0给用户&#xff1b;

第二&#xff0c;牺牲可用性&#xff0c;保证数据一致性。阻塞等待&#xff0c;直到网络连接恢复&#xff0c;数据更新操作M完成之后&#xff0c;再给用户响应最新的数据V1。

这个过程&#xff0c;证明了要满足分区容错性的分布式系统&#xff0c;只能在一致性和可用性两者中&#xff0c;选择其中一个。



Consistency 和 Availability 的矛盾

一致性和可用性&#xff0c;为什么不可能同时成立&#xff1f;答案很简单&#xff0c;因为可能通信失败&#xff08;即出现分区容错&#xff09;。

如果保证 G2 的一致性&#xff0c;那么 G1 必须在写操作时&#xff0c;锁定 G2 的读操作和写操作。只有数据同步后&#xff0c;才能重新开放读写。锁定期间&#xff0c;G2 不能读写&#xff0c;没有可用性。

如果保证 G2 的可用性&#xff0c;那么势必不能锁定 G2&#xff0c;所以一致性不成立。

综上所述&#xff0c;G2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求一致性&#xff0c;那么无法保证所有节点的可用性&#xff1b;如果追求所有节点的可用性&#xff0c;那就没法做到一致性。


CAP权衡

通过CAP理论及前面的证明&#xff0c;我们知道无法同时满足一致性、可用性和分区容错性这三个特性&#xff0c;那要舍弃哪个呢&#xff1f;

我们分三种情况来阐述一下。


CA without P

对于一个分布式系统而言&#xff0c;分区容错性可以说是一个最基本的要求。因为既然是一个分布式系统&#xff0c;那么分布式系统中的组件必然需要被部署到不同的节点&#xff0c;否则也就无所谓的分布式系统了&#xff0c;因此必然出现子网络。而对于分布式系统而言&#xff0c;网络问题又是一个必定会出现的异常情况&#xff0c;因此分区容错性也就成为了一个分布式系统必然需要面对和解决的问题。因此系统架构师往往需要把精力花在如何根据业务特点在C&#xff08;一致性&#xff09;和A&#xff08;可用性&#xff09;之间寻求平衡。

比如我们熟知的关系型数据库&#xff0c;如My Sql和Oracle就是保证了可用性和数据一致性&#xff0c;但是他并不是个分布式系统。一旦关系型数据库要考虑主备同步、集群部署等就必须要把P也考虑进来。

其实&#xff0c;在CAP理论中。C&#xff0c;A&#xff0c;P三者并不是平等的&#xff0c;CAP之父在《Spanner&#xff0c;真时&#xff0c;CAP理论》一文中写到&#xff1a;


如果说Spanner真有什么特别之处&#xff0c;那就是谷歌的广域网。Google通过建立私有网络以及强大的网络工程能力来保证P&#xff0c;在多年运营改进的基础上&#xff0c;在生产环境中可以最大程度的减少分区发生&#xff0c;从而实现高可用性。


从Google的经验中可以得到的结论是&#xff0c;无法通过降低CA来提升P。要想提升系统的分区容错性&#xff0c;需要通过提升基础设施的稳定性来保障。

所以&#xff0c;对于一个分布式系统来说。P是一个基本要求&#xff0c;CAP三者中&#xff0c;只能在CA两者之间做权衡&#xff0c;并且要想尽办法提升P。


CP without A&#xff08;强调一致性&#xff09;

如果一个分布式系统不要求强的可用性&#xff0c;即容许系统停机或者长时间无响应的话&#xff0c;就可以在CAP三者中保障CP而舍弃A。

一个保证了CP而一个舍弃了A的分布式系统&#xff0c;一旦发生网络故障或者消息丢失等情况&#xff0c;就要牺牲用户的体验&#xff0c;等待所有数据全部一致了之后再让用户访问系统。

设计成CP的系统其实也不少&#xff0c;其中最典型的就是很多分布式数据库&#xff0c;他们都是设计成CP的。在发生极端情况时&#xff0c;优先保证数据的强一致性&#xff0c;代价就是舍弃系统的可用性。如Redis、HBase等&#xff0c;还有分布式系统中常用的Zookeeper也是在CAP三者之中选择优先保证CP的。

无论是像Redis、HBase这种分布式存储系统&#xff0c;还是像Zookeeper这种分布式协调组件。数据的一致性是他们最最基本的要求。一个连数据一致性都保证不了的分布式存储要它有何用&#xff1f;

ZooKeeper是CP&#xff08;一致性&#43;分区容错性&#xff09;的&#xff0c;即任何时刻对ZooKeeper的访问请求能得到一致的数据结果&#xff0c;同时系统对网络分割具备容错性;但是它不能保证每次服务请求的可用性(注&#xff1a;也就是在极端环境下&#xff0c;ZooKeeper可能会丢弃一些请求&#xff0c;消费者程序需要重新请求才能获得结果)。但是别忘了&#xff0c;ZooKeeper是分布式协调服务&#xff0c;它的 职责是保证数据(注&#xff1a;配置数据&#xff0c;状态数据)在其管辖下的所有服务之间保持同步、一致;所以就不难理解为什么ZooKeeper被设计成CP而不是AP特性的了&#xff0c;如果是AP的&#xff0c;那么将会带来恐怖的后果(注&#xff1a;ZooKeeper就像交叉路口的信号灯一样&#xff0c;你能想象在交通要道突然信号灯失灵的情况吗?)。而且&#xff0c; 作为ZooKeeper的核心实现算法 Zab&#xff0c;就是解决了分布式系统下数据如何在多个服务之间保持同步问题的。


AP wihtout C&#xff08;强调可用性&#xff0c;舍弃强一致性&#xff0c;并保证最终一致性&#xff09;

保证可用性和分区容错性舍弃一致性。这里舍弃的是强一致性&#xff0c;某些应用可以退而求其次的选择最终一致性。


强一致性一般是采用 XA 协议来实现的它采用 2 PC 协议 其中可能涉及到长时间的阻塞而导致系统并发性降低吞吐量急剧下降&#xff0c;无法满足高并发下的场景


所以说很多大型应用都是选择的 AP without C 然后保证最终一致性&#xff0c;比如在淘宝商城购买商品发现还有库存&#xff0c;但是下单支付的时候却提示库存不足&#xff0c;比如在 12306 抢票的时候看到还有票结果支付的时候却提示余票不足&#xff08;相信大家都有过类似体验&#xff09;这样的情况其实无伤大雅。


BASE理论

在上边&#xff0c;我们谈到&#xff0c;因为P总是存在的&#xff0c;放弃不了。另外&#xff0c;可用性、一致性也是我们一般系统必须要满足的&#xff0c;如何在可用性和一致性进行权衡&#xff0c;所以就出现了各种一致性的理论与算法。BASE理论是&#xff1a;BASE是指基本可用&#xff08;Basically Available&#xff09;、软状态&#xff08; Soft State&#xff09;、最终一致性&#xff08; Eventual Consistency&#xff09;。BASE是对CAP中一致性和可用性权衡的结果&#xff0c;其来源于对大规模互联网系统分布式实践的总结&#xff0c;是基于CAP定理逐步演化而来的&#xff0c;其核心思想是即使无法做到强一致性(Strong consistency)&#xff0c;但每个应用都可以根据自身的业务特点&#xff0c;采用适当的方式来使系统达到最终一致性(Eventual consistency)。

在《从Paxos到Zookeeper分布式一致性原理与实践》这本书中&#xff0c;介绍了相关BASE理论&#xff1a;


基本可用&#xff1a;

基本可用是指分布式系统在出现不可预知故障的时候&#xff0c;允许损失部分可用性——但请注意&#xff0c;这绝不等价于系统不可用。以下两个就是“基本可用”的典型例子。


  1. 响应时间上的损失&#xff1a;正常情况下&#xff0c;一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果&#xff0c;但由于出现故障&#xff08;比如系统部分机房发生断电或断网故障&#xff09;&#xff0c;查询结果的响应时间增加到了1&#xff5e;2秒。

  2. 功能上的损失&#xff1a;正常情况下&#xff0c;在一个电子商务网站上进行购物&#xff0c;消费者几乎能够顺利地完成每一笔订单&#xff0c;但是在一些节日大促购物高峰的时候&#xff0c;由于消费者的购物行为激增&#xff0c;为了保护购物系统的稳定性&#xff0c;部分消费者可能会被引导到一个降级页面。


软状态

指的是允许系统中的数据存在中间状态&#xff0c;并认为该中间状态的存在不会影响系统的整体可用性&#xff0c;即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。


最终一致性

最终一致性强调的是系统中所有的数据副本&#xff0c;在经过一段时间的同步后&#xff0c;最终能够达到一个一致的状态。因此&#xff0c;最终一致性的本质是需要系统保证最终数据能够达到一致&#xff0c;而不需要实时保证系统数据的强一致性。

注意&#xff1a;最终一致性是一种特殊的弱一致性&#xff1a;系统能够保证在没有其他新的更新操作的情况下&#xff0c;数据最终一定能够达到一致的状态&#xff0c;因此所有客户端对系统的数据访问都能够获取到最新的值。同时&#xff0c;在没有发生故障的前提下&#xff0c;数据达到一致状态的时间延迟&#xff0c;取决于网络延迟、系统负载和数据复制方案设计等因素。

在实际工程实践中&#xff0c;最终一致性存在以下五类主要变种。

1 因果一致性&#xff08;Causal consistency&#xff09;

因果一致性是指&#xff0c;如果进程A在更新完某个数据项后通知了进程B&#xff0c;那么进程B之后对该数据项的访问都应该能够获取到进程A更新后的最新值&#xff0c;并且如果进程B要对该数据项进行更新操作的话&#xff0c;务必基于进程A更新后的最新值&#xff0c;即不能发生丢失更新情况。与此同时&#xff0c;与进程A无因果关系的进程C的数据访问则没有这样的限制。

2 读己之所写&#xff08;Read your writes&#xff09;

读己之所写是指&#xff0c;进程A更新一个数据项之后&#xff0c;它自己总是能够访问到更新过的最新值&#xff0c;而不会看到旧值。也就是说&#xff0c;对于单个数据获取者来说&#xff0c;其读取到的数据&#xff0c;一定不会比自己上次写入的值旧。因此&#xff0c;读己之所写也可以看作是一种特殊的因果一致性。

3 会话一致性&#xff08;Session consistency&#xff09;

会话一致性将对系统数据的访问过程框定在了一个会话当中&#xff1a;系统能保证在同一个有效的会话中实现“读己之所写”的一致性&#xff0c;也就是说&#xff0c;执行更能操作之后&#xff0c;客户端能够在同一个会话中始终读取到该数据项的最新值。

4 单调读一致性&#xff08;Monotonic read consistency&#xff09;

单调读一致性是指如果一个进程从系统中读取出一个数据项的某个值后&#xff0c;那么系统对于该进程后续的任何数据访问都不应该返回更旧的值。

5 单调写一致性&#xff08;Monotonic write consistency&#xff09;

单调写一致性是指&#xff0c;一个系统需要能够保证来自同一个进程的写操作被顺序地执行。

事实上&#xff0c;最终一致性并不是只有那些大型分布式系统才涉及的特性&#xff0c;许多现代的关系型数据库都采用了最终一致性模型。在现代关系型数据库中&#xff0c;大多都会采用同步和异步方式来实现主备数据复制技术。

1 .在同步方式中&#xff0c;数据的复制过程通常是更新事务的一部分&#xff0c;因此在事务完成后&#xff0c;主备数据库的数据就会达到一致&#xff08;强一致性&#xff09;。

2. 而在异步方式中&#xff0c;备库的更新往往会存在延时&#xff0c;这取决于事务日志在主备数据库之间传输的时间长短&#xff0c;如果传输时间过长或者甚至在日志传输过程中出现异常导致无法及时将事务应用到备库上&#xff0c;那么很显然&#xff0c;从备库中读取的数据将是旧的&#xff0c;因此就出现了数据不一致的情况。当然&#xff0c;无论是采用多次重试还是人为数据订正&#xff0c;关系型数据库还是能够保证最终数据达到一致——这就是系统提供最终一致性保证的经典案例。

总的来说&#xff0c;BASE理论面向的是大型高可用可扩展的分布式系统&#xff0c;和传统事务的ACID特性是相反的&#xff0c;它完全不同于ACID的强一致性模型&#xff0c;而是提出通过牺牲强一致性来获得可用性&#xff0c;并允许数据在一段时间内是不一致的&#xff0c;但最终达到一致状态。但同时&#xff0c;在实际的分布式场景中&#xff0c;不同业务单元和组件对数据一致性的要求是不同的&#xff0c;因此在具体的分布式系统架构设计过程中&#xff0c;ACID特性与BASE理论往往又会结合在一起使用。


推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
author-avatar
台州路桥古筝音乐家教
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有