Archive for Tháng Sáu 2011

TỒNG QUAN VỀ CÔNG NGHỆ CLUSTERING

Tháng Sáu 24, 2011

TỒNG QUAN VỀ CÔNG NGHỆ CLUSTERING

Chúng ta đều biết các máy chủ là trái tim của của mạng máy tính, nếu máy chủ mạng hỏng, hoạt động của hệ thống sẽ bị ngưng trệ. Điều đáng tiếc là dù các hãng sản xuất đã cố gắng làm mọi cách để nâng cao chất lượng của thiết bị, nhưng những hỏng hóc đối với các thiết bị mạng nói chung và các máy chủ nói riêng là điều không thể tránh khỏi. Do vậy, vấn đề đặt ra là cần có một giải pháp để đảm bảo cho hệ thống vẫn hoạt động tốt ngay cả khi có sự cố xảy ra đối với máy chủ mạng, và công nghệ clustering là câu trả lời cho vấn đề này. Đề tài này giới thiệu nguyên lý, phân tích và triển khai một số giải pháp clustering đang được áp dụng cho các hệ thống mạng máy tính lớn với hi vọng có thể giúp chúng ta hiểu rõ hơn về công nghệ tưởng như đơn giản nhưng thực tế khá phức tạp này.

1.1 Cluster là gì?
Clustering là một kiến trúc nhằm đảm bảo nâng cao khả năng sẵn sàng cho các hệ thống mạng máy tính. Clustering cho phép sử dụng nhiều máy chủ kết hợp với nhau tạo thành một cụm có khả năng chịu đựng hay chấp nhận sai sót (fault-tolerant) nhằm nâng cao độ sẵn sàng của hệ thống mạng. Cluster là một hệ thống bao gồm nhiều máy chủ được kết nối với nhau theo dạng song song hay phân tán và được sử dụng như một tài nguyên thống nhất. Nếu một máy chủ ngừng hoạt động do bị sự cố hoặc để nâng cấp, bảo trì, thì toàn bộ công việc mà máy chủ này đảm nhận sẽ được tự động chuyển sang cho một máy chủ khác (trong cùng một cluster) mà không làm cho hoạt động của hệ thống bị ngắt hay gián đoạn. Quá trình này gọi là “fail-over”; và việc phục hồi tài nguyên của một máy chủ trong hệ thống (cluster) được gọi là “fail-back”.

Việc thiết kế và lắp đặt các cluster cần thoả mãn các yêu cầu sau:

  • Yêu cầu về tính sẵn sàng cao (High availability). Các tài nguyên mạng phải luôn sẵn sàng trong khả năng cao nhất để cung cấp và phục vụ các người dùng cuối và giảm thiểu sự ngưng hoạt động hệ thống ngoài ý muốn.
  • Yêu cầu về độ tin cậy cao (reliability). Độ tin cậy cao của cluster được hiểu là khả năng giảm thiểu tần số xảy ra các sự cố, và nâng cao khả năng chịu đựng sai sót của hệ thống.
  • Yêu cầu về khả năng mở rộng được (scalability). Hệ thống phải có khả năng dễ dàng cho việc nâng cấp, mở rộng trong tương lai. Việc nâng cấp mở rộng bao hàm cả việc thêm các thiết bị, máy tính vào hệ thống để nâng cao chất lượng dịch vụ, cũng như việc thêm số lượng người dùng, thêm ứng dụng, dịch vụ và thêm các tài nguyên mạng khác.

Ba yêu cầu trên được gọi tắt là RAS (Reliability-Availability-Scalability), những hệ thống đáp ứng được ba yêu cầu trên được gọi là hệ thống RAS (cần phân biệt với Remote Access Service là dịch vụ truy cập từ xa).

Kỹ thuật Clustering được chia làm 2 loại gồm Cluster và Network Load Balancing (NLB) 

Cluster : được dùng cho các ứng dụng Stateful applications (các ứng dụng hoạt động thường xuyên trong thời gian dài) bao gồm các database server như là Microsoft MySQL Server, Microsoft Exchange Server, File and Print Server… Tất cả các node trong Cluster dùng chung 1 nơi lưu trữ dữ liệu có thể dùng công nghệ SCSI hoặc Storage Area Network (SAN). Windows Sever 2003 Enterprise và Datacenter hỗ trợ cluster lên đến 8 node trong khi đó Windows 2000 Advance Server hỗ trợ 2 node còn Windows 2000 Datacenter Server được 4 node.

