Tài liệu Thiết kế Cơ sở dữ liệu

Module Logger
LOG
Phiên bản1.0
Hệ thốngHệ thống Xác thực
ModuleLOG - Logger
Cơ sở dữ liệuOpenSearch
Chỉ mụclog-events
Ngày tạo2026-08-05
Tác giảNam Nguyen
SRS liên quanSRS Logger

Mục lục

1. Tổng quan

1.1 Mục đích

Tài liệu này định nghĩa thiết kế lưu trữ dữ liệu cho module Logger. Khác với các module khác dùng PostgreSQL, module Logger dùng OpenSearch làm kho lưu trữ chính cho tìm kiếm toàn văn, phân tích và bảng điều khiển.

1.2 Chiến lược Cơ sở dữ liệu

Khía cạnhQuyết định
Cơ sở dữ liệuOpenSearch (kho lưu trữ chính)
Chỉ mụclog-events
Khóa chínheventId (UUID)
Trường thời giantimestamp (ISO 8601)
Thời gian lưu trữ90 ngày (có thể cấu hình qua ISM policy)

1.3 Yêu cầu được giải quyết

Yêu cầu SRSGiải pháp Cơ sở dữ liệu
FR-001 Thu thập Sự kiện LogChỉ mục OpenSearch để lưu log
FR-002 Truy vấn LogTìm kiếm toàn văn qua OpenSearch
FR-003 Phân tích LogTổng hợp OpenSearch
FR-004 Giám sát Thời gian thựcOpenSearch change feed + WebSocket
NFR-002 Thời gian Phản hồi Truy vấnChỉ mục keyword cấp trường để lọc nhanh
NFR-004 Lưu trữ LogISM policy: vòng đời 90 ngày (hot/warm/cold/xóa)

1.4 Sơ đồ Schema Chỉ mục

Sơ đồ ERD LOG
Hình 1: Module Logger - Schema Chỉ mục OpenSearch

2. Schema Chỉ mục

2.1 Chỉ mục: log-events

{
  "index": "log-events",
  "mappings": {
    "properties": {
      "eventId":     { "type": "keyword" },
      "source":      { "type": "text", "fields": { "keyword": { "type": "keyword" } } },
      "level":       { "type": "keyword" },
      "action":      { "type": "keyword" },
      "message":     { "type": "text" },
      "input":       { "type": "text" },
      "output":      { "type": "text" },
      "error":       { "type": "text" },
      "exception":   { "type": "text" },
      "metadata":    { "type": "object", "enabled": true },
      "traceId":     { "type": "keyword" },
      "userId":      { "type": "keyword" },
      "timestamp":   { "type": "date" }
    }
  }
}

3. Ánh xạ Trường

TrườngLoạiTìm kiếm đượcMô tả
eventIdkeywordChính xácMã định danh sự kiện duy nhất (UUID)
sourcetext + keywordToàn văn + Chính xácTên dịch vụ gửi (auth, sms, v.v.)
levelkeywordChính xácMức độ log: debug, info, warn, error
actionkeywordChính xácHành động sự kiện (login, register, send_otp, v.v.)
messagetextToàn vănThông báo log dễ đọc
inputtextToàn vănDữ liệu đầu vào dưới dạng chuỗi JSON
outputtextToàn vănKết quả thành công dưới dạng chuỗi JSON
errortextToàn vănThông báo lỗi khi thất bại
exceptiontextToàn vănNgoại lệ với stack trace
metadataobjectLồng nhauDữ liệu ngữ cảnh bổ sung
traceIdkeywordChính xácMã truy vết phân tán
userIdkeywordChính xácMã người dùng liên kết
timestampdateKhoảngThời gian sự kiện (ISO 8601)

4. Vòng đời Chỉ mục

Giai đoạnHành độngĐiều kiện
HotChỉ mục tài liệuMặc định
WarmGộp bắt buộc, thu nhỏSau 7 ngày
ColdChỉ đọc, nénSau 30 ngày
DeleteXóa chỉ mụcSau 90 ngày

5. Từ điển Dữ liệu

Chỉ mụcMô tảGiải quyếtƯớc tính Tài liệu (Năm 1)
log-eventsLog ứng dụng từ tất cả dịch vụFR-001, FR-002, FR-003, FR-00410.000.000

6. Sao lưu & Phục hồi

LoạiTần suấtPhương pháp
SnapshotHàng ngàyOpenSearch Snapshot API lên S3
Phục hồi Chỉ mụcTheo yêu cầuKhôi phục từ snapshot

7. Tối ưu Hiệu suất

Cài đặtGiá trịMô tả
Refresh Interval30sChỉ mục batch để tối ưu throughput
Số lượng Shard3Dựa trên khối lượng dữ liệu
Số lượng Replica1Khả dụng cao
Heap Size4GB50% RAM khả dụng (tối đa 32GB)