3.3.1. Cấu trúc của chƣơng trình
Trong phần này tôi xây dựng giải pháp cho việc sự kiện được gửi liên tục đến máy chủ StreamInsight. Tại đây sẽ sử dụng một bộ các câu truy vấn lấy được các thông tin cần thiết và gửi nó đến một ứng dụng hiển thị trên Windows Form và theo dõi trực tiếp các sự kiện ngay khi nó phát sinh. Dữ liệu đầu vào được tạo ngẫu nhiên bởi một Adapters trung tâm và đầu ra là một Web Adapters tùy chỉnh. Web Adapters gửi dữ liệu đến dịch vụ lưu trú trong một Windows Form. Bạn có thể quan sát liên tục các điểm sự kiện thể hiện trên biểu đồ trong Windows Form gần như ngay lập tức sau khi nó phát sinh.
Hình 3.7: Cấu trúc chương trình
Trung tâm xử lý của StreamInsight sử dụng bộ sáu câu truy vấn. Trong đó năm câu truy vấn được sử dụng để hiển thị các sự kiện mới phát sinh. Câu truy vấn sáu hiển thị thông tin tổng hợp trên báo cáo dạng biểu đồ [10], [11].
3.3.2. Cấu trúc và giao diện báo cáo
Dự án đầu tiên, có tên DataPublisher đây là Adapters tùy chỉnh dùng để sinh ra các sự kiện ngẫu nhiên và gửi sự kiện đến bộ xử lý StreamInsight
Hình 3.8: Lớp dự án DataPublisher
Lớp CallCenterAdapterPoint.cs là Adapters đầu vào được tác động bởi lớp FakeDataSource.cs tạo ra một CallCenterRequestEventType với thời gian 500 mili giây. CallCenterRequestEvenType mang thuộc tính của sự kiện (ví dụ như sản phẩm, chủng loại) được tạo ngẫu nhiên.
WebOutputAdapter gồm ba lớp: WebOutputConfig, WebOutputFactory, WebOutputOutput được sử dụng tạo thành Adapters đầu ra Web.
Bộ xử lý StreamInsight Output Input Dữ liệu liên tục Q2 Q1 Q3 Q5 Q4 Q6
Hình 3.9: Lớp dự án WebOutputAdapter
Adapters này gửi các sự kiện phức tạp từ StreamInsight đến Form báo cáo có tên CallCenterDashboard trong dự án EventReceiver.
Dự án tiếp theo là dự án mẫu dùng để hiển thị dữ liệu theo thời gian thực được đặt tên EventReceiver.WinUI.
Hình 3.10: Lớp dự án EventReceiver.WinUI
Windows Form này chứa dịch vụ WCF dùng để cập nhật, kiểm soát biểu đồ trên đó. Thông tin được theo dõi liên tục và sau 10 giây lại hiển thị dữ liệu tổng hợp của sự kiện trên biểu đồ.
Hình 3.11: Mẫu báo cáo Dashboard
Dự án cuối cùng là dự án StreamInsightQuery. Dự án này nhúng một máy chủ StreamInsight và bộ gồm sáu câu truy vấn. Các truy vấn này cho thấy làm thế nào để lọc các sự kiện, tạo ra cửa sổ thay đổi, chuyển cửa sổ và tổng hợp dữ liệu.
3.3.3. Kết quả thử nghiệm
Các bộ dữ liệu dùng trong bài toán được tạo ngẫu nhiên bởi CallCenterAdapterFactory.cs, cấu trúc sự kiện được tạo ra bởi CallCenterRequestEventType.cs gồm ba đối tượng “ Đơn hàng”, “Khiếu nại” và “Thông tin yêu cầu”. Trong luồng dữ liệu đầu vào cho bài toán, các bộ dữ liệu được sinh ra sau 2 giây một lần. Ta có thể theo dõi các bộ dữ liệu và thời gian nó sinh ra qua báo cáo như hình 3.12. Các bộ dữ liệu này được hiển thị chi tiết với số lượng của nó theo từng hàng.
Hình 3.12: Báo cáo theo dòng
Số lượng của các đối tượng được sinh ra ngẫu nhiên và được tổng hợp, biểu diễn trên biểu đồ có trong From như hình 3.13.
Hình 3.13: Báo cáo Dashboard qua biểu đồ
Chúng ta đều biết tầm quan trọng của lớp báo cáo Dashboard trong hệ thống BI. Với nền tảng công nghệ của StreamInsight chúng ta có thể dễ dàng tạo ra các báo cáo dạng này, giúp cho việc triển khai, theo dõi dữ liệu liên tục trên các luồng dữ liệu đơn giản hơn. Quản lý dữ liệu theo thời gian thực tốt hơn sẽ giúp nâng cao hiệu năng cho hệ thống BI.
Với việc áp dụng thuật toán truy vấn liên tục trên nền tảng của Microsoft StreamInsight ta có thể tận dụng khả năng xử lý trên bộ nhớ chính của StreamInsight để tăng tốc cho quá trình báo cáo thời gian thực. Như trong ví
dụ trên, quá trình sử dụng các câu truy vấn lấy được các thông tin trong luồng sự kiện, tổng hợp dữ liệu và hiển thị trên báo cáo đều được xử lý trong bộ nhớ chính với tốc độ nhanh. Tuy nhiên bộ dữ liệu từ nguồn liên tục chưa thực sự lớn và vẫn là đơn luồng nên chưa phản ánh rõ được kết quả giải pháp đưa ra trong trường hợp đa luồng tác động lên một kết quả.
Phạm vi thực nghiệm chỉ đi giải quyết tình huống hai trong thuật toán nên chưa thể hiện hết được khả năng ứng dụng thuật toán truy vấn liên tục trên nền tảng StreamInsight tạo ra các báo cáo thời gian thực trong tất cả tình huống thực tế có thể xảy ra, cũng như tính toán chính xác độ trễ dữ liệu trong báo cáo thời gian thực khi áp dụng giải pháp này.
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Sau một thời gian tìm hiểu và hoàn thành luận văn, các nội dung chính mà luận đã trình bày gồm lịch sử phát triển của hệ thống BI; các khái niệm tổng quát về các lý thuyết căn bản trong giải pháp BI cho doanh nghiệp cũng như các vấn đề trọng tâm của BI hiện nay, từ đó đi sâu tìm hiểu kỹ thuật hỗ trợ giải quyết bài toán “Truy vấn liên tục” dùng trong lớp báo cáo Dashboard của hệ thống BI. Trong luận văn này tác giả đã đưa ra giải pháp dùng để hỗ trợ cho lớp báo cáo Dashboard là “Thuật toán truy vấn liên tục” trên nền tảng Microsoft StreamInsight và đã sử dụng thành công StreamInsight để viết một ứng dụng đón bắt nguồn dữ liệu liên tục, xử lý và thể hiện trên báo cáo theo thời gian thực.
Hƣớng phát triển:
Hiện tại, luận văn mới dừng lại ở việc tìm hiểu tổng quan về hệ thống BI và kỹ thuật hỗ trợ báo cáo trong lớp Dashboard, sử dụng nền tảng công nghệ của Microsoft StreamInsight để bắt gói dữ liệu liên tục được tạo ra bởi một lớp trong ứng dụng. Vì thế vẫn chưa thể hiện được khả năng hoạt động trong thực tế khi nguồn cung cấp dữ liệu liên tục từ nhiều vị trí khác trong hệ thống kinh doanh thực. Hướng phát triển tiếp theo của đề tài là triển khai hệ thống hóa, áp dụng vào một hệ thống ứng dụng cụ thể, tham gia vào quá trình xây dựng hệ thống BI cho tổ chức/doanh nghiệp.
Tác giả mới tiếp cận với lĩnh vực BI nên đề tài có thể còn những hạn chế, thiếu sót nhất định. Tác giả mong nhận được nhiều ý kiến đóng góp về chuyên môn từ các quý thầy cô và đồng nghiệp.
TÀI LIỆU THAM KHẢO Tiếng Anh
1. B Azvine, Z Cui, D D Nauck, B Majeed (2006), Real Time Business
Intelligence for the Adaptive Enterprise, cec-eee, pp.29, The 8th IEEE
International Conference on E-Commerce Technology and The 3rd IEEE International Conference on Enterprise Computing, E-Commerce, and E- Services (CEC/EEE'06)
2. Shivnath Babu, Jennifer Widom (2001), Continuous Queries over Data Streams. Newsletter Acm Sigmod, Volume 30 Issue 3, Pages 109-120.
3. Pooja Mazumdar (2011), Streaming data: storage, querying & analysis, M. Tech. Seminar Report, Indian Institute of Technology, Bombay Mumbai. 5. Nils Rasmussen, Paul S. Goldy and Per O. Solli, Financial Business
Intelligence, John Wiley & Sons, Inc, 2002. ISBN : 0-471-15555-1
6. Daniela Ioana Sandu (2008), Operational and real-time Business Intelligence, RevistaInformatica Economică, nr.3(47)
Tài liệu trên trang Web
7.Hoàng Đại Hiển Chương (2009), Business Intelligence - Biết người biết ta, http://www.pcworld.com.vn/articles/kinh-doanh/quan-
tri/2009/04/1193874/bi-biet-nguoi-biet-ta/
8. NND(2011), Business Intelligence ngày càng dễ dùng, http://www.pcworld.com.vn/articles/kinh-doanh/giai-
phap/2011/08/1227449/business-intelligence-ngay-cang-de-dung/
9. Microsoft(2012),Microsoft StreamInsight, http://msdn.microsoft.com/en- us/library/ee362541.aspx
10. Microsoft (2012), C# Programming Guide (MSDN), http://msdn.microsoft.com/ en-us/library/67ef8sbd.aspx
11. Jonathan Worthington (2008), C# 3 Tutorial by Jonathan Worthington http://www.programmersheaven.com/2/CSharp3-1