NLB (Cân bằng tải mạng): Là một loại khác của kỹ thuật Clustering có khả năng chia tải và nâng cao khả năng chịu lỗi của hệ thống được tốt hơn. Được dùng cho các ứng dụng Stateless applications (các ứng dụng hoạt động mang tính nhất thời) như WebFile Tranfer Protocol (FTP)Virtual Private Network (VPN), DHCP…Mỗi node phải dùng riêng một nơi lưu trữ cục bộ (Local Storage) cho nên cần phải có quá trình đồng bộ hóa (replication) dữ liệu ở mỗi nơi lưu trữ, số lượng node càng nhiều thì thời gian cho việc replication càng lâu chính vì điều này nên ta không nên triển khai các ứng dụng Stateful trên kỹ thuật NLB này nhằm đảm bảo tính chính xác của dữ liệu. Đề tài không nói chi tiết về kỹ thuật này.

Note: Cũng cần chú ý rằng hiệu quả hoạt động của hệ thống Clustering phụ thuộc vào sự tương thích giữa các ứng dụng và dịch vụ, giữa phần cứng và phần mềm, ta không thể triển khai cluster hay NLB khi các node sử dụng hệ điều hành (HĐH) khác nhau dù cho HĐH đó có hỗ trợ hay không. Ngoài ra, kỹ thuật clustering không thể chống lại các sự cố xảy ra do virus, sai sót của phần mềm hay các sai sót do người sử dụng. Để chống lại các sự cố này cần xây dựng một cơ sở dữ liệu được bảo vệ chắc chắn cũng như có các kế hoạch khôi phục, backup dữ liệu.

1.2 Cấu trúc của Cluster

Trong Cluster tùy theo nhu cầu mà chúng ta có thể triển khai nhiều ứng dụng trên cùng 1 cluster hay cài đặt trên mỗi node 1 ứng dụng, nói chung cấu trúc của 1 cluster không cố định nhưng chủ yếu chúng ta thấy hữu ích nhất là các loại cấu trúc sau: ( Phần 2 sẽ trình bài chi tiết hơn về vấn đề này)

Thứ 1: Nếu ta triển khai 2 ứng dụng stateful trên hệ thống cluster thì có 1 phương pháp đơn giản là cài đặt cả 2 ứng dụng ấy vào mỗi node của cluster (hình 1). Ở cấu trúc này thì 2 ứng dụng trên cùng 1 server do đó nếu ứng này bị lỗi thì sẽ ảnh hưởng đến ứng dụng kia, hiệu quả của hệ thống cluster thấp.

Hình 1- Hệ thống cluster có 2 ứng dụng hoạt động song song trên mỗi node

Thứ 2 : Tạo 2 hệ thống cluster riêng lẻ, trong mỗi cluster cài đặt duy nhất 1 ứng dụng (Hình 2). Ở cấu trúc này thì hệ thống sẽ hiệu quả hơn nếu có ứng dụng nào đó bị lỗi thì cũng không ảnh hưởng đến các ứng dụng khác. Nhưng chi phí đầu tư cho kiểu này rất cao bởi vì số lượng các node cho mỗi ứng dụng nhiều hơn loại 1.

Hình 2 – Hai hệ thống cluster độc lập chứa 2 ứng dụng khác nhau

Thứ 3 : Triển khai cả 2 ứng dụng trên cùng 1 cluster, mỗi node cài 1 ứng dụng nhưng khác với loại 1 là sẽ có 1 cluster làm nhiệm vụ backup. Cụ thể như hình 3 cho ta thấy hệ thống này có 1 node passive dùng làm backup và cài cả 2 ứng dụng của node 1 và node 2 (2 node Active). Nếu 1 trong 2 node này bị lỗi thì node passive sẽ thay thế chức năng của node bị lỗi. Hệ thống này có hiệu quả cao hơn 2 loại trước

Hình 3 – Hai node Active được dự phòng bởi node Passive

1.3 Chế độ hoạt động

