1. Architecture
Search Tool
  • Tổng quan Cấu trúc Hệ thống
  • Bussiness | Logic
    • Nghiệp vụ & Luồng Tìm kiếm
  • Project
    • Search API
      • Tổng quan
      • Architecture
        • User Guide
        • Database Schema
        • System Architecture
        • Code Structure
      • Deployment
        • Product
      • API Interface
        • Tài liệu Tham khảo API
        • Go - Auth
          • Đăng nhập
          • Đăng ký (Public)
        • Go - User
          • Danh sách User (Phân trang)
          • Tạo User
          • Lấy tất cả User
          • Profile cá nhân
          • Chi tiết User
          • Cập nhật User
          • Xóa User
          • Đổi mật khẩu
        • Go - System
          • Nhật ký hoạt động (Phân trang)
          • Cập nhật dữ liệu Search
          • Test Webhook receiver
        • Go - Server
          • Danh sách Server (Phân trang)
          • Tạo Server
          • Lấy tất cả Server
          • Chi tiết Server
          • Cập nhật Server
          • Xóa Server
        • Go - Tasks
          • Tạo nhiều task Search
          • Lấy tất cả task Search
          • Reset trạng thái tất cả nhiệm vụ Search
          • Tạo nhiều task Anchor Text
          • Lấy tất cả nhiệm vụ Anchor Text
          • Reset trạng thái tất cả nhiệm vụ Anchor Text
        • Go - Webhook
          • Webhook cập nhật trạng thái (Dùng WEBHOOK_KEY)
          • Lấy Proxy cho Tool
          • Lấy Proxy có thể rotate
          • Cập nhật kết quả Search
          • Kết quả rotate Proxy
          • Cập nhật kết quả Anchor Text
          • Nhận kết quả từ Tool (v2)
        • Bun - Main
          • Thông tin server Bun
          • Health Check
          • Lấy file Log
        • Bun - Task
          • Danh sách Search Tasks
          • Tạo nhiều Search Tasks
          • Xóa tất cả Search Tasks
          • Xóa Search Task
          • Reset trạng thái Search
          • Reset running process
          • Danh sách Anchor Tasks
          • Tạo nhiều Anchor Tasks
          • Xóa tất cả Anchor Tasks
          • Xóa Anchor Task
          • Reset trạng thái Anchor
          • Reset running process
    • Search tool
      • Tổng quan
      • Architecture
        • User Guide
        • Database Schema
        • System Architecture
        • Code Structure
      • Deployment
        • Product
  • Schemas
    • LoginRequest
    • ProxyRequest
    • CreateUserRequest
    • KeywordTaskRequest
    • UpdateUserRequest
    • SearchAutomationRequest
    • ChangePasswordRequest
    • CreateServerRequest
    • AnchorTextTaskRequest
  1. Architecture

Database Schema

TÀI LIỆU KỸ THUẬT: DATABASE SCHEMA - SEARCH TOOL API#

Hệ thống Search Tool API áp dụng kiến trúc lưu trữ đa cơ sở dữ liệu (Polyglot Persistence). MySQL (thông qua GORM) được sử dụng để lưu trữ các dữ liệu có tính cấu trúc quan hệ chặt chẽ. MongoDB được sử dụng để lưu trữ các dữ liệu có cấu trúc linh hoạt, tần suất đọc ghi cao và khối lượng lớn.

I. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU QUAN HỆ (MYSQL)#

1. Bảng users (Quản trị tài khoản)#

Lưu trữ thông tin người dùng và phân quyền truy cập hệ thống.
Cột (Field)Kiểu dữ liệuRàng buộcĐặc tả chi tiết
idINTPK, AUTO_INCREMENTMã định danh duy nhất của người dùng.
nameVARCHAR(255)NOT NULLTên hiển thị đầy đủ.
passwordVARCHAR(255)NOT NULLMật khẩu truy cập (đã được băm bằng thuật toán bcrypt).
emailVARCHAR(255)UNIQUE, NOT NULLĐịa chỉ email dùng làm thông tin đăng nhập.
first_nameVARCHAR(255)NULLTên gọi.
last_nameVARCHAR(255)NULLHọ.
roleINTDEFAULT 1Cấp độ phân quyền: 0 (Quản trị viên / Admin), 1 (Người dùng thường / User).
created_atDATETIMEAUTOMốc thời gian khởi tạo tài khoản.
updated_atDATETIMEAUTOMốc thời gian cập nhật thông tin gần nhất.
deleted_atDATETIMENULLPhục vụ cơ chế xóa mềm (Soft delete của GORM).

