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 服務資料庫結構。
沒有留言:
張貼留言