Mỗi máy chủ trong cluster được gọi là một node (cluster node), và có thể được thiết lập ở chế độ chủ động (active) hay thụ động (passive). Khi một node ở chế dộ chủ động, nó sẽ chủ động xử lý các yêu cầu. Khi một node là thụ động, nó sẽ nằm ở chế độ dự phòng nóng (stanby) chờ để sẵn sàng thay thế cho một node khác nếu bị hỏng.

Trong một cluster có nhiều node có thể kết hợp cả node chủ động và node thụ động. Trong những mô hình loại này việc quyết định một node được cấu hình là chủ động hay thụ động rất quan trọng. Để hiểu lý do tại sao, hãy xem xét các tình huống sau:

– Nếu một node chủ động bị sự cố và có một node thụ động đang sẵn sàng, các ứng dụng và dịch vụ đang chạy trên node hỏng có thể lập tức được chuyển sang node thụ động. Vì máy chủ đóng vai trò node thụ động hiện tại chưa chạy ứng dụng hay dịch vụ gì cả nên nó có thể gánh toàn bộ công việc của máy chủ hỏng mà không ảnh hưởng gì đến các ứng dụng và dịch vụ cung cấp cho người dùng cuối (Ngầm định rằng các các máy chủ trong cluster có cấu trúc phần cứng giống nhau).

– Nếu tất cả các máy chủ trong cluster là chủ động và có một node bị sự cố, các ứng dụng và dịch vụ đang chạy trên máy chủ hỏng sẽ phải chuyển sang một máy chủ khác cũng đóng vai trò node chủ động. Vì là node chủ động nên bình thường máy chủ này cũng phải đảm nhận một số ứng dụng hay dịch vụ gì đó, khi có sự cố xảy ra thì nó sẽ phải gánh thêm công việc của máy chủ hỏng. Do vậy để đảm bảo hệ thống hoạt động bình thường kể cả khi có sự cố thì máy chủ trong cluster cần phải có cấu hình dư ra đủ để có thể gánh thêm khối lượng công việc của máy chủ khác khi cần.

Trong cấu trúc cluster mà mỗi node chủ động được dự phòng bởi một node thụ động, các máy chủ cần có cấu hình sao cho với khối lượng công việc trung bình chúng sử dụng hết khoảng 50% CPU và dung lượng bộ nhớ.

Trong cấu trúc cluster mà số node chủ động nhiều hơn số node bị động, các máy chủ cần có cấu hình tài nguyên CPU và bộ nhớ mạnh hơn nữa để có thể xử lý được khối lượng công việc cần thiết khi một node nào đó bị hỏng.

Các node trong một cluster thường là một bộ phận của cùng một vùng (domain) và có thể được cấu hình là máy điều khiển vùng (domain controllers) hay máy chủ thành viên. Lý tưởng nhất là mỗi cluster nhiều node có ít nhất hai node làm máy điều khiển vùng và đảm nhiệm việc failover đối với những dịch vụ vùng thiết yếu. Nếu không như vậy thì khả năng sẵn sàng của các tài nguyên trên cluster sẽ bị phụ thuộc vào khả năng sẵn sàng của các máy điều khiển trong domain.

1.4 Tính mở của Cluster

Một vấn đề mà các nhà đầu tư xây dựng hệ thống cần quan tâm là khả năng mở rộng của hệ thống Clustering. Tuỳ theo yêu cầu cụ thể các cluster có thể cần phải thêm các máy chủ vào Cluster, hoặc thêm CPU và RAM cho các máy chủ để tăng khả năng đảm nhận công việc cho các máy chủ đã có.

 

Copy from http://forum.mait.vn/microsoft-windows/7113-tong-quan-ve-cong-nghe-clustering.html

Data Mining – Khái niệm, vai trò và ứng dụng.

Tháng Sáu 24, 2011

Khi bạn đọc bài này nghĩa là bạn có độ quan tâm nhất định về công nghệ, điều này cho phép tôi dự đoán bạn đã và đang sử dụng những sản phẩm công nghệ như Google, Yahoo, Facebook, Twitter v.v… Trong bài viết này tôi có đôi chút hơi dài dòng nhưng cũng chỉ nhằm dẫn dắt bạn tới khái niệm mà tôi cảm thấy rất lí thú:Data Mining.

Mở đầu.

