Bài toán gom cụm (clustering) dữ liệu
Giải thuật gom cụm là giải thuật có nhiệm vụ phân loại các mẫu (samples) thành một tập các nhóm dựa trên một hàm đo khoảng cách nào đó (measurement of association) sao cho các phần tử trong cùng một nhóm sẽ giống nhau, các phần tử trong khác nhóm sẽ khác nhau [1].
Dữ liệu đầu vào của giải thuật gom cụm là tập hợp các mẫu dữ liệu và hàm đo khoảng cách. Đầu ra của giải thuật là một một cấu trúc phân vùng của tập dữ liệu mẫu. Hàm đó khoảng cách cho biết sự tương đồng giữa 2 mẫu. Có nhiều hàm đó khoảng cách khác nhau như khoảng cách euclide, city block, Minkowski, cosine-correlation, neighbor distance (tham khảo thêm [1]). Trong hiện thực, chúng tôi sử dụng hàm đo khoảng cách rất thông dụng là hàm đo khoảng cách Euclide.
63 trang |
Chia sẻ: maiphuongdc | Lượt xem: 1960 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Quản lý và khai phá dữ liệu trên lưới Grid, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
phù hợp sẽ sử dụng ProActive để đẩy các công việc lên các tài nguyên tình toán đó thực thi.
Lớp dưới cùng là lớp Grid Infrastructure là hạ tầng tính toán lưới kết nối nhiều tài nguyên tính toán với nhau. Ta lưu ý rằng các tài nguyên tính toán này là không đồng nhất và sự kết nối giữa chúng là lỏng lẻo.
Bài toán phân loại đất rừng
Bài toán: Xây dựng mô hình để nhận dạng loại rừng dựa trên các thông tin địa lý của đất. Dữ liệu dùng để training là Forest Cover Type mô tả bên dưới.
Môtả dữ liệu: Dữ liệu được lấy từ UCI KDD Archive website [5]. Website này cung cấp nhiều datasets lớn, thực tế, thuộc nhiều lĩnh vực. Các dữ liệu này được chia sẻ phục vụ cho việc thử nghiệm trong các nghiên cứu về Knowledge Dicovery & Data Mining.
Tập dữ liệu chọn sử dụng là dữ liệu: Forest Cover Type [5]. Tập dữ liệu chứa thông tin về loại rừng (forest cover type) của từng ô đất (cell). Mỗi ô có kích thước (30mx30m). Đối với mỗi ô đất, dữ liệu còn cung cấp kèm theo các thông về điều kiện tính chất & vị trí địa lý (cartographic) của cell đó.
Nguồn gốc dữ liệu: Thông tin về loại rừng các cell được được lấy từ US Forest Service (USFS) Region 2 Resource Information System (RIS) data. Thông tin về địa lý của cell được lấy từ nguồn US Geological Survey (USGS) and USFS data.
Tính chất dữ liệu:
Kích thước dữ liệu: 71MB
Số hàng dữ liệu: 581012
Số cột thuộc tính: 12 thuộc tính địa lý (10 cột thuộc tính quantitative, 2 cột qualitative) và 1 cột thuộc tính phân loại.
Tổng quan giải thuật: Giải thuật chia làm 2 giai đoạn
Giai đoạn 1: dùng giải thuật cluster để tìm nén dữ liệu của từng loại rừng thành một số ít các tâm. Giải thuật song song 2Phase-KMean chạy trên Grid
Giai đoạn 2: dùng ANN để xây dựng bộ phân loại rừng dựa trên kết quả nén dữ liệu thu được ở giai đoạn 1. Giải thuật này chạy tuần tự trên máy cục bộ
Ý nghĩa các cột thuộc tính dữ liệu:
Hình 8: Các cột thuộc tính dữ liệu rừng
Để minh họa cho ý nghĩa của GDM và hệ thống hạ tầng GRID được xây dựng, bài toán này đã được hiện thực và chạy thử nghiệm thành công trên hệ thống GDM và GRID trong dự án EDAGRID. Xem phần phụ lục để có thông tin chi tiết về cách cài đặt và vận hành hệ thống thử nghiệm.
Ngoài ra, với những kết quả khả quan ban đầu, đã có một số công ty đặt vấn đề chuyển giao công nghệ kết quả của dự án này để xử lý các các tập dữ liệu kinh doanh của họ.
Tổng kết
Nhóm nghiên cứu phần “quản lý và khai phá dữ liệu trên lưới” đã hoàn thành các nhiệm vụ nghiên cứu của dự án ươm tạo công nghệ theo như bản thuyết minh đã đăng ký. Tổng kết tóm tắt các kết quả chính đã đạt được như sau:
Tim hiểu, nghiên cứu và đề xuất giải thuật gom cụm dữ liệu phù hợp với tính chất của môi trường lưới: giải thuật phân bố 2-Phase K-Mean. Đặc biệt, giải thuật 2-Phase K-Mean có tính co dãn (scalability) tốt kết hợp với nguồn tài nguyên lớn được cung cấp từ môi trường lưới có khả năng khai phá được một khối lượng dữ liệu lớn trong thực tế nên có tính áp dụng cao.
Hiện thực và triển khai giải thuật 2-Phase K-Mean triển khai trên ProActive và Globus Toolkit.
Tích hợp ứng dụng khai phá dữ liệu trên Grid với hạ tầng Grid được xây dựng bởi một nhóm nghiên cứu khác trong dự án này tại ĐHBK-ĐHQG Tp. HCM
Phát triển hệ thống GDM dựa trên các grid services với các chức năng như đã trình bày trong phần nhiệm vụ bên trên. Đây là một hệ thống quản lý dữ liệu trên lưới rất mạnh, có khả năng hỗ trợ nhiều ứng dụng về CSDL trên lưới.
Phát triển một ứng dụng thực tế: “bài toán phân loại đất rừng” để minh họa cho hoạt động ổn định và các công nghệ đã được lựa chọn của hệ thống.
Viết và đăng 3 bài báo khoa học: Đã báo cáo 2 bài báo tại hội nghị quốc tế ACOMP07, 1 bài đã đăng trong tại tạp chí khoa học và công nghệ, ĐHQG Tp. HCM (xem phần phụ lục để có thêm thông tin chi tiết)
Ngoài ra, có rất nhiều công ty quan tâm đến kết quả nghiên cứu của đề tài và đã có 3 công ty ký thỏa thuận sẽ hợp tác để đầu tư vào quá trình chuyển giao công nghệ liên quan đến kết quả của đề tài (phần quản lý và khai phá dữ liệu).
Tài liệu tham khảo
[1]
Jiawei Han, Micheline Kamber: “Data Mining-Concepts and Techniques”, Morgan Kaufmann, first edition, 2000
[2]
Nguyễn Đức Cường: “Flexible information management strategies in Machinel learning and Data mining”, PhD Thesis, Cardiff University, UK, 2004.
[3]
Dương Ngọc Hiếu: “Báo cáo nghiệm thu đề tài NCKH cấp trường 2007: Thư viện cho các ứng dụng Dâtmining”, 2007
[4]
Proactive:
[5]
UCI:
[6]
DANG Tran Khanh, PHAN Thi Thanh Huyen, VO Hoang Tam: A Comprehensive Framework for Grid Data Management. In Proceedings of International Workshop on Advanced Computing and Applications, Ho Chi Minh City, March 14-16, 2007
[7]
DANG Tran Khanh, PHAN Thi Thanh Huyen, VO Hoang Tam: A Comprehensive Framework for Grid Data Management. Special Issue of Science & Technology Journal, Vietnam National University-Ho Chi Minh City, ISSN 1859-0128, Vol. 10, No. 13, Dec 2007, pp. 97-108
[8]
The Globus Toolkit: www.globus.org/toolkit, 2006
[9]
The OGSA-DAI project: www.ogsadai.org.uk, 2006
[10]
Anil L. Pereira, Vineela Muppavarapu, and Soon M. Chung, “Role-Based Access Control for Grid Database Services Using the Community Authorization Service”, IEEE Transactions on Dependable and Secure Computing, Vol. 3, No. 2, pp. 156-166, 2006
[11]
IBM OGSA-DAI Data Replication website: www.aiai.ed.ac.uk/~ychen/ibm_ogsadai/ibm-ogsadai-index.html, 2006
[12]
Philip A. Bernstein, “Middleware: A Model for Distributed System Services”, Communication of ACM, Vol. 39, No. 2, pp. 86-98, 1996
[13]
Michael Di Stefano, “Distributed Data Management for Grid Computing”, John Wiley & Sons, Inc., 2005
[14]
Borja Sotomayor, Lisa Childers, “Globus Toolkit 4: Programming Java Services”, Morgan Kaufmann Publishers, 2006
[15]
LY Hoang Hai, DUONG Ngoc Hieu, DANG Tran Khanh, NGUYEN Duc Cuong, TRAN Van Hoai, THOAI Nam: Parallelizing Data Mining Algorithms on the Grid. In Proceedings of International Workshop on Advanced Computing and Applications, Ho Chi Minh City, March 14-16, 2007
[16]
A Min Tjoa, Ivan Janciak, Alexander Woehrer and Peter Brezany. “Providing an Integrated Framework for Knowledge Discovery on Computational Grids”, 5th International Conference on Knowledge Management, Graz, 2005
[17]
SIMDAT website: www.simdat.org, 2006
[18]
The EU Provenance project: www.gridprovenance.org, 2006.
[19]
Secure Data Grid website: www.cs.wright.edu/%7Eschung/SDG/sdg.htm, 2006.
Luis Ferreira, et al, “Introduction to Grid Computing with Globus”, IBM Corp, 2002.
[20]
Ian Foster, “Globus Toolkit Version 4: Software for Service-Oriented Systems”, IFIP International Federation for Information Processing, pp. 2-13, 2005.
[21]
Phan Nhat Hai, Nguyen Hoang Anh, Tran Minh Quang, Ly Hoang Hai, Dang Tran Khanh: Towards an Extensible Library System for Data Mining. In Proceedings of International Workshop on Advanced Computing and Applications, Ho Chi Minh City, March 12-14, 2008, pp. 121-131
[22]
Jaideep Vaidya, Chris Clifton, Michael Zhu: Privacy Preserving Data Mining, Springer Verlag, 2006
[23]
R. Elmasri, S.B. Navathe: Fundamentals of Database Systems, 5th Edition, Pearson Addison-Wesley, 2007
[24]
S. Castano, M. Fugini, G. Martella, and P. Samarati: Database Security, ACM Press & A-W, 1995
[25]
W. Mao: Modern Cryptography - Theory and Practice, 3rd Ed., Prentice Hall, 2003
[26]
R.B. Natan: Implementing Database Security and Auditing, Elsevier Digital Press, 2005
[27]
Bing Liu: Web Data mining, Springer Verlag, 2007
Phụ lục A: GDM-API
Các chức năng mà GDM hỗ trợ được phân loại thành 2 nhóm chính:
Các chức năng cung cấp cho client giao tiếp với GDM
Các chức năng cung cấp cho administrator để quản lý GDM
Các chức năng này đều có đưa ra các ngoại lệ (exception) do GDM sinh ra trong trường hợp thao tác xử lý bị lỗi. Người sử dụng (client hoặc administrator) nên bắt các ngoại lệ này để biết lý do tại sao thao tác xử lý không thành công.
Các chức năng hỗ trợ cho client
Lấy danh sách các data source mà GDM hỗ trợ truy xuất:
public String[] getDataSources() throws Exception;
Bất kì client nào cũng có thể gọi chức năng này để lấy danh sách các data source mà hiện tại GDM đang hỗ trợ truy xuất.
Kết nối vào một data source quản lý bởi GDM thông qua username và password:
public boolean connect(String dataSource, String user, String password) throws Exception;
Client sử dụng chức năng này để kết nối vào một data source với một user name và password cụ thể để có thể truy xuất dữ liệu. Nếu cả 3 thông tin đều hợp lệ thì phương thức trả ra giá trị True, ngược lại phương thức trả ra giá trị False.
Chỉ khi nào client kết nối thành công thì mới có thể thực thi các chức năng bên dưới.
Lấy danh sách các bảng dữ liệu trong một data source
public String[] getTables() throws Exception;
Sau khi đã kết nối thành công vào data source, user mới có thể lấy danh sách các bảng dữ liệu trong data source.
Lấy cấu trúc của một bảng dữ liệu
public Schema getTableSchema(String table_name) throws Exception;
Client sử dụng chức năng này để lấy cấu trúc của một bảng dữ liệu, kết quả trả về là một đối tượng thuộc lớp Schema. Nếu giá trị thông số table_name không phù hợp thì phương thức trả ra trị Null. Với:
public class Schema {
public ColumnInfo[] columns;
public Schema() {
}
}
public class ColumnInfo {
public String name;
public String sql_type;
public ColumnInfo(String name, String sql_type) {
this.name = name;
this.sql_type = sql_type;
}
public ColumnInfo() {
this.name = " ";
this.sql_type = " ";
}
}
Lấy số hàng dữ liệu (số lượng record) của một bảng dữ liệu
public int getNumberOfRow(String table_name) throws Exception;
Phương thức này trả ra số lượng record của một bảng trong data source mà client đang kết nối vào (bằng tổng số record của các bảng con ở các partition).
Client gửi định danh credential của mình để có thể truy xuất dữ liệu
public boolean sendCredential(String credential) throws Exception;
Sau khi kết nối thành công và lấy các thông tin meta data của data source, client phải gửi định danh của mình để thực hiện truy xuất dữ liệu. Định danh này dùng để tính phí cho các thao tác truy xuất sau này.
Lock một bảng và lấy thông tin về các partition của bảng đó
public Partition[] lockTable(String table_name) throws Exception;
Client đăng kí xin lock một bảng và lấy thông tin về các partition của bảng đó để có thể chủ động truy xuất dữ liệu trên mỗi partition.
Với:
public class Partition {
public String partition_id= null;
public String host_name = null;
public long n_record=0;
public Partition(){
}
}
Unlock một bảng
public boolean unlockTable(String table_name) throws Exception;
Client sử dụng chức năng này để unlock một bảng đã lock trước đó.
Xin một ticket data để lấy dữ liệu trên một partition nào đó của bảng
public String getTicketData(String table_name, String partition, int start_index, int stop_index, String check_sum) throws Exception;
Client sử dụng chức năng này để xin một ticket để truy xuất dữ liệu của một bảng trên một partition, chỉ số record từ start_index đến stop_index.
Nếu các thông số đều hợp lệ, GDM sẽ trả về cho client một ticket_id. Client có thể tự sử dụng ticket_id này để truy xuất dữ liệu, hoặc có thể chuyển ticket_id cho người khác sử dụng. Tham số check_sum dùng để xác thực người có quyền hợp pháp để thực thi ticket.
Xin một ticket data để lấy dữ liệu toàn bộ bảng
public String getTicketData(String table_name, String check_sum) throws Exception;
Client sử dụng chức năng này để xin một ticket truy xuất dữ liệu của toàn bộ bảng trong data source, không quan tâm đến các partition cụ thể bên dưới.
Truy xuất dữ liệu ứng với một ticket data
public Vector[] getData(Token token) throws Exception;
Một client nào đó thực thi ticket getdata để truy xuất dữ liệu. Token gồm ticket_id và check_sum để xác thực người có quyền hợp pháp để thực thi ticket.
Với:
public class Token {
public String ticket_id;
public String check_sum;
public Token(String ticket_id, String check_sum) {
this.ticket_id = ticket_id;
this.check_sum = check_sum;
}
}
Xin một ticket insert để thêm dữ liệu vào bảng
public String getTicketInsertRecords(String table_name, String[] column_names, String check_sum) throws Exception;
Client sử dụng chức năng này để xin một ticket insert dữ liệu vào bảng. Nếu muốn thêm dữ liệu vào đầy đủ các cột của bảng thì để thông số column_names có trị null.
Insert dữ liệu vào bảng
public boolean insertRecords(Token token, Vector[] record_set) throws Exception;
Client sử dụng chức năng này để thực thi ticket insert dữ liệu. Thông số record_set là các record muốn insert. Mỗi record là một vector, trị ứng với mỗi cột được lưu trữ trong vector đó. Chuỗi và ngày tháng bao bởi dấu nháy đơn ‘ ’, số không có dấu nháy.
Xin một ticket create table để tạo bảng
public String getTicketCreateTable(String table_name, Schema schema, String check_sum) throws Exception;
Client sử dụng chức năng này để xin một ticket tạo bảng trong data source đang kết nối với cấu trúc của bảng được miêu tả trong đối tượng schema.
Thực thi tạo bảng
public boolean createTable(Token token) throws Exception;
Client sử dụng chức năng này để thực thi ticket tạo bảng.
Load dữ liệu vào data source
public boolean loadData(String table_name, Vector[] record_set) throws Exception;
Client sử dụng chức năng này để load dữ liệu vào bảng table_name. Client không cần quan tâm đến sự phân bố của các partition bên dưới. Thông số record_set là các record muốn load vào bảng. Mỗi record là một vector, trị ứng với mỗi cột được lưu trữ trong vector đó. Chuỗi và ngày tháng bao bởi dấu nháy đơn ‘ ’, số không có dấu nháy.
Client sau khi kết nối thành công vào data source và đã gửi định danh credential thì có thể load dữ liệu vào bảng, không cần phải thông qua quá trình xin ticket và thực thi ticket. Tuy nhiên, khi tính phí thì GDM xem mỗi lần client load data cũng như là một lần thực thi ticket, và cũng được liệt kê trong chi tiết tính phí.
Xin một ticket drop table để xóa bảng
public String getTicketDropTable(String table_name, String check_sum) throws Exception;
Client sử dụng chức năng này để xin một ticket xóa bảng trong data source.
Thực thi xóa bảng
public boolean dropTable(Token token) throws Exception;
Client sử dụng chức năng này để thực thi ticket xóa bảng.
Các chức năng hỗ trợ cho GDM administrator
Thêm một data source
public boolean addDataSource(String datasource_id, String datasource_name, String desc) throws Exception;
Aministrator sử dụng chức năng này để thêm vào một data source với các thông tin: mã số data source, tên data source, và mô tả về data source.
Thêm một data resource
public boolean addDataResource(String data_resource_id, String data_source_id, String handle, String host_name, String data_service_resource) throws Exception;
Aministrator sử dụng chức năng này để thêm một data resource cho một data source.
Thêm một ứng dụng sẽ sử dụng các data source quản lý bởi GDM
public boolean addApplication(String app_name, String app_desc) throws Exception ;
Aministrator sử dụng chức năng này để đăng kí một ứng dụng mới muốn truy xuất các dữ liệu do GDM quản lý.
Thêm một user đăng kí sử dụng GDM
public String addUser(String user_name, String app_name, String role, String data_source_id) throws Exception;
Aministrator sử dụng chức năng này để thêm mới một user cho một ứng dụng có tên là app_name, user này có thể truy xuất dữ liệu trong data source có mã là data_source_id, chi phí của các hành động truy xuất dữ liệu này sẽ được tính cho ứng dụng app_name. Phương thức này trả ra password ban đầu mà hệ thống sinh ngẫu nhiên cho user.
Xóa một user đã đăng kí sử dụng GDM
public boolean deleteUser(String user_name, String app_name) throws Exception;
Aministrator sử dụng chức năng này để xóa một user của ứng dụng app_name.
Tính phí cho một ứng dụng
public double computeFee(String app_name, String from_date, String to_date) throws Exception;
Aministrator sử dụng chức năng này để tính phí cho ứng dụng app_name. Thời gian tính phí từ ngày from_date đến ngày to_date. Định dạng ngày tháng được sử dụng là “yyyy-mm-dd”.
Lấy chi tiết tính phí cho một ứng dụng
public Vector[] getFeeDetails(String app_name, String from_date, String to_date) throws Exception;
Aministrator sử dụng chức năng này để lấy các thông tin chi tiết khi tính phí cho ứng dụng app_name từ ngày from_date đến ngày to_date. Thông tin chi tiết gồm các ticket được tính phí, số record tiket truy xuất, phí thu ứng với ticket này.
Thiết lập lại giá cho một loại ticket
public boolean setTicketPrice(String ticket_type, double unit_price) throws Exception;
Aministrator sử dụng chức năng này để điều chỉnh lại mức phí đơn vị cho một loại ticket_type.
Đặc tả các lớp hiện thực hệ thống
GDM Client
Tên lớp
Chức năng
Token
Chứa ticket_id và check_sum
ColumnInfo
Chứa thông tin một cột trong table: name và sql_type
Schema
Chứa schema của một table
Partition
Chứa thông tin về một partition: partition_id, host_name, n_record
Utility
Chuyển đổi qua lại giữa string và các lớp trên
IGDMClient
Định nghĩa interface để client và admin làm việc với GDM.
GDM_Client
Hiện thực interface IGDMClient.
Lớp này có sử dụng Utility để chuyển đổi qua lại giữa string và các kết quả trả về cho client.
Lớp này sẽ gọi các hàm của lớp GDM_Interface bên dưới.
TestClient
Các ví dụ về cách sử dụng interface cung cấp cho client.
TestAdmin
Các ví dụ về cách sử dụng interface cung cấp cho Admin.
Lớp Token
Các field dữ liệu
public String ticket_id: định danh của ticket.
public String check_sum: để kiểm tra tính hợp lệ của ticket, ví dụ thông tin về người thực thi ticket.
public String executer: người được cấp quyền thực thi ticket này, khi nào executer và check_sum phù hợp nhau thì mới cho phép thực thi ticket.
Các phương thức
public Token(String ticket_id, String check_sum, String executer): hàm khởi tạo
Lớp ColumnInfo
Các field dữ liệu
public String name: tên cột.
public String sql_type: kiểu dữ liệu của cột.
Các phương thức
public ColumnInfo(String name, String sql_type): hàm khởi tạo.
Lớp Schema
Các field dữ liệu
public ColumnInfo[] columns: danh sách thông tin của các cột trong một bảng.
Các phương thức
không có
Lớp Partition
Các field dữ liệu
public String partition_id: định danh của partition.
public String host_name: địa chỉ IP của máy chứa partition.
public long n_record: số lượng record trong partition.
Các phương thức
không có
Lớp Utility
Các field dữ liệu
không có
Các phương thức
public static String[] getDataSources(String sql_result): trả ra danh sách các data_source từ kết quả dạng string của câu truy vấn.
public static String[] getTables(String sql_result): trả ra danh sách các bảng trong data_source từ kết quả dạng string của câu truy vấn.
public static Partition[] lockTable(String sql_result): trả ra danh sách các đối tượng thuộc lớp Partition từ kết quả dạng string của câu truy vấn.
public static Vector[] getData(String sql_result): trả ra vector hàng và cột từ kết quả dạng string của câu truy vấn.
public static String prepare_columns_insert(String[] column_names): chuyển danh sách các cột cần insert dữ liệu thành một string.
public static String prepare_data_insert(Vector[] record_set): chuyển dữ liệu cần insert ở dạng Vector sang dạng string.
public static Schema getTableSchema(String sql_result): trả ra đối tượng lớp Schema từ kết quả dạng string câu truy vấn.
public static String getTableStructure(Schema schema): chuyển đối tượng Schema thành dạng String.
public static String getTokenString(Token token): chuyển một token thành một chuỗi.
Lớp GDM_Client
Các field dữ liệu
GDM_Interface gdm: đối tượng GDM cung cấp interface cho client.
Các phương thức
Các phương thức trong interface đã trình bày trong mục 1.(Interface giao tiếp của hệ thống)
GDM Core
Tên lớp
Chức năng
GDM_Core
Cung cấp các chức năng cơ bản của GDM
GDM_Interface
Đóng gói các chức năng public của lớp GDM_Core
DaiBasicActivity
Cung cấp các hàm làm việc với OGSA_DAI
GDM_Exception
Hiện thực các exception để GDM sinh ra trong trường hợp thao tác xử lý bị lỗi
MyDate
Hiện thực lớp MyDate để biểu diễn lớp các đối tượng chứa ngày, tháng, năm
Constants
Định nghĩa các hằng số được sử dụng trong hiện thực GDM Client và GDM Core
Lớp DaiBasicActivity
Các field dữ liệu
private static String column_seperator: dùng để ngăn cách các cột của một hàng trong dữ liệu trả về bởi câu truy vấn.
private static String record_seperator: dùng để ngăn cách các hàng trong dữ liệu trả về bởi câu truy vấn.
Các phương thức
public static DataService connectResource(String handle, String id): kết nối vào một service của OGSA-DAI để có thể truy xuất dữ liệu bên dưới.
public static Object executeSelectQuery(DataService service, String sql, int output_type): thực thi một câu select sql lên database quản lý bởi một service của OGSA-DAI.
public static int executeUpdateQuery(DataService service, String sql): thực thi một câu update sql lên database quản lý bởi một service của OGSA-DAI.
public static Object getDatabaseSchema(DataService service, int output_type): lấy thông tin về schema của database quản lý bởi một service của OGSA-DAI.
private static Vector translateSchemaToVector(DatabaseSchemaMetaData schema): chuyển database schema từ dữ liệu lớp DatabaseSchemaMetaData thành dữ liệu kiểu vector.
private static String translateVectorSchemaToString(Vector vector_schema): chuyển database schema từ dữ liệu kiểu vector thành dữ liệu kiểu string.
Lớp GDM_Exception
Các field dữ liệu
Không có
Các phương thức
public GDM_Exception(String message): hàm khởi tạo để tạo ra một đối tượng Exception với thông tin là message.
public String toString(): trả ra chuỗi thông tin cần thông báo cho người sử dụng khi có exception xảy ra.
Lớp GDM_Core
Các field dữ liệu
private static final DataService gdmDataService: service dùng để tương tác với OGSA-DAI nhằm truy xuất và cập nhật metadata của GDM.
private boolean connected: client đã connect vào GDM hay chưa.
private String data_source: chứa data_source mà client đang connect vào.
private String data_resource_ids: những data_resource trong data_source đang connect.
private String database_schema: schema của data_source mà client đang connect.
private boolean credential_sent: client đã sent credential hay chưa.
private String credential: credential của client.
private String user_role: role của client đang connect vào.
private String user_name: user name của client đang connect vào.
Các phương thức
public String getDataSources(): trả ra các data_source mà GDM đang quản lý.
public boolean connect(String dataSource, String user, String password): một client xin kết nối với GDM.
public void disconnect(): client ngưng kết nối với hệ thống.
public String getTables(): trả ra danh sách các table có trong data_source.
private String getDataResourceId(int index): trả ra định danh của data_resource có chỉ số index trong các data_resource của data_source mà client dang connect.
private int getNumberResourceId(): trả ra số lượng data_resource trong data_source hiện client đang connect.
private String executeSelectQuery(DataService service, String sql): thực thi một câu cập nhật select sql thông qua một service của OGSA-DAI.
private int executeUpdateQuery(DataService service, String sql): thực thi một câu truy vấn update sql thông qua một service của OGSA-DAI.
private String generateTicketId(): sinh ra một ticket_id mới để cấp cho client, đảm bảo ticket_id không bị trùng lắp với các id cũ đã sinh trước đó.
private String getDatabaseSchema(DataService service): trả ra schema của data_source, gồm những bảng nào, cấu trúc mỗi bảng.
private String[] getHandleAndResourceId(String data_resource_id): trả ra handle và resource id dùng để liên kết vói OGSA-DAI.
private String doGetTableSchema(String table_name): lấy thông tin từ metadata để trả ra schema của một table.
public String getTableSchema(String table_name): trả ra cho client thông tin về schema của một table.
public int getNumberOfRow(String table_name): trả ra số lượng hàng của một bảng trên tất cả các data_source.
public boolean sendCredential(String credential): client gửi credential cho GDM.
public String lockTable(String table_name): client xin lock một table, trả ra thông tin về các partition của table đó trên các data_resource.
public boolean unlockTable(String table_name): client xin unlock một table.
public String getTicketInsertRecords(String table_name, String column_names, String check_sum): client xin một ticket insert record.
private String getDataResoureWithSmallestData(String table_name): trả ra partition trên data_resource nào chứa số hàng ít nhất trong các partition của một table.
public boolean insertRecords(String token_string, String data_insert): client thực thi ticket insert record.
public boolean loadData(String table_name, String data_insert): client load dữ liệu vào bảng.
public String getTicketData(String table_na
Các file đính kèm theo tài liệu này:
- EDAGrid-GDMDM.doc