2. Bảng servers (Quản lý Máy chủ Công cụ)#

Lưu trữ danh sách các máy chủ (Tool Server) chịu trách nhiệm thực thi tác vụ quét.
Cột (Field)Kiểu dữ liệuRàng buộcĐặc tả chi tiết
idINTPK, AUTO_INCREMENTMã định danh máy chủ.
nameVARCHAR(255)NOT NULLTên định danh máy chủ (Ví dụ: Server-01-HN).
is_activeTINYINT(1)DEFAULT 0Trạng thái hoạt động: 1 (Đang kích hoạt).
ipVARCHAR(255)NOT NULLĐịa chỉ IP của máy chủ.
is_priorityTINYINT(1)DEFAULT 0Cờ ưu tiên nhận tác vụ: 1 (Mức độ ưu tiên cao).
limit_processINTGiới hạn số lượng tiến trình xử lý đồng thời tối đa.
current_processINTSố lượng tiến trình đang được thực thi tại thời điểm hiện tại.
created_atDATETIMEAUTOMốc thời gian đăng ký máy chủ.
updated_atDATETIMEAUTOMốc thời gian cập nhật thông tin gần nhất.
deleted_atDATETIMENULLPhục vụ cơ chế xóa mềm.

3. Bảng activity_logs (Nhật ký Hoạt động)#

Lưu vết toàn bộ thao tác của người dùng phục vụ cho công tác kiểm toán (Audit Trail).
Cột (Field)Kiểu dữ liệuRàng buộcĐặc tả chi tiết
idINTPK, AUTO_INCREMENTMã định danh bản ghi nhật ký.
user_idINTFK, NULLKhóa ngoại liên kết tới bảng users.
actionVARCHAR(255)NOT NULLTên hành động được thực thi (Ví dụ: Đăng nhập, Tạo keyword).
parameterJSONNULLTham số cấu hình đính kèm trong request (Body/Query).
model_nameVARCHAR(255)NOT NULLTên thực thể dữ liệu chịu tác động.
model_idINTNOT NULLID của bản ghi chịu tác động.
old_valueJSONNULLTrạng thái dữ liệu trước khi thay đổi.
new_valueJSONNULLTrạng thái dữ liệu sau khi thay đổi.
ip_addressVARCHAR(255)Địa chỉ IP của máy trạm thực hiện yêu cầu.
user_agentVARCHAR(255)Chuỗi User-Agent của máy trạm.
created_atDATETIMEAUTOMốc thời gian ghi nhận hành động.
updated_atDATETIMEAUTOMốc thời gian cập nhật bản ghi.

II. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU PHI QUAN HỆ (MONGODB)#

1. Collection keywords (Danh mục Từ khóa)#

Lưu trữ danh sách các từ khóa mục tiêu cần theo dõi biến động xếp hạng SEO.
Trường (Field)Kiểu dữ liệuBắt buộcĐặc tả chi tiết
_idObjectIDCóKhóa chính tự sinh của MongoDB.
keywordStringCóChuỗi từ khóa mục tiêu.
statusNumberCóTrạng thái theo dõi: 0 (Vô hiệu hóa), 1 (Kích hoạt).
deviceArray[Number]CóNền tảng thiết bị cần quét: 0 (Desktop), 1 (Mobile).
engineArray[Number]CóCông cụ tìm kiếm: 0 (GoogleVN), 1 (Google Global), 2 (Cốc Cốc).
result_numNumberCóSố lượng kết quả tối đa cần trích xuất.
created_byNumberKhôngKhóa ngoại tham chiếu người dùng khởi tạo.
is_runningBooleanKhôngCờ trạng thái cho biết từ khóa có đang trong tiến trình quét hay không.
created_atDatetimeKhôngMốc thời gian khởi tạo.
updated_atDatetimeKhôngMốc thời gian cập nhật.

2. Collection keyword_results (Kết quả Quét Từ khóa)#

