1. 程式人生 > >探索Oracle11gR2 之 DataGuard_03 三種保護模式

探索Oracle11gR2 之 DataGuard_03 三種保護模式

探索Oracle11gR2 之  DataGuard_03   三種保護模式

作者:吳偉龍

OracleDataGuard技術有三種實現模式,分別是max performancemax availabilitymaxprotection這三種模式。

以下是來自Oracle文件的摘要資訊:
In some situations, a business cannot afford to lose data. In other situations,the availability of the database may be more important than the loss of data.Some applications require maximum database performance and can tolerate somesmall amount of data loss. The following descriptions summarize the threedistinct modes of data protection.

Maximum protection This protection mode ensuresthat no data loss will occur if the primary database fails. To provide thislevel of protection, the redo data needed to recover each transaction must bewritten to both the local online redo log and to the standby redo log on atleast one standby database before the transaction commits. To ensure data losscannot occur, the primary database shuts down if a fault prevents it fromwriting its redo stream to the standby redo log of at least one transactionallyconsistent standby database.

Maximum availability Thisprotection mode provides the highest level of data protection that is possiblewithout compromising the availability of the primary database. Like maximumprotection mode, a transaction will not commit until the redo needed to recoverthat transaction is written to the local online redo log and to the standbyredo log of at least one transactionally consistent standby database. Unlikemaximum protection mode, the primary database does not shut down if a faultprevents it from writing its redo stream to a remote standby redo log. Instead,the primary database operates in maximum performance mode until the fault iscorrected, and all gaps in redo log files are resolved. When all gaps areresolved, the primary database automatically resumes operating in maximumavailability mode.

This mode ensures that no data loss will occur if the primarydatabase fails, but only if a second fault does not prevent a complete set ofredo data from being sent from the primary database to at least one standbydatabase.

Maximum performance This protection mode (thedefault) provides the highest level of data protection that is possible withoutaffecting the performance of the primary database. This is accomplished by allowinga transaction to commit as soon as the redo data needed to recover thattransaction is written to the local online redo log. The primary database'sredo data stream is also written to at least one standby database, but thatredo stream is written asynchronously with respect to the transactions thatcreate the redo data.

When network links with sufficient bandwidth are used, this modeprovides a level of data protection that approaches that of maximumavailability mode with minimal impact on primary database performance.

The maximum protection and maximum availability modes requirethat standby redo log files are configured on at least one standby database inthe configuration. All three protection modes require that specific logtransport attributes be specified on the LOG_ARCHIVE_DEST_n initializationparameter to send redo data to at least one standby database. See Section 5.6for complete information about the data protection modes.

以下是對以上摘要資訊的翻譯資訊:

在一些情況下,業務不允許丟失資料。在另外一些情況下,資料庫的可用性比丟失資料更為重要。一些應用需要最強的資料庫效能並且能容忍丟失少量的資料。下面的描述概述了三種不同的資料保護模式。

最大保護模式 -- 這種保護模式確保如果主資料庫故障不會發生資料丟失要提供這種級別的保護,恢復每個事務所需的重做資料必須在事務提交之前同時寫到本地聯機重做日誌和至少一個備資料庫上的備重做日誌。要確保不發生資料丟失,如果故障導致主資料庫無法寫重做流到至少一個事務一致性備資料庫的備重做日誌時,主資料庫會關閉。

最大可用性模式 -- 這種保護模式提供了可能的最高級別的資料保護,而不用與主資料庫的可用性相折衷。與最大保護模式相同,在恢復事務所需的重做寫到本地聯機重做日誌和至少一個事務一致性備資料庫上的備重做日誌之前,事務將不會提交。與最大保護模式不同的是,如果故障導致主資料庫無法寫重做流到異地備重做日誌時,主資料庫不會關閉。替代地,主資料庫以最大效能模式執行直到故障消除,並且解決所有重做日誌檔案中的中斷。當所有中斷解決之後,主資料庫自動繼續以最大可用性模式執行。

這種模式確保如果主資料庫故障,但是隻有當第二次故障沒有阻止完整的重做資料集從主資料庫傳送到至少一個備資料庫時,不發生資料丟失。

最大效能模式 -- 這種保護模式(預設)提供了可能的最高級別的資料保護,而不影響主資料庫的效能。這是通過允許事務在恢復該事務所需重做資料在寫到本地聯機重做日誌後立即提交而實現的。主資料庫的重做資料流也寫到至少一個備資料庫,但是那個重做流相對於建立重做資料的事務是非同步寫的。

