CHƯƠNG 3 : PHÂN TÍCH & THIẾT KẾ HỆ THỐNG
3.3. Thiết kế cơ sở dữ liệu
3.3.3. Chương trình đọc textfile và chuyển thành cơ sở dữ liệu đồ thị
-Do dữ liệu mạng trích dẫn thu thập được là một text file nên cần phải viết chương trình đọc text file và lưu vào cơ sở dữ liệu đồ thị. Chương trình này độc lập với hệ thống CNE và bao gồm những chức năng chính được liệt kê trong Bảng 3.2. Code Scala hiện thực các chức năng này được trình bày trong Phụ Lục 1.
- Bảng 3.2 - Danh mục các hàm của chương trình đọc text file.
- STT - Tên hàm - Chức năng - T rang - 1 - prepare
Graph() - Chuẩn bị cơ sở dữ liệu đồ thị. 1
-
2
- importN odes()
- Đọc text file và tạo các đỉnh trong cơ sở dữ liệu đồ thị. - 4 2 - 3 - createEd ges()
- Đọc thuộc tính references của mỗi đỉnh để tạo
các cạnh trong cơ sở dữ liệu đồ thị.
- 4 3
-
4
- main() - Gọi các hàm ở trên để tạo nội dung cho cơ sở
dữ liệu đồ thị.
- 4 3
-
-Sau đây là mô tả chi tiết về các hàm của chương trình đọc text file và lưu vào cơ sở dữ liệu đồ thị.
3.3.3.I. Hàm prepareGraph()
-Hàm prepareGraph() chuẩn bị cơ sở dữ liệu đồ thị trước khi đọc text file. Hàm này nhận một tham số là graph, là cơ sở dữ liệu đồ thị rỗng trong OrientDb Server, tạo lớp đỉnh Paper và lớp cạnh Reference trong đồ thị. Thuật tốn 3.1 mơ tả chi tiết các công việc của hàm prepareGraph().
- Thuật toán 3.1 — Thuật toán của hàm prepareGraphộ.
-Hàm prepareGraph() chuẩn bị cơ sở dữ liệu đồ thị trước khi đọc text file. Tham khảo Code 1 để xem chi tiết hiện thực hàm prepareGraph().
- Input: graph là cơ sở dữ liệu đồ thị rỗng trong OrientDb server.
- Output: khơng có. 1. Bắt đầu.
3. Tạo các thuộc tính cho lớp Paper.
4. Tạo index cho thuộc tính index của lớp Paper. 5. Tạo lớp cạnh Reference.
6. Tạo các thuộc tính cho lớp Reference. 7. Kết thúc.
3.3.3.2. Hàm importNodes()
-Hàm importNodes() đọc text file và tạo các đỉnh trong cơ sở dữ liệu đồ thị. Hàm này nhận hai tham số. Tham số thứ nhất là graph, là cơ sở dữ liệu đồ thị trong OrientDb server. Cơ sở dữ liệu đồ thị này chỉ có định nghĩa hai lớp Paper và Reference chứ chưa có dữ liệu. Tham số thứ hai là íileName, đây là đường dẫn của text file chứa thông tin các bài báo của mạng trích dẫn. Hàm importNodes() đọc từng dịng của text file, phân tích và tạo các đỉnh trong cơ sở dữ liệu đồ thị. Thuật tốn 3.2 mơ tả chi tiết các cơng việc của hàm importNodes().
- Thuật tốn 3.2 - Thuật toán của hàm importNodes().
-Hàm importNodes() đọc textfile và tạo các đỉnh trong cơ sở dữ liệu đồ thị. Tham khảo Code 2 để xem chi tiết hiện thực hàm importNodes().
- Input: graph, fileName. Trong đó:
- + Graph: là cơ sở dữ liệu đồ thị trong OrientDb server.
- + fileName: là đường dẫn của text file chứa thông tin các bài báo của
mạng trích dẫn.
- Output: khơng có. 1. Bắt đầu.
2. Mở text file để đọc.
3. Lặp qua từng dòng của text file:
a. Nếu dịng đọc được bắt đầu bằng “#*” thì thêm đỉnh vào đồ thị. b. Ngược lại gán giá trị cho các thuộc tính của đỉnh.
4. Đóng text file. 5. Kết thúc.
3.3.3.3. Hàm createEdges()
-Hàm createEdges() đọc thuộc tính references của mỗi đỉnh để tạo các cạnh trong cơ sở dữ liệu đồ thị. Thuộc tính references chứa danh sách index, phân tách bởi dấu chấm phẩy (;), của những bài báo được một bài báo tham khảo. Hàm này nhận một tham số là graph, là cơ sở dữ liệu đồ thị trong OrientDb server. Đồ thị này đã có các đỉnh nhưng chưa có cạnh. Thuật tốn 3.3 mơ tả chi tiết các cơng việc của hàm createEdges().
- Thuật toán 3.3 - Thuật toán của hàm createEdgesộ.
-Hàm createEdges() đọc thuộc tính references của mỗi đỉnh để tạo các cạnh trong cơ sở dữ liệu đồ thị. Tham khảo Code 3 để xem chi tiết hiện thực hàm createEdges().
- Input: graph là cơ sở dữ liệu đồ thị trong OrientDb server.
- Output: khơng có. 1. Bắt đầu.
2. Lấy các đỉnh của graph.
3. Lặp qua từng đỉnh paper của graph:
a. Lấy thuộc tính references của đỉnh paper.
b. Lặp qua từng index chứa trong thuộc tính references:
i. Tìm đỉnh originalPaper, trong graph, tương ứng với index. ii. Tạo cạnh từ đỉnh paper đến đỉnh originalPaper.
iii. Gán các thuộc tính cho cạnh vừa tạo. 4. Kết thúc.
3.3.3.4. Hàm main()
-Hàm main() sẽ gọi các hàm ở trên để tạo nội dung cho cơ sở dữ liệu đồ thị. Trước khi chạy hàm main() phải tạo cơ sở dữ liệu cn (citation network)11 và chạy OrientDb Server. Thuật tốn 3.4 mơ tả chi tiết các cơng việc của hàm main().
- Thuật tốn 3.4 — Thuật toán của hàm main().
-Hàm main() gọi các hàm ở trên để tạo nội dung cho cơ sở dữ liệu đồ thị. Tham khảo Code 4 để xem chi tiết hiện thực hàm main().
11 Có thể tạo cơ sở dữ liệu bằng cách dùng OrientDb Console hoặc OrientDb Studio.
- Input: khơng có.
- Output: khơng có. 1. Bắt đầu.
2. Kết nối đến OrientDb Server để truy cập cơ sở dữ liệu cn. 3. Lấy ra đối tượng graph, tượng trưng cho cơ sở dữ liệu đồ thị.
4. Gọi hàm prepareGraph(graph) để tạo lớp Paper và Reference. Hai lớp này tượng trưng cho đỉnh và cạnh trong đồ thị.
5. Gọi hàm importNodes(graph, íileName) để đọc text file và tạo các đỉnh trên đồ thị.
6. Gọi hàm createEdges(graph) để tạo các cạnh trên đồ thị. 7. Đóng kết nối đến OrientDb Server.
8. Kết thúc.
-Biểu đồ 3.1 cho thấy thời gian chuyển đổi nội dung text file thành cơ sở dữ liệu đồ thị. Do mạng trích dẫn trong text file rất lớn, có 3.272.991 đỉnh và 8.466.777 cạnh, nên thời gian tạo cơ sở dữ liệu đồ thị khá lâu. Thời gian tạo các đỉnh là 1.243 giây (gần 21 phút). Thời gian tạo các cạnh là 12.721 giây (212 phút, hơn 3,5 giờ). Đây là số liệu thống kê khi chạy trên máy có cấu hình như Hình 3.2.
-
- ■ Thời Gian (Phút) 21 212
- - Cơng Việc
- vìew basic intormation about your Computer - Windows edrtion
- Windows 10 Home
- £ 2017 Microsoít Corporation. All rights reserved
- System
- Processor: Intel(R) Core(TM) Í7-3630QM CPU © 2.40GHz 2.40 GHz
- Installed memory (RAM): 8.00 GB (7.89 GB usable)
- System type: 64-bit operating System, x64-based processor
- Pen and Touch: No Pen or Touch Input is availableíorthis Display
- Hình 3.2 - Cấu hình máy chạy chương trình tạo cơ sở dữ liệu đồ thị.