顯示具有 Database 標籤的文章。 顯示所有文章
顯示具有 Database 標籤的文章。 顯示所有文章

2016年10月17日 星期一

About Citrix Database Migrate


在Databese老舊或汰換可能情況下,很多客戶會考慮Database的移機。

如果以Citrix架構來說,會建議從幾個面向來考慮。
1. 舊有伺服器Database是否有定期備份;如果沒有,移機前務必先備份。虛擬機建議snapshot一併執行。

2. 是否為異質平台的移機,如果僅是MS-SQL舊版轉移到MS-SQL新版,通常不會面臨太大的挑戰。例如Oracle轉移到MS-SQL,建議使用備份檔先做測試。

3. 是否有足夠的停機時間,需要下指令讓DB轉置,會停止IMAService一段時間,並再恢復服務後進行測試,如果停機時間不足,或者不允許長時間停機,可以考慮直接建立新的Database而非移機。

4. Farm內發布Application的數量是否為大量,或者僅是少量發布。如果是大量發布,那Database的移機需要長時間規劃跟測試;如果是少量App,建議直接重建Database而不移機;優點是,可以在服務不中斷的情況下提供測試和切換,比起移機來說風險比較低。

5. Citrix 的Database本質上不會面臨到IOPS的問題,因為只負責存放Application相關的設定資料,發派給那些人或群組權限為何,大多脫離不了這圈子。如果Databse有問題或短期離線,會造成無法修改應用程式設定的情況,但是不至於馬上衝擊服務,因為XA Server會有相關的XML暫存文件會描述這些事情,除非使用者從未使用過相關應用程式沒有留下XML快取。
因此,針對Citrix Databse安裝可以放在VM上面,未必要使用實體機。

2015年1月23日 星期五

Nimble Storage Training Certification


上周五去了台北恆逸上了 Nimble Storage Training,取得兩張 Pre-sale 兼 Engineer 的證書。未來公司打算代理這項產品,接下來就是 Nimble Storage 會在北中南各召開現場實機體驗的展示會,到時候再體驗看看 Nimble Storage 在Database 的 IOPS 上面使用CASL技術到底有多驚人的效能進展。



2014年9月26日 星期五

虛擬化的除錯(Troubleshooting)和規劃評估


今天來談談不一樣的領域 虛擬化的除錯(Troubleshooting)和規劃評估,眼下不可能說只懂網路,其他系統類技術都放生,這樣你一定會被老闆視為不及格。現在一台沒有辦法連網的伺服器已經不存在了,因為沒辦法連上網路的伺服器,代表它無法提供任何服務,沒有產出價值。所以你也不可能只懂系統,網路一概不管…。

虛擬化過後,實虛對應非常重要,網路跟系統跟是無法分家的。不管是ESXi(VMware家族)XenServer(Citrix家族)Hyper-V(Microsoft家族),都沒有辦法說架設一台沒有網路卡的虛擬化平台,所以各家的虛擬化底層都被要求要有支援的網卡,而且最好不只一張。

昨天晚上,我的好友問我,

我覺得我公司系統上的載台Guest OS回應速度慢,我懷疑有可能是NAT或是網路設備端點有問題,但是內連外很快、外連內很慢,這有可能是甚麼問題? 

首先,這問題很複雜…,而且答案可能是多重解。



第一、 釐清速度慢的原因


User、老闆都沒有你懂,他們很可能只能提供給你情況,而不知道細節…。

User最喜歡說,
”我覺得我網路好慢,你能不能想辦法讓他快點…”
”我時常連不上我要的服務…”

慢可能有很多種原因,User ClientServer,可以一步一步來看:

1.     是不是User電腦本身就慢?這點很簡單可以驗證,如果他隔壁鄰居用感覺沒有特別慢或是還算快速,就表示這問題癥結點出在Client PC。代表你有可能要幫他掃毒、清除電腦上垃圾、清出記憶體和CPU資源…。

2.     端點到端點,慢在哪一段?一台組織內設備要連網存取外部網路或內部伺服器,一定穿越不只一台網路設備,如果同一段網路的8-9成使用者都反應網路慢,可以推測可能這一段網路到外部或到伺服器的Farm有問題。可以先嘗試Pathping, Tracert這兩個指令去檢測各端點的Response Time是否符合預期,如果某端點有嚴重延遲,或是封包遺失率很高,不排除就是該端點造成的問題,後續你就可以檢查那台設備的狀態,例如:燈號、Port、封包交換情況。

3.     連不上,有沒有可能是Session數不夠?這可以在伺服器端作檢視。尤其某一些File System,他連線還沒Timeout前,Session(工作階段)都還會儲存在Server上,你可以寫BAT去定時執行踢人這動作,或者是修改機碼參數等,讓伺服器把Timeout時間縮短,我曾經幫國科會的Share File伺服器做過類似的設定,以避免有大量User跟你反應我連不上檔案伺服器這種鳥事。當然,如果是網路設備的Seesion數不夠,你就有可能要更換或是考慮新增網路設備,但是老闆通常會要求你拿出數據來證實這件事,每一家網路設備看Session數的方式不同,最好先看一下Tool跟指令怎麼下,撈出點數據好跟老闆要錢。