當所用的網路連線有足夠的頻寬,這種模式提供了近似於最大可用性模式的資料保護級別,並且對主資料庫效能的影響最小。最大保護和最大可用性模式需要備重做日誌檔案配置在配置中的至少一個備資料庫上。所有三種保護模式需要在LOG_ARCHIVE_DEST_n 初始化引數上指定特定的日誌傳輸屬性以傳送重做資料到至少一個備資料庫。檢視5.6 節以獲得資料保護模式的完整資訊。

實驗過程:

DG在最大效能模式MAXIMUM PERFORMANCE

SQL> select protection_mode,protection_level from v$database;
 
PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE
 
SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
SALGRADE                       TABLE
 
SQL> create table emp001 as select *from emp;    建立了一張表emp001
 
Table created.
 
SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
SALGRADE                       TABLE

去備機上檢視,這張表並沒有出現:
SQL> select * from tab;
 
TNAME                          TABTYPE CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
SALGRADE                       TABLE

這個時候,我需要在主庫上執行一次日誌切換:
SQL> alter system switch logfile;
 
System altered.
 
再備庫上再次查詢,表已經出來:
SQL> /
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE    ----在主庫新建立的表
SALGRADE                       TABLE


DG在最大可用性模式Maximum availability

Primary端操作

修改初始化引數
SQL> alter system set log_archive_dest_2='SERVICE=sty OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=sty';
 
System altered.
 
SQL> show parameter log_archive_dest_2
 
NAME                                 TYPE        VALUE
----------------------------------------------- ------------------------------
log_archive_dest_2                   string      SERVICE=sty OPTIONAL LGWR SYNC
                                                 AFFIRM VALID_FOR=(ONLINE_LOGF
                                                ILES,PRIMARY_ROLE) DB_UNIQUE_N
                                                 AME=sty
SQL> startup mount;
ORACLE instance started.
 
Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             549455864 bytes
Database Buffers          285212672 bytes
Redo Buffers                2396160 bytes
Database mounted.
 
SQL> alter database set standby databaseto maximize availability;
 
Database altered.
提示:maximize後可跟{PROTECTION | AVAILABILITY | PERFORMANCE},分別對應最大保護,最高可用性及最高效能。

Down掉資料庫,重新啟動

SQL> alter database open;
 
Database altered.
 
看一下當前的保護模式    --primary資料庫操作
SQL> select protection_mode,protection_level from v$database;
 
PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
 
SQL>


Standby端操作

SQL> alter system set log_archive_dest_2='SERVICE=pri OPTIONAL LGWR SYNCAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pri';
 
System altered.
 
SQL> show parameter log_archive_dest_2
 
NAME                                 TYPE        VALUE
----------------------------------------------- ------------------------------
log_archive_dest_2                   string      SERVICE=pri OPTIONAL LGWR SYNC
                                                 AFFIRM VALID_FOR=(ONLINE_LOGF
                                                 ILES,PRIMARY_ROLE)DB_UNIQUE_N
                                                AME=pri
 
SQL> selectprotection_mode,protection_level from v$database;
 
PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
 
SQL>


這樣就已經配置完成了。

我們現在停掉standby資料庫,再看看primary資料庫狀態

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
 
SQL> selectprotection_mode,protection_level,name from v$database;
 
PROTECTION_MODE      PROTECTION_LEVEL     NAME
-------------------- ------------------------------
MAXIMUM AVAILABILITY RESYNCHRONIZATION    WOO
Standby資料庫shutdown後,primary資料庫保護級別切換為待同步。

啟備機器後,一會兒就好了:

SQL> startup
ORACLE instance started.
 
Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             507512824 bytes
Database Buffers          327155712 bytes
Redo Buffers                2396160 bytes
Database mounted.
Database opened.
SQL> selectprotection_mode,protection_level,name from v$database;
 
PROTECTION_MODE      PROTECTION_LEVEL     NAME
-------------------- ----------------------------------------------------------------------
MAXIMUM AVAILABILITY RESYNCHRONIZATION    WOO
 
SQL> selectprotection_mode,protection_level,name from v$database;
 
PROTECTION_MODE      PROTECTION_LEVEL     NAME
-------------------- ----------------------------------------------------------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITYWOO
 
SQL>
再檢視下主庫狀態:
SQL> selectprotection_mode,protection_level,name from v$database;
 
PROTECTION_MODE      PROTECTION_LEVEL     NAME
-------------------- ------------------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITYWOO

測試:

在primary 執行建立表

  檢視當前表的數量

SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                        TABLE
EMP003                         TABLE
SALGRADE                       TABLE
 
6 rows selected.

刪除emp003表
SQL> drop table emp003 purge;
 
Table dropped.

建立emp004表
SQL> create table emp004 as select *from emp001;
 
Table created.

檢視emp003表已經被刪除,emp004表被建立成功。
SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP004                         TABLE
SALGRADE                       TABLE
 
6 rows selected.
備庫上資料直接就可以過來了:

查詢到資料和第一次pry資料庫一致:

SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP003                         TABLE
SALGRADE                       TABLE
 
6 rows selected.

在pri端刪除emp003後,可以看到在sty端也隨即刪除。
SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
SALGRADE                       TABLE

在pri端建立emp004後,在sty端也隨即實時建立。
SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP004                         TABLE
SALGRADE                       TABLE
 
6 rows selected.
 
SQL>

實驗二,在maximum availability 模式下關閉standby端,在主庫執行DML操作後起備庫,是否會有資料丟失:

1、  關閉standby端:

[[email protected] ~]# shutdown -h now
 
Broadcast message from root (pts/1) (TueMay 21 02:09:34 2013):
 
The system is going down for system haltNOW!
[[email protected] ~]#
 


2、  檢視主庫這個時候的狀態,已經檢測到了standby失敗

SQL> selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;
 
NAME                           OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      SWITCHOVER_STATUS
-------------------------------------------------- ---------------- -------------------- --------------------
WOO                            READ WRITE           PRIMARY          MAXIMUM AVAILABILITY FAILEDDESTINATION
 
SQL>


3、  這個時候我們刪除emp004及建立emp005

SQL> select * from tab;
 
TNAME                          TABTYPE CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP004                         TABLE
SALGRADE                       TABLE
 
6 rows selected.
 
SQL> drop table emp004 purge;
 
Table dropped.
 
SQL> create table emp005 as select *from emp001;
 
Table created.
 
SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP005                         TABLE
SALGRADE                       TABLE
 
6 rows selected.
 


4、  把sty伺服器啟起來,open資料庫:

開啟備庫後,我們可以看到,standby現在正在應用日誌:

SQL> select process, status fromv$managed_standby;
 
PROCESS  STATUS
--------- ------------
ARCH     CLOSING
ARCH     CLOSING
ARCH     CONNECTED
ARCH     CLOSING
RFS      IDLE
RFS      IDLE
RFS      IDLE
MRP0     APPLYING_LOG
 

過一會兒,我們再查詢,發現standby 端宕機過程中primary端資料庫的改變也同樣通過日誌更新過來了。
SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------ -----------------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP005                         TABLE
SALGRADE                       TABLE
 
6 rows selected.


 我們通過這個實驗可以看出,將DataGuard配置為Maximumavailability模式後,pri資料是實時同步到sty端。

1、將主庫修改為最大保護模式

先關閉主庫
SQL>shutdown immediate
Databaseclosed.
Databasedismounted.
ORACLEinstance shut down.
 啟動到mount狀態
SQL>startup mount;
ORACLEinstance started.
 
TotalSystem Global Area  839282688 bytes
FixedSize                  2217992 bytes
VariableSize             557844472 bytes
DatabaseBuffers          276824064 bytes
RedoBuffers                2396160 bytes
Databasemounted.
 
 修改為最大保護模式
SQL>alter database set standby database to maximize protection;
 
Databasealtered.
 
Open資料庫
SQL>alter database open;
 
Databasealtered.
 

Primary端查詢狀態:

SQL>select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;
 
NAME                           OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      SWITCHOVER_STATUS
-------------------------------------------------- ---------------- -------------------- --------------------
WOO                            READ WRITE           PRIMARY          MAXIMUM PROTECTION   TO STANDBY


Standby端查詢狀態(切換隻需要操作主庫,備庫不需要動即可)

SQL>select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;
 
NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      SWITCHOVER_STATUS
----------------------------- ---------------- -------------------- --------------------
WOO       READ ONLY WITH APPLY PHYSICAL STANDBYMAXIMUM PROTECTION   NOT ALLOWED
 

我們現在可以看到,primary和standby端現在都為Maximumprotection 最大保護模式。

實驗

先檢視當前的表

SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------------- ----------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP005                         TABLE
SALGRADE                       TABLE
 
6 rows selected.

我們刪除emp005以及建立emp006表
SQL> drop table emp005 purge;
 
Table dropped.
 
SQL> create table emp006 as select* from emp001;
 
