Thứ Hai, 11 tháng 10, 2010
Lưu trữ dữ liệu trong data warehouse
DW_ID Business_ID First_Name Last_Name
1001 10001 Hoang Le
1002 10002 Lan Nguyen
Nguyên tắc cập nhật thường thấy của một DW là chỉ những record đã thay đổi từ source database mới được đưa sang target database, tức là DW database. Một record được coi là "thay đổi" khi thỏa mãn 1 trong 3 điều kiện sau:
1. Record hoàn toàn mới (insert).
2. Một số columns thay đổi giá trị (update).
3. Record bị xóa (delete).
Hai trường hợp hay gặp nhất là insert và update. Việc xử lý deleted record thường khó hơn hoặc thậm chí đôi khi không thể làm được hoặc là người ta đơn giản bỏ qua. Giả sử sau một ngày làm việc, source database có những records sau:
Business_ID First_Name Last_Name
10001 Hoang Tran
10002 Lan Nguyen
10003 Vinh Ly
Như vậy, bản ghi 10001 có Last_Name đã thay đổi. Do đó nó sẽ được ETL process đưa sang target database. Bản ghi 10002 vẫn giữ nguyên giá trị do đó nó sẽ không được đưa sang data warehouse. Bản ghi 10003 thì mới keng, chắc chắn sẽ được đưa sang data warehouse.
Okay, bây giờ mới đến phần thú vị. Bản ghi 10003 do mới tinh nên có thể dễ dàng chèn nó vào dw như sau:
DW_ID Business_ID First_Name Last_Name
1001 10001 Hoang Le
1002 10002 Lan Nguyen
1003 10003 Vinh Ly
Vấn đề nằm ở bản ghi có Business_ID 10001. Có một số cách xử lý như sau:
1. Viết đè giá trị của bản ghi hiện thời trong dw. Tức là:
DW_ID Business_ID First_Name Last_Name
1001 10001 Hoang Tran
1002 10002 Lan Nguyen
1003 10003 Vinh Ly
Làm như Last_Name cũ biến mất hoàn toàn cả trong source database và dw. Người ta gọi là Slowly Changing Dimensions Type 1.
2. Tạo một record mới với giá trị mới.
DW_ID Business_ID First_Name Last_Name Record_Active
1001 10001 Hoang Le N
1002 10002 Lan Nguyen Y
1003 10003 Vinh Ly Y
1004 10001 Hoang Tran Y
Như vậy, một record mới với giá trị mới của cùng Business_ID 10001 được chèn vào dw. Record cũ được đánh dấu là non-active. Column mới Record_active được gọi là metadata column bởi vì nó không chứa bất cứ giá trị nào liên quan đến business. Nó được tạo ra với mục đích để miêu tả cấu trúc của dữ liệu. Thay vì một column như vậy, ta có thể tạo ra 2 column Active_start_date, Active_end_date để miêu tả rõ hơn nữa trong khoảng thời gian nào thì record được coi là active. Người ta gọi là Slowly Changing Dimensions Type 2.
3. Tạo một column để lưu giữ giá trị cũ.
DW_ID Business_ID First_Name Last_Name Prior_Last_Name
1001 10001 Hoang Tran Le
1002 10002 Lan Nguyen
1003 10003 Vinh Ly
Người ta gọi là Slowly Changing Dimensions Type 3.
Có thể thấy rằng cách làm thứ 2 và 3 lưu giữ được dữ liệu cũ. Do vậy mà người ta nói dw chứa dữ liệu có tính lịch sử. Điều này nhiều lúc rất quan trọng nếu như người ta muốn biết tại một thời điểm nào đó, dữ liệu "đã" chứa giá trị nào. Hiển nhiên là source database không thể làm được điều này bởi vì cùng một bản ghi đó, nhưng giá trị ban đầu của một số trường đã bị mất đi viễn vĩnh. Trong khi đó, dw lại có chứa những thông tin này. Thậm chí có khi bản ghi đã bị xóa đi trong source database, nhưng vẫn được giữ lại trong dw.
Với cách xây dựng như trên có thể thấy dữ liệu không bao giờ mất đi trong dw. Nói cách khác, dữ liệu chỉ có một đường đi vào. Đặc biệt nếu dùng Type 2, 3 thì dữ liệu không bao giờ thay đổi. Một đặc điểm nữa của dw là dữ liệu thường đến từ nhiều nguồn, nhưng một khi đã vào data warehouse nó bắt buộc phải được "chuẩn hóa" (conformed).
copy from: fotech.org tác giả Huy Nguyen
Thứ Sáu, 8 tháng 10, 2010
Sống.
Nếu mỗi sáng thức dậy, bạn thấy mình còn thở, còn thấy ánh ban mai lấp lánh bên khung cửa, thấy bạn đang hòa vào dòng người tấp nập hối hả ngoài kia, ấy vẫn còn là niềm hạnh phúc. Bởi vì, bạn đang được sống.
Bạn chỉ có một cuộc đời thôi, buồn hay vui là do bạn lựa chọn, dù bạn cứ nhấn chìm mình mãi trong những chuỗi ngày của cô đơn, hờn ghen, đau khổ... thời gian vẫn cứ trôi qua. Sao bạn không chọn những tiếng cười, chọn những hạnh phúc nhỏ nhoi, chọn những niềm vui sống cho trọn một ngày..
Sinh ra, ai cũng sẽ được ban tặng một tờ giấy trắng và một hộp màu, trang nhật ký đời người của bạn sẽ rực rỡ hay rặt màu xám, ấy là do chính tay bạn tô nên.
Hạnh phúc nằm trong tay những người biết nắm giữ. Niềm vui nằm trong tiếng cười của những người biết cho phép bản thân mình vui tươi..
Thứ Năm, 7 tháng 10, 2010
Làm việc
Làm việc là vì muốn khẳng định bản thân, không phải vì chưa hết giờ làm.
Làm việc là vì muốn trau dồi kiến thức, không phải để copy chỗ này rồi paste sang chỗ kia.
Làm việc, nghĩa là tập trung, không facebook, không chat chit nữa. Haizz.
Phải biết quản lý tốt thời gian của mình chứ. zzZZ
Rất giàu lòng quyết tâm, nhưng chưa đủ kiên nhẫn.
Rất giàu ý tưởng, nhưng vẫn rất ham vui.
Mỗi ngày nhích một tý, rùi sẽ tới được đích ;)
Ở bãi gửi xe
Chú bảo vệ, khoảng 40->50 tuổi: Đi chỗ khác mà gửi.
Nga đang loay hoay lấy xe gần đấy.
Chú bảo vệ: Con người phải biết tôn trọng nhau chứ cháu nhỉ?
Nga: Hoan hô chú :D
Thứ Ba, 5 tháng 10, 2010
Nguyên tắc của coder
Dù đã từng bị bắt lỗi, bị phạt tiền, mình vẫn thường xuyên dính lỗi này ;(. Giờ mới thấy rằng nhìn coding convention ngon, đẹp, rõ ràng, comment đầy đủ Anh ra Anh, Việt ra Việt thật là đã mắt )
vài điều thấy cần nhớ:
- Luôn có comment về người tạo, package, thời gian update, version trên đầu mỗi trang.
- Các hàm, class, comment… khi viết cần thống nhất dùng một thứ ngôn ngữ, Anh, Việt, hay Nhật. Cá nhân mình ủng hộ việc viết toàn bộ bằng tiếng Anh, tại như thế sẽ ít gặp lỗi về font, người upgrade sau này không phải lo không hiểu “thằng cha trước” nó viết gì )
- Bản trên svn, dù cho là server test cũng không nên để lại các lỗi về cú pháp, không tìm thấy file hay còn nguyên các hàm debug, test xử lý logic bên trong.
- Không nên tiết kiệm các dấu xuống dòng, các comment, nhìn một page toàn code là code dính sát sàn sạt nhau thấy vô cùng hãi hùng :-S
- Hãy luôn luôn suy nghĩ đến cụm từ “tối ưu”, dù là một dòng lệnh, một đoạn code hay khi thiết kế cơ sở dữ liệu. Mình chứng kiến rất nhiều người đi lo tối ưu đâu đâu trong khi code thì nham nhở, truy vấn cơ sở dữ liệu thì cái gì cũng SELECT *, thiết kế csdl thì loằng ngoằng phức tạp.
- Không bao giờ tác động thẳng vào core code, sau này làm sao update được.
- Chỉ cần một cái tặc lưỡi, bạn sẽ đổ xuống sông công sức coding convention bạn làm bấy lâu. Chỉ cần một cái à uôm bỏ qua, phần mềm (trang web) của bạn sẽ bị giảm chất lượng đi vài phần. Vì thế, dù cho bạn thuộc nằm lòng các qui tắc, hãy nhớ rằng thuộc chưa đủ mà còn phải biết vận dụng nó nữa.
(Chưa đủ, sẽ sưu tập dần dần)
Chữ ký trong thư điện tử
Thế nào là một chữ ký chuẩn, haiz, có lẽ không có định nghĩa, nhưng theo mình một chữ ký có thể chấp nhận được sẽ gồm có:
Câu kết (Thanks and best regards, sincerely…)
Họ và tên
Chức danh
Bộ phận – Công ty
Địa chỉ công ty
Website công ty
skype:
mobile
email.
cũng không khó để nhớ, tuy nhiên để viết chuẩn được thì lại không phải là một điều dễ dàng, nhất là trong trường hợp viết bằng tiếng Anh.
Hôm trước lướt một vòng mail của những người trong hòm mail của mình, mới thấy giật mình vì mỗi người ký một kiểu. Tên công ty thậm chí có người còn viết chưa chuẩn (thực ra trước đó mình cũng ghi sai tên công ty =))), địa chỉ công ty cũng mỗi người ghi mỗi kiểu, rồi có người ghi lẫn cả Anh lẫn Việt, có người đưa quá nhiều thông tin vào chữ ký làm bức mail trở nên dài loằng ngoằng, hoặc có bạn lại ghi chữ THANKS AND BEST REGARDS to đùng, đọc như bị hét vào mặt chứ chẳng phải lời lịch sự gì cho cam. Nhân đây mình cũng phô trương chữ ký của mình, biết đâu ai đó ghé thăm nhận ra lỗi sai thì comment giúp ^^
Thanks and Best regards,
Hồ Thị Nga
—————————————–
Web Developer
SOHA Game Team
Vietnam Communications Corporation
Addr: 23rd floor, Vincom City Towers B, 191 Ba Trieu, Hai Ba Trung, Hanoi
Skype: abcxyz
Mobile: 097….
Xem chừng mình hay để ý những điều rất nhỏ, nhưng mình thấy rằng có một chữ ký đẹp cũng thể hiện được mức độ chuyên nghiệp của người sở hữu mail, và quan trọng là cái gì có thể làm tốt được thì nên cố gắng để làm tốt nó ^^.
Thứ Hai, 1 tháng 3, 2010
I'm return..
But from now, I'm return to paint my dream.
It's too difficult, but I will not give up.
Hand my hands...