4.     有沒有可能是頻寬不夠?我會建議各位監測主要端口的網路流量,不管你要用軟體來做,還是要用程式固定去跑指令幫你撈報表,這些都可以。不過網路流量監測在重要伺服器跟重點網路設備上很重要,國科會用來監測網路流量的軟體是Whatsup。頻寬不夠,優先考慮使用Teaming來解決(檢查網路跟伺服器是否支援IEEE 802.3ad),把實體線路頻寬綁一綁讓頻寬變高;如果不支援此項作法,請考慮購入一台有此功能的網路設備或Server

5.     有沒有可能是虛擬化後的伺服器不夠快?這也是有可能的,虛擬化後,我會建議各位保持定時監看虛擬化後的CPU跟記憶體使用量,如果伺服器顛峰期間的使用量超過七成以上,你就要考慮幫虛擬機配給更多的vCPURAM空間。

6.     有沒有可能是DatabaseStorage的問題?這個問題,很多不是SI界的人會不知道。資料庫不建議做虛擬化,你的SQL Server可以使用虛擬機,但是你的儲存空間一定得是實體機。為什麼?因為虛擬機沒有辦法讓RAID Card優先處理Database的讀取跟寫入,IOPS(Input/Output Per Second)會被一堆亂七八糟不重要的工作瓜分掉。還有一個方法就是把整櫃的HD換成SSD;或者是額外多買幾顆SSD來當HD Cache,這方法也是可以的,但是如果公司是處理Big Data的,恐怕就不適合。國科會沒有任何一台DB是虛擬機,連測試機DB都是汰換下來的ServerPC來做。

7.     監控DB我也曾經遇到DB容量已經額滿的問題(硬碟空間剩下5-10%就要處理了,剩下2%就等著服務停止),所以即時監控DB容量是絕對必要的事情,別讓User反應資料表無法送出讓DBA跳腳,這工作是必要的一環。國科會還有同步監測DBDeadlock,如果DB產生Deadlock,請儘速通知該DBDBA來處理。關於這點,由於本人會寫Code,如果你懂SQL,應該要據以力爭別讓Programmer下一些大量運算的SQL語法,搞死DBA同時弄死你的DB,什麼加減乘除四則運算都讓DB算…,你要跟PMProgrammer溝通,運算這件事情應該回到程式內去解決,必要時巴結一下社交手段也是很重要的…。順便提一下,像是中鋼這種DB2規模大小的公司,甚至連Select *這樣開頭的SQL語法都無法被接受,每一筆資料有上百欄位,你下Select *抱歉!資料庫很可能完全不會鳥你。

8.     釐清是哪一種服務慢,如果是所有服務都慢,有可能是整個虛擬機或是實體的問題,但如果只有特定服務慢,你就必須檢查該服務是不是很重視即時回應(Real-time Service),例如網路電話,這種僅能支持低延遲的服務。如果是這類型的服務,你必須要流量穿越網路設備時給予較高的Priority,甚至是作QoS來保障服務的頻寬跟品質。

第二、檢查你的網路工作排程


不要讓那些會使用到網路顛峰流量的工作在一般上班時間被執行,尤其是網路備份或資料庫搬移之類的工作。還有,同時也要阻止你的User做這些事情,不要讓他們有機會在上班時間傳輸大量的多媒體資料或者是透過網路交換HD 1080P的片子、使用BT下載等,不然網路不慢才有問題。

第三、從架構著手嘗試改善網路速度,降低網路hop


這會是一個相對浩大的工程,如果你知道瓶頸頻寬卡在某條主幹上,那這個會是你最後的解答。網路線換成光纖,確保光纖通道上的設備有支援光纖連接跟1Gbps的網路連接埠,讓端點到端點的實體速度變快,必要時搭配LCAP(IEEE 802.3ad)來做。國科會就曾經將主幹頻寬擴增一倍,只是這個工程施工必須要公告並且挑離峰時間來做,服務會有中斷。

第四、停止不必要的監控


上述講到很多監控很重要,但是要細分還是排得出重要性,測試機可以不考慮監控,Production或重要的應用服務一定要監控,例如:AD服務跟DNS服務是否存活、DB容量、重要端點網路流量。不管你監控了些甚麼,越接近即時監控的服務就越吃網路的頻寬,監控越多項目就代表你網路效能會有很大一部分被監控給吃掉,而這些監控是沒有產出的;”他們正常是應該,它們不正常是活該…”,老闆認知通常是這樣,所以請拿捏好分寸。同時配合監控的項目還有警告或警報系統,你可以擬定一些規則出來,例如:某些伺服器或服務中止發出手機簡訊或EmailDB容量低於10%通知DBAMIS…諸如此類工作。

第五、任何的採購或設計優先考慮HA(High Availability)