Table created.
 

我們可以看到emp005已經被刪除,並且emp006表也被建立好了。

SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------------- ----------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP006                         TABLE
SALGRADE                       TABLE
 
6 rows selected.
 
SQL>
現在看standby端,我們可以發現如下

兩邊的表是一樣的

SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------------- ----------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP005                         TABLE
SALGRADE                       TABLE
 
6 rows selected.

在主庫端刪除的emp005及新建立的emp006也實時同步過來了

SQL> select * from tab;
 
TNAME                          TABTYPE  CLUSTERID
------------------------------------- ----------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP001                         TABLE
EMP006                         TABLE
SALGRADE                       TABLE
 
6 rows selected.
 
SQL>

我現在關閉sty端伺服器: 
[[email protected] ~]# shutdown -h now
 
Broadcast message from root (pts/1)(Tue May 21 03:14:28 2013):
 
The system is going down for systemhalt NOW!
 


返回來看主庫的狀態:

 日誌傳輸以及終止了:

Log Transport Services   Error        ORA-16198: LGWR received timedout error from KSR
Log Transport Services   Error        Error 12543 received logging on to the standby
Log Transport Services   Error        LGWR: Error 12543 attaching to RFS for reconnect
Log Transport Services   Error        Error 12543 received logging on to the standby
Log Transport Services   Error        LGWR: Error 12543 attaching to RFS for reconnect
 


 一段時間之後,primary端也宕機了:

SQL> selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;
 
NAME                                    OPEN_MODE           DATABASE_ROLE   PROTECTION_MODE      SWITCHOVER_STATUS
------------------------------------------------------------ ---------------- -------------------- --------------------
WOO                                      READWRITE           PRIMARY          MAXIMUM PROTECTION   TO STANDBY
 
SQL> selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;
selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 8386
Session ID: 39 Serial number: 5

這個時候需要把standby端起來,primary端,資料庫才能起來。
SQL> startup mount;
ORACLE instance started.
 
Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             507512824 bytes
Database Buffers          327155712 bytes
Redo Buffers                2396160 bytes
Database mounted.

停止redo應用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASECANCEL;
Database altered.

Open資料庫
SQL> alter database open;
 
Database altered.

開啟redo應用
SQL> ALTER DATABASE RECOVER MANAGEDSTANDBY DATABASE DISCONNECT FROM SESSION;

Database altered.

Database altered.再啟主庫
SQL> startup
ORACLE instance started.
 
Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             507512824 bytes
Database Buffers          327155712 bytes
Redo Buffers                2396160 bytes
Database mounted.
Database opened.

最後我們一塊來看一個表格,一目瞭然的清楚DG三種模式的區別:

最大保護模式

最大可用

最大效能

程序

LGWR

LGWR

LGWR或ARCH

網路傳輸模式

SYNC

SYNC

LGWR時設定SYNC

磁碟寫操作

AFFIRM

AFFIRM

NOAFFIRM

備用日誌

Yes

Phycal 備庫需要

LGWR和物理需要

備用庫型別

Phycal mode

Phycal and logical

Phycal and logical

相關推薦

探索Oracle11gR2 DataGuard_03 保護模式

探索Oracle11gR2 之  DataGuard_03   三種保護模式 作者:吳偉龍 Oracle的DataGuard技術有三種實現模式,分別是max performance、max availability、maxprotection這三種模式。 以下是來自Or

聊聊Dataguard的保護模式實驗

http://blog.itpub.net/17203031/viewspace-1821550/ Data Guard是Oracle高可用性HA的重要解決方案。針對不同的系統保護需求,DG提供了三種不同型別的保護模式(Protection Mode),分別

dataguard 保護模式

1、最大保護           這種保護模式在主庫出現問題時不會有資料的丟失,為了提供這種保護模式,一個事物必須同時寫本地的online redo log,和至少一個備庫的redo log同步,才能commit;   為了確保資料不會丟失,如果備庫至少有一個日誌不能寫入,

聊聊Dataguard的保護模式實驗(上)

保護模式(Protection Mode),分別為:最大保護(Maximum Protection)、最大可用(Maximum Availability)和最大效能(Maximum performance)。在實際應用場景下,我們需要根據不同的業務場景和資料可用性需求,來設定

通過fsharp 使用Enterprise Library Unity 3 - 攔截模式探索

clean stc ane adding clas 是什麽 idc 內部函數 ash 這篇就三種攔截模式進行一下探索。 特性總結 類型 特點 其它 InterfaceInter