Vài dòng suy nghĩ trên của tôi không phải là dự đoán mơ hồ mà hoàn toàn có cơ sở, tôi có thể lý giải sơ bộ về dự đoán trên như sau: Trước hết bạn phải công nhận/đồng ý với tôi rằng, hầu hết những người am hiểu ít nhiều về công nghệ đều không thể không biết đến các hệ thống như Google, Yahoo, Facebook, Twitter.. vì vậy điều tôi dự đoán bạn có sử dụng các sản phẩm trên hay không bằng cách nhận diện bạn là người am hiểu hoặc chí ít quan tâm đến công nghệ.

Ảnh có tính chất minh họa

Vậy vấn đề là làm thế nào để tôi có thể nhận diện bạn là người am hiểu/quan tâm đến công nghệ? Câu hỏi này thực ra thì đơn giản thôi: Data mining – Đây là một cụm từ trọng tâm nằm trong tiêu đề bài viết, và từ này bản chất nó là công nghệ rồi, khi bạn đọc bài này ít nhiều cụm từ này gây cho bạn sự quan tâm nhất định nếu không muốn nói là bạn đã có một chút hiểu biết về nó, điều đó đồng nghĩa bạn phải có một kiến thức nền ở mức tương đối về lĩnh vực công nghệ (không nhất thiết phải là công nghệ thông tin), và đây là mấu chốt để tôi có thể khẳng định (với xác xuất cao nhất) bạn là người am hiểu/quan tâm đến công nghệ, và vì vậy hiển nhiên bạn phải biết và có sử dụng các dịch vụ trên .

Hơi dài dòng chút, nhưng ở đây tôi muốn dẫn bạn tới khái niệm mà bài viết này sẽ đề cập và đó cũng là cách tôi ứng dụng để lý giải cho ví dụ ở trên: Data Mining.
Đọc đến đây, ít nhiều bạn công nhận với tôi những điều trên (Nếu không thì tốt nhất đừng đọc tiếp, tốn time .), bạn biết rằng Google luôn trả cho bạn kết quả tìm kiếm tốt nhất, thông minh nhất.. Nó còn thông minh hơn nếu như bạn luôn tìm kiếm thông tin bằng cách đăng nhập vào hệ thống của Google, bạn có thể thử bằng cách tìm một từ khóa chuyên biệt khi không đăng nhập và khi đăng nhập, nói chung kết quả sẽ khác nhau, và hầu hết là kết quả khi bạn đăng nhập sẽ có độ chính xác với mục đích tìm kiếm của bạn cao hơn so với khi bạn không đăng nhập. Bạn có biết tại sao không?

Tiếp: Facebook có tính năng rất hay và rất hữu dụng trong việc kết nối các mối quan hệ, đó là tính năng suggestions friends, các mối quan hệ của tôi hầu hết đều kết nối qua tính năng này, và điều thú vị là hầu hết các người bạn mà FB suggest đều là những người tôi biết. Vậy tại sao FB nó lại thông minh đến mức như vậy?

Amazon.com là website bán sách lớn nhất trên internet, bạn để ý rằng mỗi khi bạn xem thông tin chi tiết về một quyển sách nào đó trên site thì bao giờ cũng kèm theo 1 danh sách các quyển sách gợi ý mua kèm theo quyển bạn đang xem, một thống kê cho thấy có tới trên 70% đầu sách được người dùng mua thêm thông qua hình thức gợi ý này. Vậy điều gì làm cho việc bán sách hiệu quả đến như vậy?
Trên đây chỉ là các ví dụ chúng ta có thể nhìn và hiểu luôn (không cần phải nghĩ ), còn rất, rất nhiều các ví dụ từ nghiên cứu khoa học ứng dụng trong không gian, đến việc chống khủng bố (hay đấy chứ!!!) mà tôi không thể trình bày ở đây được..

Nói tóm lại tất cả những ví dụ, những điều tôi nói ở trên chung qui lại chỉ xoay quanh một chủ đề thôi: Data mining. Vậy data ming là cái gì vậy?

Data mining là gì?

Có khá nhiều cách định nghĩa khác nhau về Data mining nhưng tựu chung các bạn có thể hiểu nôm na nó là thế này:

