1. 基本 Laravel 資料表:
- users 表:
- 儲存使用者資訊,用於 JWT 身份驗證。
- 欄位:
id
(BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)name
(VARCHAR(255))email
(VARCHAR(255), UNIQUE)email_verified_at
(TIMESTAMP, NULLABLE)password
(VARCHAR(255))remember_token
(VARCHAR(100), NULLABLE)created_at
(TIMESTAMP, NULLABLE)updated_at
(TIMESTAMP, NULLABLE)
- password_resets 表:
- 儲存密碼重設請求的資訊。
- 欄位:
email
(VARCHAR(255), INDEX)token
(VARCHAR(255))created_at
(TIMESTAMP, NULLABLE)
- personal_access_tokens 表:
- 儲存個人存取權杖(如果使用 Laravel Sanctum)。
- 欄位:
id
(BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)tokenable_type
(VARCHAR(255))tokenable_id
(BIGINT UNSIGNED, INDEX)name
(VARCHAR(255))token
(VARCHAR(64), UNIQUE)abilities
(TEXT, NULLABLE)last_used_at
(TIMESTAMP, NULLABLE)expires_at
(TIMESTAMP, NULLABLE)created_at
(TIMESTAMP, NULLABLE)updated_at
(TIMESTAMP, NULLABLE)
- failed_jobs 表:
- 儲存失敗的隊列任務資訊。
- 欄位:
id
(BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)uuid
(VARCHAR(255), UNIQUE)connection
(TEXT)queue
(TEXT)payload
(TEXT)exception
(TEXT)failed_at
(TIMESTAMP)
- jobs 表:
- 儲存隊列任務資訊。
- 欄位:
id
(BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)queue
(VARCHAR(255))payload
(TEXT)attempts
(TINYINT UNSIGNED)reserved_at
(INT UNSIGNED, NULLABLE)available_at
(INT UNSIGNED)created_at
(INT UNSIGNED)
- migrations 表:
- 儲存資料庫遷移紀錄。
- 欄位:
id
(INT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)migration
(VARCHAR(255))batch
(INT)
2. 爬蟲相關資料表:
- crawl_tasks 表:
- 儲存爬取任務資訊。
- 欄位:
id
(BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)url
(VARCHAR(255))depth
(INT)rules
(JSON, NULLABLE)status
(VARCHAR(255))result
(JSON, NULLABLE)created_at
(TIMESTAMP, NULLABLE)updated_at
(TIMESTAMP, NULLABLE)
- crawled_pages 表:
- 儲存已爬取的網頁資訊。
- 欄位:
id
(BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)crawl_task_id
(BIGINT UNSIGNED, INDEX)url
(VARCHAR(255))title
(VARCHAR(255), NULLABLE)content
(LONGTEXT, NULLABLE)http_status
(INT, NULLABLE)crawled_at
(TIMESTAMP, NULLABLE)created_at
(TIMESTAMP, NULLABLE)updated_at
(TIMESTAMP, NULLABLE)
- crawled_images 表:
- 儲存爬取的圖像資訊。
- 欄位:
id
(BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)crawled_page_id
(BIGINT UNSIGNED, INDEX)url
(VARCHAR(255))file_path
(VARCHAR(255))file_size
(INT)created_at
(TIMESTAMP, NULLABLE)updated_at
(TIMESTAMP, NULLABLE)
- crawled_videos 表:
- 儲存爬取的影片資訊。
- 欄位:
id
(BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)crawled_page_id
(BIGINT UNSIGNED, INDEX)url
(VARCHAR(255))file_path
(VARCHAR(255))file_size
(INT)created_at
(TIMESTAMP, NULLABLE)updated_at
(TIMESTAMP, NULLABLE)
- metadata 表:
- 儲存爬取資源的元數據。
- 欄位:
id
(BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)crawled_page_id
(BIGINT UNSIGNED, INDEX)key
(VARCHAR(255))value
(TEXT, NULLABLE)created_at
(TIMESTAMP, NULLABLE)updated_at
(TIMESTAMP, NULLABLE)
3. 資料庫遷移:
使用 Laravel 的資料庫遷移功能,建立上述資料表。
建立遷移檔案:
Bashphp artisan make:migration create_crawl_tables
在遷移檔案中,定義資料表結構。
執行資料庫遷移:
Bashphp artisan migrate
4. 注意事項:
- 根據您的實際需求,可以新增或修改資料表的欄位。
- 對於大量的爬取數據,可以考慮使用資料庫分區或分表來提高效能。
- 對於多媒體檔案,使用雲儲存服務,例如 AWS S3,會比使用本地檔案系統有更好的擴展性。
透過這些步驟,您將能夠建立完整的 Laravel 10 爬蟲 API 服務資料庫結構。
沒有留言:
張貼留言