Lưu trữ khối lượng lớn dữ liệu kết quả phân tích SERP trả về từ các máy chủ công cụ.
Trường (Field)Kiểu dữ liệuBắt buộcĐặc tả chi tiết
_idObjectIDCóMã định danh kết quả.
keyword_idStringCóKhóa ngoại liên kết tới Collection keywords.
keyword_schedule_idObjectIDCóMã định danh phiên quét cụ thể (phục vụ đối chiếu lịch sử).
keywordStringCóChuỗi từ khóa (Lưu trữ dạng giải chuẩn hóa để tối ưu tốc độ truy vấn).
deviceNumberCóNền tảng thiết bị: 0 (Desktop), 1 (Mobile).
device_osNumberKhôngHệ điều hành: 0 (Windows/Android), 1 (MacOS/iOS).
engineNumberCóCông cụ tìm kiếm: 0 (GoogleVN), 1 (Google), 2 (Cốc Cốc).
is_scan_domainBooleanKhôngCờ xác nhận có thực hiện quét sâu vào tên miền hay không.
search_dataObjectKhôngKhối dữ liệu JSON lưu trữ kết quả phân tích quảng cáo (ads) và tìm kiếm tự nhiên (search).
statusNumberKhôngMã trạng thái kết quả: 1 (Thành công), -1 (Lỗi), -2 (Không tìm thấy), -3 (Gặp Captcha).
Cấu trúc đối tượng search_data:
{
  "ads": [
    { "url": "https://...", "rank": 1, "type": "company", "confirm_status": true, "label": "", "title": "...", "description": "..." }
  ],
  "search": [
    { "url": "https://...", "rank": 1, "type": "competitors", "confirm_status": false, "label": "", "title": "...", "description": "..." }
  ]
}

3. Collection proxies (Quản lý Mạng lưới Proxy)#

Lưu trữ và điều phối vòng đời của các nút mạng thay thế (Proxy Nodes).
Trường (Field)Kiểu dữ liệuBắt buộcĐặc tả chi tiết
_idObjectIDCóKhóa chính định danh Proxy.
ipStringCóĐịa chỉ IP của Proxy.
portNumberCóCổng kết nối.
usernameStringKhôngTên tài khoản xác thực Proxy.
passwordStringKhôngMật khẩu xác thực Proxy.
rotate_urlStringCóĐường dẫn API dùng để kích hoạt tiến trình thay đổi IP.
rotate_timeNumberKhôngChu kỳ thay đổi IP tính bằng giây (Mặc định: 60).
next_rotateDatetimeKhôngThời điểm khả dụng cho lần đảo IP tiếp theo.
in_useNumberKhôngBiến đếm số lượng tác vụ đang chiếm dụng Proxy này.
proxy_usedArrayKhôngMảng chứa danh sách mã tác vụ đã sử dụng Proxy.
is_captchaBooleanKhôngCờ báo hiệu Proxy đang bị hệ thống mục tiêu chặn bằng Captcha.
error_countNumberKhôngBộ đếm số lần phát sinh lỗi liên tiếp (Tự động đặt lại về 0 nếu thành công).
is_activeBooleanKhôngTrạng thái khả dụng tổng thể của Proxy.
ip_publicStringKhôngĐịa chỉ IP thực tế lộ diện sau khi thực hiện quá trình đảo IP.
areaStringKhôngPhân loại khu vực Proxy: global hoặc vn.

4. Collection anchor_texts (Kết quả Văn bản Neo)#

Quản lý các tác vụ truy vết liên kết và văn bản neo (Backlinks).
Trường (Field)Kiểu dữ liệuBắt buộcĐặc tả chi tiết
domainStringCóTên miền mục tiêu cần phân tích.
anchor_keyArray[String]CóDanh sách từ khóa văn bản neo cần tìm kiếm.
webhook_urlStringCóĐường dẫn hàm gọi lại (Callback URL) để trả kết quả khi tác vụ hoàn tất.
proxy_urlStringCóĐịa chỉ Proxy được ấn định cho tác vụ này.
searchedNumberKhôngSố chu kỳ đã thực hiện quét.
statusNumberKhôngMã trạng thái kết quả (Tương tự keyword_results).
Ngày cập nhật 2026-03-30 03:23:10
Trước
User Guide
Tiếp theo
System Architecture
Built with