Data mining là một quá trình trích xuất thông tin có mối quan hệ hoặc có mối tương quan nhất định từ một kho dữ liệu lớn (cực lớn) nhằm mục đích dự đoán các xu thế, các hành vi trong tương lai, hoặc tìm kiếm những tập thông tin hữu ích mà bình thường không thể nhận diện được.

Ảnh có tính chất minh họa

Ứng dụng của nó rất đa dạng và rộng tới, từ marketing, chống gian lận, giảm giá thành sản xuất, tăng doanh thu, phân tích hành vi sử dung người dùng internet để target đúng nhu cầu, đúng đối tượng hay ứng dụng hỗ trợ ra quyết định, nghiên cứu khoa học đến việc chống khủng bố v.v..

Các công cụ, kỹ thuật data mining có thể trả lời các câu hỏi mà các công cụ truyền thống đòi hỏi rất nhiều thời gian cần thiết để có thể giải đáp được (thậm chí các cách truyền thống không thể giải được). Nó có thể tìm thấy được những thông tin cực kỳ hữu ích mà rất dễ bị bỏ qua hoặc không xem xét đến để có thể dự đoán những xu thế/hành động xảy ra trong tương lai.

Để có thể data mining một cách hiệu quả, điều đầu tiên cần phải thu thập dữ liệu và định nghĩa lại theo các tiêu chí cần phân tích. Các kỹ thuật data mining có thể cài đặt rất nhanh chóng trên các nền tảng phần mềm, phần cứng phổ thông mà không cần đòi hỏi quá phức tạp, tuy vậy data mining thường gắn liền với việc phân tích một khối lượng dữ liệu cực lớn nên cần ứng dụng các công nghệ high performance client/server hoặc xử lý song song (parallel programming).
Nghe thì hơi loằng ngoằng khó hiểu, thực ra thì đúng là nó rất loằng ngoằng, phức tạp, khó hiểu . Tuy vậy có thể tóm lược khái quát các thành phần cơ bản của data mining như sau.

Các thành phần cơ bản của Data mining.

Công nghệ data mining là kết quả của quá trình lâu dài nghiên cứu và phát triển sản phẩm. Quá trình này bắt đầu từ khi những dữ liệu đầu tiên lưu vào máy tính, tiếp đến là quá trình cải tiến, nâng câp cách thức truy xuất dữ liệu và dần dần cho phép người dùng có thể duyệt dữ liệu theo thời gian thực. Kết quả của quá trình này cho phép truy xuất các nguồn dữ liệu quá khứ, tính toán và định vị lại việc truyền tải, cung cấp thông tin cho hiện tại, tương lai hay đưa ra các dự đoán tình huống có thể sắp diễn ra.

Có ba kỹ thuật cơ bản nhưng rất tổng quát và đầy đủ trong công nghệ data mining:
Thu thập dữ liệu lớn. (Massive data collective).
Nền tảng sức mạnh tính toán. Đây chính là hạ tầng bao gồm cả phần cứng và phần mềm lõi. (Powerful computing)

Các giải thuật/thuật toán để khai thác dữ liệu. (Data mining Algorithms)

Để có thể hiểu rõ hơn, tôi lấy ví dụ về hệ thống của VCC chúng ta:
Hệ thống thu thập dữ liệu: từ các site nội bộ của VCC, lượng dữ liệu thu thập hàng ngày trung bình khoảng gần 200GB data, số bản ghi dao động từ 200 đến 700 triệu, thời điểm cao nhất đạt 1.8 tỷ bản ghi được ghi nhận trong một ngày. Các dữ liệu thu thập bao gồm thông tin về ads item, user-agent, user id, url v.v…

Nền tảng tính toán bao gồm hệ thống Hadoop Cluster, Datawarehouse và các application server. Hệ thống Hadoop ứng dụng để giải các bài toán đòi hỏi phải xử lý song song trên một khối lượng dữ liệu cực lớn (hàng TB data và chục tỷ bản ghi), hệ thống DW ứng dụng để tính toán nhanh các dữ liệu nằm ở các khoảng thời gian ngắn, lượng bản ghi tính toán khoảng dưới 1 tỷ, và cần tính nhanh. Nền tảng này kết hợp với thành phần thứ ba dưới đây để giải các bài toán phân tích về hành vi người dùng, target, re-targeting sản phẩm đúng đối tượng, xây dựng hệ thống recommendation v.v..