Linuxvi模式常用操作

num 快捷 字母 內容替換 info tar linux 刪除 光標 vi的三種模式:命令模式、編輯模式、尾行模式 一.命令模式   1.光標移動     a、字符級       左(h)  下(j)  上(k)  右(l)     b、單詞級       w wor

Java程式設計師從笨鳥到菜鳥十二)大話設計模式(二)設計模式分類和工廠模式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java設計模式工廠模式 -- 總是忘記,這次把你記下來!

}   interfaceIProduct1 {   public void show(); } interfaceIProduct2 {   public void show(); } classProduct1 implements IProduct1 {   public void show() {

hadoop初識:搭建hadoop環境(配置HDFS,Yarn及mapreduce 執行在yarn)上及執行模式(本地模式,偽分散式和分散式介)

--===============安裝jdk(解壓版)================== --root 使用者登入 --建立檔案層級目錄    /opt下分別 建 modules/softwares/datas/tools 資料夾 --檢視是否安裝jdk    rpm -

Centos7Apache的工作模式

滿足 read 高流量 event 也有 聲明 vpd 問題 出現 Apache工作模式簡介 Apache 2.X 支持插入式並行處理模塊,稱為多進程處理模塊(MPM)。在編譯apache時必須選擇也只能選擇一個MPM,對類UNIX系統,有幾個不同的MPM可供選擇,它們會

web優化必須瞭解的原理I/o的五模型和web的工作模式

=========================================== 圖解五種I/O模型 圖解web支援的三種工作模式 ===========================================  五種I/O:  1)阻塞I

171129Java的代理模式

1:代理模式 代理(Proxy)是一種設計模式,提供了對目標物件另外的訪問方式,即通過代理物件訪問目標物件。這樣做的好處是,可以在目標物件實現的基礎上,增加額外的功能操作,即擴充套件目標物件的功能。 這裡使用到程式設計中的一個思想:不要隨意去修改別人已經寫好

APP開發模式----HybridApp解決方案

原文:http://www.cnblogs.com/yeahui/p/5026587.html 1.1.     APP三種開發模式 智慧手機之普及不用多說,手機APP滲投到各個行業:電商(淘寶、京東等)、金融(各手機行業、P2P借貸等)、醫療(智慧醫療)、交通(滴滴、Uber等)、教育(慕課網等)

Entity Framework技術系列2:開發模式實現資料訪問

前言 Entity Framework支援Database First、Model First和Code Only三種開發模式,各模式的開發流程大相徑庭,開發體驗完全不一樣。三種開發模式各有優缺點,對於程式設計師沒有哪種模式最好,只有哪種模式更適合。接下來我將分別使用這

設計模式工廠模式(JAVA)

bsp ati int abs @override 手機 分配 ron size 一:簡單工廠: 有一個實際工廠,這個工廠只能造一類的產品,這一類產品就是一個產品接口,會有多個具體產品實現這個接口,例 如,一個手機廠,生產蘋果手機,三星手機;

Java的代理模式

value 增加方法 三種 原始的 攔截 tro asm 必須 額外 1.代理模式 代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;即通過代理對象訪問目標對象.這樣做的好處是:可以在目標對象實現的基礎上,增強額外的功能操作,即擴展目標對象的功能.這裏使用到

apache的工作模式

httpdweb服務器Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模式)它們分別是prefork、worker和event,它們同時也代表這Apache的 演變和發展使用httpd -V命令查看Apache的工作模式,如我安裝的httpd-2.2版本[[e

EF3:Entity Framework開發模式實現數據訪問

支持 代碼 sql blog flow cli guid 自動完成 main 前言 Entity Framework支持Database First、Model First和Code Only三種開發模式,各模式的開發流程大相徑庭,開發體驗完全不一樣。三種開發模式各有優缺

雲計算的服務模式:IaaS,PaaS和SaaS

雲服務 互聯網 src 部分 stand googl 而且 vnc rackspace   雲服務”現在已經成了一個家喻戶曉的詞了。如果你不知道PaaS, IaaS 和SaaS的區別,那麽也沒啥,因為很多人確實不知道。  “雲”其實是互聯網的一個隱喻,“雲計算”其實就是使用

PHP常用的設計模式

寫代碼 comment 獲得 return interface 高級 對象 檢測 mys 本文為大家介紹常用的三種php設計模式:單例模式、工廠模式、觀察者模式,有需要的朋友可以參考下。 一、首先來看,單例模式 所謂單例模式,就是確保某個類只有一個實例,而且自行實例化並向整