在導入任何軟硬體之前,先想想沒有他會不會怎樣?很多MIS在購入時,只考慮了”有了他超方便,我很爽”就買進來了,不會考慮如果”沒有他,會不會想要跳江?” 架構跟規劃關係著公司存亡的,更要好好考慮,服務有沒有需要Cluster(叢集)、有沒有Failover(容錯移轉)的機制、有沒有負載平衡(Load Balance)的機制,如果上述都沒有,最糟糕的情況下 Service Recovery要多久時間?這些都要先計算,如果這服務無關存亡也就算了,關係生死存亡的我建議你最好買雙保險甚至是三保險(例如:DNS服務)DNS有多重要?國科會曾經因為DNS查詢錯誤,導致停擺某些網頁不只三天時間,如果你公司網頁也能接受停擺三天…;就像是馬雲能不能接受淘寶停止服務一小時?先問看看公司接受度,再問看看自己管理上有沒有問題。

不要盲從追求最新的技術,很多東西一出市場,別說HA了,連Reliability(可靠度)都備受質疑,這些東西在評估階段就要否決,不要高層心血來潮,你就捨命陪君子…,最好寫一篇報告告訴他,你為何”現階段”拒絕這樣的東西導入公司。

2013年11月29日 星期五

程式設計專案


如果按系統發展生命周期(System Developement Life Cycle, SDLC)進行而非雛型法(Prototyping)去進行。

首先按文件會產生BPP(Baseline Project Plan)基準專案計畫
通常在與使用者討論需求的時候就會產生SPEC,我們稱為需求規範書的東西,然後藉由SPEC跟使用者溝通結果,產出對應的BPP,被稱為基準專案計畫。

基準專案計畫通常必須經過冗長的會議跟使用者(User)需求確認後,包含什麼功能是必要(Requirement)、需要(Need)、想要(Want)區分功能重要的層級外;最重要在於由專案管理者(Project Manager, PM)主持會議,與會的系統分析師(System Analyst, SA)與資料庫管理者(Database Administrator, DBA)和程式設計師(Programmer)一同討論並分工。

通常基準專案計畫,會包含甘特圖(Gantt Chart)標明時間行程,確認檢核點時間(Check Point),例如何人何時應該交付相對應的程式碼並交由測試人員(Debuger)測試。
系統架構上,會先繪出實體關連圖(Entity Relationship Diagram, ERD),然後衍生出資料關連圖(Data Relationship Diagram, DRD),經過判斷跟去蕪存菁之後,進行正規化(Normalization)通常會至少進行1NF(第一階正規化)與2NF(第二階正規化)後建立資料庫,並確認資料欄位,包含決定主鍵(Primary Key)以及外來鍵(Foreign Key)等資訊,交由DBA處理資料庫建立與欄位開設工作。

2009年3月27日 星期五

Normalization - 正規化


在系統分析與設計中,正規化是重要的一個步驟,尤其是關連式資料庫,是邏輯資料庫轉成實體資料庫不可或缺的一環。而在正規化之前,你必須清楚了解何謂主索引鍵(Primary Key)與何謂功能相依的觀念。

正規化藉著鍵值和函數相依提供我們分析關連式的架構。

The process of converting complex data structures into simple, stable data structure.

何謂功能性相依?「主鍵可以唯一決定其他屬性值,此稱為功能性相依。」


正規化的規則 [Rules of Normalization]
  • 第一階正規化
第一階正規化,我們稱其為First Normal Form,簡稱為1 NF。
第一階正規化的規則很簡單,「只需要符合每個欄位僅允許一個值或是每一個資料欄位皆是不能分割的值」。這樣的資料表稱為達成第一階正規化。

  • 第二階正規化
第二階正規化,我們稱其為Second Normal Form,簡稱2 NF。
第二階正規化的目標為「消除部分功能性相依」,須符合以下規則:
簡述為「須滿足第一階正規化,並所有欄位皆功能性相依於主鍵」。
嚴謹的要求:所有Second Normal Form都須符合下列規定中的最少一個條目。
1. The primary key consists of only one attribute
主鍵的唯一性
2. NO nonprimary key attributes exist in the relation
沒有非主鍵值
3. Every nonprimary key attribute is functionally dependent on the full set of primary key attribute
每個非主鍵值完全功能性相依於主鍵

  • 第三階正規化
第三階正規化,我們稱其為Third Normal Form,簡稱3NF。
第三階正規化目標為「消除遞移性相依」,須符合以下原則:
簡述為「所有非主鍵所引欄位間,不應該有功能性相依的關係」。
嚴謹的要求:須符合以下兩點
1. A relation is in third normal form (3 NF) if (1) it is in second normal form (2 NF) and (2) there are no functional (transitive) dependencies between two (or more) nonprimary key attribute.
3 NF條件為(1)必須是2NF且(2)沒有任何功能性相依於兩個非主鍵屬性上。
2. To convert a relation into 2NF, decompose the relation into new relations using determinants.
若轉化為2NF,分解關連成為新關連完全取決於自己決定。
換句話說,若真有操作上或資料庫上、需求上的認知確定,可憑自我決定是否進行3NF。