Các thuật toán/giải thuật ứng dụng để khai thác dữ liệu: Hệ thống của VCC ứng dụng khác nhiều các giải thuật/thuật toán khác nhau, tùy vào từng bài toán cụ thể. Ví dụ với bài toán chống spam thì ứng dụng thuật toán Cosine Similarity, Bayesian, Clustering… bài toán detect IP thì ứng dụng một số giải thuật tự nghiên cứu, hay bài toán tính lượng unique user theo khoảng thời gian bất kỳ ứng dụng giải thuật Bloom filter v.v…

Ngoài ra còn nhiều công nghệ phụ trợ khác, nhưng ba thành phần trên là phần cốt lõi của cả hệ thống mà VCC đã và đang ứng dụng.

Vậy với các thành phần tuy cơ bản nhưng phức tạp như vậy, cụ thể hơn thì phạm vi và ứng dụng của hệ thống là gì?

Phạm vi và ứng dụng.

Như đã trình bày ở trên, pham vi ứng dụng của data mining rất rộng, bao phủ hầu hết các lĩnh vực. Tuy vậy có thể tóm lược lại phạm vi ứng dụng của data ming trong các bài toán yêu cầu có cần có các chức năng/nghiệp vụ sau:
Tự động hóa việc dự doán các xu thế và hành vi sẽ diễn ra trong tương lai: Data mining tự động hóa quá trình tìm kiếm và trích xuất các tập thông tin có mối quan hệ hoặc tương quan trong một tập dữ liệu cực lớn. Những vấn đề/câu hỏi đặt ra với các cách truyền thống đòi hỏi một quá trình rất phức tạp và tốn kém cả về tài chính và thời gian để giải đáp thì giờ có thể trả lời một cách nhanh chóng trong khi giá thành là thấp nhất. Một ví dụ đơn giản trong quảng cáo online là quá trình targeting, khi một người dùng click vào một banner quảng cáo bán giầy dành cho nữ giới, thì khả năng người đó là nữ và họ đang quan tâm đến đôi giầy đó, khi hệ thống nhận diện được điều này thì có thể target thêm các kiểu dáng giầy khác nhau, kích cỡ khác nhau, giá thành khác nhau với mục tiêu là người dùng sẽ kết thúc quá trình là mua một đôi giày, ngoài ra bởi vì hệ thống nhận diện người dùng là phụ nữ nên nó có thể quảng cáo thêm các sản phẩm khác như mỹ phẩm, quần áo v.v..

Tự động hóa việc khám phá/nhận diện ra những tập thông tin quá khứ mà hệ thống không/chưa biết: Công cụ data mining trong quá trình phân tích dữ liệu sẽ nhận diện ra nhưng tập thông tin/dữ liệu không có hoặc bị ẩn bởi những mối liên hệ mà được xác định trước. Ví dụ như trong việc bán hàng, có những sản phẩm không có mối liên hệ gì với nhau, nhưng lại hay bán được cùng nhau, từ đó đưa ra cơ chế recommendation. Hay cơ chế nhận diện giao dịch gian lận trong thanh toán điện tử dựa vào việc phân tích các giao dịch bất thường…

Ngày nay, các công nghệ data mining được ứng dụng rộng rãi trong các công ty lấy khách hàng làm trung tâm như truyền thông, tài chính, marketing, bán hàng, các nghành công nghiệp sản xuất v.v… Nó cho phép các công ty xác định được các mối quan hệ giữa các yếu tố nội tại như giá thành, mẫu mã, cách thức quảng cáo, thậm chí là kỹ năng của nhân viên công ty… các yếu tố bên ngoài như đối thủ cạnh tranh, chính sách kinh tế hay nhu cầu thị trường v.v.. Và nó còn hỗ trợ việc xác định được sự tác động của các chính sách khuyến mại, giảm giá, độ hài lòng của khách hàng và lợi nhuận của doanh nghiệp…

Từ đầu đến giờ toàn nói data mining ứng dụng vào cái này cái kia mà chưa nói gì đến cách thức nó hoạt động thế nào. Phần tiếp theo chúng ta sẽ tìm hiểu kỹ hơn về vấn đề này.

Data mining hoạt động như thế nào?

