Database Schema (Kiến Trúc Dữ Liệu)#
Kiến trúc Database của hệ thống Check Domain được thiết kế theo hướng module hóa, phục vụ mục đích giám sát Domain, kiểm tra lịch sử hoạt động Ranking/SEO, và quản lý linh hoạt hệ thống Proxy. Hệ thống sử dụng MySQL làm lưu trữ chính, kết hợp với Elasticsearch để truy vấn các luồng Log lớn.Dưới đây là chi tiết các phân hệ (Entities) cốt lõi của hệ thống:
1. Users & Phân Quyền (RBAC)#
Cấu trúc RBAC sử dụng gói spatie/laravel-permission quản lý quyền chi tiết cho Admin User.Bảng users (Tài khoản người dùng)| Trường dữ liệu | Kiểu dữ liệu | Ràng buộc / Mô tả |
|---|
id | BigInt | Primary Key, Auto Increment |
name | String | Tên định danh của người dùng |
username | String | Tên đăng nhập hệ thống (Unique) |
email | String | Địa chỉ Email (Unique) |
password | String | Mật khẩu đã được mã hóa (Hashed) |
role | Enum | Gồm các quyền: admin, editor, viewer |
limit | Integer | Giới hạn số lượng xử lý/ngày (nếu có) |
is_active | Enum | Y (Active) hoặc N (Inactive) |
Lưu ý: Các bảng roles và permissions được tự động sinh ra và quản lý bởi thư viện Spatie, liên kết với users qua bảng trung gian (pivot table).
2. Core Domain & Khách Hàng#
Mapping thông tin tên miền với tổ chức tương ứng, gắn thẻ (Tag), Quản lý White List/Black List.Bảng domains (Tên miền hệ thống)| Trường dữ liệu | Kiểu dữ liệu | Ràng buộc / Mô tả |
|---|
id | BigInt | Primary Key |
name | String | Tên miền cốt lõi (VD: example.com) |
status | Enum | Trạng thái tên miền (Y / N) |
is_whitelist | Enum | Y (Có), N (Không), U (Chưa xác định) |
is_block | Boolean | Tên miền có đang bị nhà mạng chặn không |
block_type | Integer | Phân loại chặn (1: Full, 2: Viettel/VNPT...) |
is_x / is_y | String | Đánh dấu phân loại nhóm hạ tầng riêng biệt |
Các bảng danh mục liên quan:company_domains: Chứa thông tin tên miền nội bộ công ty (id, link).
branches / groups: Hệ thống phân cấp dự án (Chi nhánh -> Nhóm).
tags: Lưu trữ nhãn dán để phân loại linh hoạt cho các Entities khác.
3. Keywords Management & Search Engine#
Quản lý danh sách từ khóa hệ thống cần theo dõi, kết hợp máy chủ tìm kiếm chuyên biệt để truy vấn rank.Bảng keywords & ranking_keywords| Trường dữ liệu | Kiểu dữ liệu | Ràng buộc / Mô tả |
|---|
id | BigInt | Primary Key |
name | String | Tên từ khóa (VD: "game bài đổi thưởng") |
group_id | BigInt | Foreign Key -> Liên kết tới bảng groups |
branch_id | BigInt | Foreign Key -> Liên kết tới bảng branches |
is_run_daily | Enum | Cờ báo hiệu chạy quét hạng tự động mỗi ngày |
Bảng search_engines (Máy chủ tìm kiếm)Lưu trữ cấu hình API cào dữ liệu: engine (Google, Bing...), searchapi_url, searchapi_key, searchapi_gl (Quốc gia), searchapi_hl (Ngôn ngữ).
4. Proxy & Config Engine#
Lưu trữ Proxy Pools để né Rate-limit từ các service bên ngoài. Quản lý linh động các tác vụ CRON.Bảng proxy_providers (Nhà cung cấp Proxy)| Trường dữ liệu | Kiểu dữ liệu | Ràng buộc / Mô tả |
|---|
id | BigInt | Primary Key |
name | String | Tên NCC (TinSoft, MinProxy, v.v.) |
total_data | Integer | Tổng dung lượng băng thông (GB/MB) |
used_data | Integer | Băng thông đã sử dụng |
is_4g | Enum | Xác định proxy mạng 4G hay ADSL (Y/N) |
Bảng proxies (Danh sách IP Proxy)| Trường dữ liệu | Kiểu dữ liệu | Ràng buộc / Mô tả |
|---|
proxy_name | String | Tên gợi nhớ của Proxy |
host | String | IP/Host kết nối |
port | String | Cổng kết nối |
username | String | Tài khoản xác thực Proxy (nếu có) |
password | String | Mật khẩu xác thực Proxy (nếu có) |
is_active | Enum | Y (Sống), N (Tắt), F (Lỗi/Timeout) |
Bảng servers (Cụm máy chủ cào dữ liệu)Quản lý các server vật lý/VPS thực hiện việc quét: ip_address, limit_process, run_type (auto/manual).
5. Histories & Tracking Logs#
Các bảng ghi lại Logs dữ liệu quá trình check, cron chạy để thống kê và báo cáo. Dữ liệu lớn ở đây được Job đồng bộ sang Elasticsearch.Bảng history_domain_checks (Lịch sử sống/chết của Domain)| Trường dữ liệu | Kiểu dữ liệu | Ràng buộc / Mô tả |
|---|
domain_id | BigInt | Foreign Key -> domains |
status | Integer | Trạng thái (0: Mới, 1: Đang xử lý, 2: Xong, 3: Lỗi) |
message | String | Thông báo chi tiết (Lý do lỗi, v.v.) |
domain_redirect | String | URL bị chuyển hướng tới (Nếu có) |
image_cloud_path | String | Link S3 ảnh chụp màn hình bằng chứng |
video_cloud_path | String | Link S3 video quay màn hình bằng chứng |
Bảng ranking_history_domains (Lịch sử thứ hạng từ khóa)Ghi lại thứ hạng (rank), trạng thái block (block_type) của Domain ứng với từng đợt quét từ khóa (ranking_history_keyword_id).
Data Sync Note: Để đảm bảo hiệu suất truy vấn biểu đồ (Chart), dữ liệu từ các bảng History sẽ được đồng bộ hóa sang Elasticsearch thông qua background job sync:session-histories-to-elasticsearch.
Modified at 2026-03-27 08:42:11