- Thêm thư mục:
CHƯƠNG 4: SO SÁNH HIỆU NĂNG MONGODB VỚI MYSQL
4.1.Mô hình thử nghiệm
- Quá trình so sánh hiệu năng giữa MongoDB và MySQL sẽ được thực hiện trên máy tính có cấu hình: + CPU: Core i5 M460 2.53 GHz + RAM: 4GB - Các hệ quản trị CSDL được sử dụng là: + MySQL 5.0.10 + MongoDB 2.4.4
- Xét 1 ứng dụng đơn giản lưu trữ và quản lý log người sử dụng, dữ liệu được sử dụng khi tiến hành so sánh là dữ liệu ngẫu nhiên. Vì thế cần viết một số PHP scripts phục vụ việc sinh dữ liệu với số lượng bản ghi như sau:
+ 5000 users + 5000 địa chỉ IP + 120000 domains
+ 100000 bản ghi log nếu giao thức truy cập là FTP /HTTP.
- Các thao tác đọc/ghi trên CSDL, các tính toán trong việc so sánh hiệu năng giữa MongoDB và MySQL đều được gọi từ các hàm nằm trong 3 PHP Class:
+ RandomElements: chứa các hàm như getRandomDomain(), getRandomFTPMethod().. phục vụ sinh dữ liệu ngẫu nhiên
+ MongoRandomElements và MySQLRandomElements: là 2 lớp kế thừa từ lớp RandomElements, chúng cũng bao gồm các hàm làm việc trực tiếp với 2 hệ quản trị CSDL tương ứng như:
o Sinh 1 danh sách các domains, IPs, users và lưu vào tables/collections.
o Xóa table/collection.
o Kiểm tra sự tồn tại của 1 domain, IP, user trong table/collection.
o Trả về 1 bản ghi thỏa mãn điều kiện
o Trả về 1 nhóm bản ghi thỏa mãn điều kiện.
o Tính tổng số domains, IPs, users
o Lấy 1 domain, IP, user ngẫu nhiên trong table/collection.
o Sinh 1 bản ghi FTP/HTTP log và lưu vào database.
- Nhằm đảm bảo sự chặt chẽ khi tiến hành so sánh, các hàm thuộc 02 lớp kể trên đều được viết giống nhau, điểm khác biệt duy nhất là ở chuỗi kết nối đến CSDL. Mô hình UML như hình dưới đây:
4.2. So sánh
- Việc so sánh sẽ được thực hiện thông qua 2 bước
+ Bước 1: So sánh dựa trên việc thực hiện INSERT bản ghi.
+ Bước 2: So sánh dựa trên việc giả lập 1 số lượng users đồng thời thực hiện truy vấn tới CSDL.
4.2.1. So sánh dựa trên thực hiện câu lệnh INSERT
Ta sẽ thực hiện 4 kiểm thử (tương ứng là 8 PHP scripts) như sau:
Bảng 4.2. Bảng danh sách scripts so sánh câu lệnh INSERT
STT Scripts Test
1 ken1_1_mongo.php,
ken1_1_mysql.php Sinh 5000 users và lưu vào CSDL 2 ken1_2_mongo.php,
ken1_2_mysql.php Sinh 5000 IPs và lưu vào CSDL 3 ken1_3_mongo.php,
ken1_3_mysql.php Sinh 120000 domains và lưu vào CSDL 4 ken3_1_mongo.php,
ken3_1_mysql.php Sinh 100000 bản ghi HTTP logs và lưu vào CSDL Kết quả thu được như trong bảng dưới đây:
Hình 4.2. Kết quả test Sinh 5000 IPs và lưu vào CSDL
Hình 4.2. Kết quả test Sinh 100000 bản ghi HTTP logs và lưu vào CSDL
Bảng 4.2. Kết quả thời gian thực hiện câu lệnh INSERT
MongoDB MySQL