Vậy chính xác thì data mining giúp bạn dự đoán được hoặc nhận biết nhưng điều chưa biết dựa trên tập dữ liệu quá khứ như thế nào? Các kỹ thuật ứng dụng để giải các câu hỏi trên trong data mining được gọi là quá trình mô hình hóa dữ liệu. Có nghĩa là xây dựng các mô hình trong các tình huống mà bạn đã biết/nhận diện được câu trả lời/kết quả và sau đó là áp dụng vào trong các tình huống khác mà bạn chưa biết/nhận diện được.

Vài công nghệ và kỹ thuật data mining thường áp dụng như: thống kê (statistical), máy học (machine learning), mạng nơ ron (neural network).

Data mining bao gồm các bước sau:

1. Thu thập, bóc tách, chuẩn hóa dữ liệu và nhập dữ liệu vào hệ thống kho dữ liệu (Datawarehouse).

2. Lưu trữ và quản lý dữ liệu dưới dạng đa chiều.

3. Đưa ra các cơ chế truy xuất cho các ứng dụng phân tích dữ liệu .

4. Sử dụng các phần mềm phân tích để tính toán.

5. Kết xuất dữ liệu dưới dạng dễ hiểu, như biểu đồ hoặc dạng report.

Để ví dụ cho quá trình này, chúng ta quay trở lại trả lời các câu hỏi ở mục Mở đầu.
Đầu tiên là câu hỏi tại sao kết quả tìm kiếm của Google lại khác nhau khi đăng nhập và khi không đăng nhập? Tôi nghĩ đọc đến đây, có lẽ bạn đã có thể hình dung được câu trả lời. Câu trả lời ngắn gọn là: Khi bạn đăng nhập Google biết bạn là ai, biết hành vi trong quá khứ của bạn như thế nào (thông qua quá trình thu thập dữ liệu hành vi của bạn trên các site mà Google hiện diện), do đó nó dựa vào sự hiểu biết này nên kết quả trả về bao giờ cũng là kết quả có độ chính xác với nhu cầu của bạn cao nhất và ngược lại, khi không đăng nhập, Google chỉ trả về kết quả ranking bình thường mà không có kèm theo tham số ranking theo user. Và dĩ nhiên để biết được hành vi trong quá khứ của bạn, Google phải sử dụng đến các công nghệ data mining.

Thứ hai, tại sao Facebook lại có thể gợi ý cho tôi toàn những người mà tôi đã quen biết? Để có thể đưa ra gợi ý này đòi hỏi Facebook kết hợp rất nhiều các tham số, cụ thể là những tham số gì thì là bí mật công nghệ riêng của FB. Tuy nhiên có thể giải thích tóm lược như sau: Khi bạn đăng ký tài khoản Facebook, thông thường bạn nhập them các thông tin khác như: quá trình làm việc ở các công ty, công ty bạn đang làm, trường/lớp bạn đã/đang học, các hội bạn tham gia, bạn gái/trai/vợ/chồng của bạn v.v… Đây chính là các thông tin mà Facebook có thể dựa vào để xác định ai là bạn của bạn. Ở đây, Facebook đã mô hình hóa các tham số có độ liên quan nhất định để đưa ra những gợi ý mà có xác xuất đúng rất cao, và bạn thấy đó, thực sự là rất đúng . News stream của Facebook còn phức tạp và hay ho hơn nữa. Tất các điều đó Facebook làm được là quá trình thu thập dữ liệu hoạt động của người dùng trên site, sau đó sử dụng các công nghệ data mining để cung cấp nội dung, tính năng phù hợp nhất cho người dùng.

Thứ ba, tại sao Amazon lại có thể đưa ra danh sách các quyển sách bán kèm có tỷ lệ bán được cao như vậy? Để làm được điều này Amazon đã đầu tư phát triển hệ thống recommendation trong hàng chục năm, thời gian dài đó không chỉ là phát triển thuần túy công nghệ mà còn là quãng thời gian thu thập và phân tích hành vi người sử dụng trên site của Amazon, thời gian càng dài, dữ liệu thu thập càng lớn, dẫn đến tập thông tin có độ tương quan càng nhiều và càng chính xác. Nôm na bạn có thể hiểu là 100 khách hàng mua quyển sách ABC thì có tới 40 khách hàng đồng thời mua quyển sách DEF, vì thế với khách hàng 101 xem quyển ABC, hệ thống nhận diện và đưa ra gợi ý mua them quên DEF, đơn giản là vậy, tuy nhiên bên dưới còn có nhiều tham số khác để tăng độ tương quan lên nữa. Và đây cũng là một quá trình mining dữ liệu.

Một số công nghệ thường áp dụng trong data mining:

Mạng trí tuệ nhân tạo (Artificial neural networks): Đây là mô hình mà hệ thống có thể tự học thông qua đào tạo với tập dữ liệu ban đầu, từ đó suy đoán ra các tập kết quả từ tập dữ liệu mà nó khai thác.

Cây quyết định (Decisions Trees): Một tập các decisions biểu diễn dưới dạng cây, các decisions này tạo ra các luật cho việc phân loại tập dữ liệu. Nôm na là, nếu tập thông tin A thõa mãn các luật B thì quyết định C.

Giải thuật di truyền (Generic Algorithms): Kỹ thuật này sử dụng trong các quá trình phối hợp, biến đổi, chọn lọc tự nhiên kế thừa từ khái niệm tiến hóa.
Phương pháp ông hàng xóm gần nhất (Nearest neighbor method): Đây là kỹ thuật phân loại từng bản ghi/thông tin trong tập dữ liệu dựa trên sự kết hợp của k records có độ giống nhau nhất trong tập dữ liệu quá khứ.
Nguyên tắc suy diễn (Rule induction): Kỹ thuật bóc tác dữ liệu dựa trên nguyên tắc Nếu-Thì từ các tập dữ liệu thống kê.

Hạ tầng công nghệ:

Các bài toán data mining hầu hết là các bài toán xử lý lượng dữ liệu lớn, và phân tích phức tạp. Điều đó đòi hỏi phải có hạ tầng đủ lớn và có khả năng mở rộng mềm dẻo, linh hoạt (scale out) phù hợp với sự tăng trưởng của dữ liệu.
Mô hình hệ thống thông thường được xây dựng trên cơ sở phân tán, cho phép lưu trữ và tính toán song song, khả năng chịu lỗi cao.

Kích cỡ không gian lưu trữ dữ liệu tính bằng TB, băng thông giữa các node là Gb, tùy thuộc vào độ phức tạp của các công thức tính toán mà đòi hỏi hệ thống phải có lượng RAM đủ lớn, single CPU hay multi CPU v.v…
Hệ thống thu thập dữ liệu phải có khả năng chịu tải cao và đảm bảo tính sẵn sang cao (High available), tốc độ xử lý nhanh (High performance).

Kết luận:

Bài viết này mới chỉ là bước dạo đầu để chúng ta có thể hình dung được data mining là gì. Các khái niệm, định nghĩa còn khá chung chung. Tuy vậy cũng đủ để các bạn có thể nắm được các điểm cốt lõi của một hệ thống data mining cần có những gì.

Ngày nay, việc xây dựng ra một sản phẩm (đặc biệt là sản phẩm internet) ngày càng trở nên đơn giản hóa, tuy vậy để tồn tại, phát triển và mở rộng cần có những tính năng thông minh hỗ trợ cho người dùng đơn giản hóa việc truy xuất, đúng thông tin họ cần… Tất cả điều này đều cần đến nền tảng data mining bên dưới.
Các công nghệ data mining thực ra không mới, nó đã hình thành cách đây hơn 20 năm, từ khi các công nghệ điện toán xử lý song song phát triển. Tuy nhiên việc ứng dụng nó và các hệ thống web là điều còn khá mới mẻ, đặc biệt là các sản phẩm trực tuyến ở Việt nam chúng ta, hầu như chưa trang web nào ứng dụng thực sự các công nghệ data mining, lý do là quy mô chưa đủ lớn, lượng dữ liệu cần phân tích còn nhỏ và hẹp.

Tham khảo:

Wikipedia: http://en.wikipedia.org/wiki/Data_mining
Web: Introduction to Data Mining; What is Data Mining
Book: Web Data Mining-Bing Liu, Springer publish
Book: Programming Collective Intelligence.

——————————————————————————————

Copy from http://nhanminhphuc.edublogs.org/2011/03/18/data-mining-%E2%80%93-khai-ni%E1%BB%87m-vai-tro-va-%E1%BB%A9ng-d%E1%BB%A5ng/