-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.sql
More file actions
136 lines (124 loc) · 7.42 KB
/
init.sql
File metadata and controls
136 lines (124 loc) · 7.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
-- MariaDB 초기화 스크립트
-- Redfin Scraper RSS 데이터베이스 설정
-- 데이터베이스 생성 (이미 존재하면 무시)
CREATE DATABASE IF NOT EXISTS `redfin` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 데이터베이스 사용
USE `redfin`;
-- RawRSSItems 테이블 생성 (크롤링된 원본 RSS 데이터)
CREATE TABLE IF NOT EXISTS `raw_rss_items` (
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
`guid` VARCHAR(500) UNIQUE NOT NULL COMMENT 'RSS 아이템 고유 식별자',
`source` VARCHAR(255) NOT NULL COMMENT 'RSS 소스명',
`title` TEXT NOT NULL COMMENT '아이템 제목',
`link` TEXT NOT NULL COMMENT '아이템 링크',
`comments` TEXT COMMENT '댓글 정보',
`atom_link_alternate` TEXT COMMENT 'Atom 대체 링크',
`atom_link_related` TEXT COMMENT 'Atom 관련 링크',
`atom_link_self` TEXT COMMENT 'Atom 자기 참조 링크',
`feedburner_orig_link` TEXT COMMENT 'Feedburner 원본 링크',
`pub_date` VARCHAR(100) COMMENT '발행일',
`updated` VARCHAR(100) COMMENT '수정일',
`dc_creator` VARCHAR(255) COMMENT 'Dublin Core 작성자',
`author` VARCHAR(255) COMMENT '작성자',
`description` LONGTEXT COMMENT '아이템 설명',
`content_encoded` LONGTEXT COMMENT '인코딩된 콘텐츠',
`category` TEXT COMMENT '카테고리',
`dc_subject` TEXT COMMENT 'Dublin Core 주제',
`enclosure_url` TEXT COMMENT '첨부파일 URL',
`enclosure_type` VARCHAR(100) COMMENT '첨부파일 타입',
`enclosure_length` BIGINT COMMENT '첨부파일 크기',
`media_content` TEXT COMMENT '미디어 콘텐츠',
`media_thumbnail` TEXT COMMENT '미디어 썸네일',
`media_keywords` TEXT COMMENT '미디어 키워드',
`copyright` TEXT COMMENT '저작권 정보',
`creative_commons_license` TEXT COMMENT 'CC 라이선스',
`source_feed` VARCHAR(500) COMMENT '소스 피드 URL',
`slash_comments` INT COMMENT 'Slashdot 댓글 수',
`collected_at` VARCHAR(100) NOT NULL COMMENT '수집 시간',
`etag` VARCHAR(255) COMMENT 'ETag',
`last_modified` VARCHAR(100) COMMENT '마지막 수정 시간',
`raw_xml` LONGTEXT COMMENT '원본 XML 데이터',
`response_headers` TEXT COMMENT 'HTTP 응답 헤더',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '테이블 생성 시간',
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '테이블 수정 시간',
-- 인덱스 생성
INDEX `idx_raw_guid` (`guid`(100)),
INDEX `idx_raw_source` (`source`),
INDEX `idx_raw_collected_at` (`collected_at`(50)),
INDEX `idx_raw_pub_date` (`pub_date`(50)),
INDEX `idx_raw_author` (`author`(100)),
INDEX `idx_raw_category` (`category`(100)),
INDEX `idx_raw_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='크롤링된 원본 RSS 데이터';
-- ProcessedItems 테이블 생성 (분석된 데이터)
CREATE TABLE IF NOT EXISTS `processed_items` (
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
`guid` VARCHAR(500) UNIQUE NOT NULL COMMENT 'RSS 아이템 고유 식별자',
`source` VARCHAR(255) NOT NULL COMMENT 'RSS 소스명',
`title` TEXT NOT NULL COMMENT '아이템 제목',
`link` TEXT NOT NULL COMMENT '아이템 링크',
`text_embedding` LONGTEXT COMMENT '텍스트 임베딩 벡터',
`summary_embedding` LONGTEXT COMMENT '요약 임베딩 벡터',
`extracted_tags` TEXT COMMENT '추출된 태그',
`sentiment_score` DECIMAL(3,2) COMMENT '감정 점수 (-1.0 ~ 1.0)',
`content_type` VARCHAR(50) COMMENT '콘텐츠 타입 (news, article, blog, press_release, interview, opinion)',
`language` VARCHAR(10) COMMENT '언어 (ko, en)',
`readability_score` DECIMAL(5,2) COMMENT '가독성 점수 (0.0 ~ 100.0)',
`key_entities` TEXT COMMENT '핵심 엔티티',
`processed_at` VARCHAR(100) NOT NULL COMMENT '처리 시간',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '테이블 생성 시간',
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '테이블 수정 시간',
-- 인덱스 생성
INDEX `idx_processed_guid` (`guid`(100)),
INDEX `idx_processed_content_type` (`content_type`),
INDEX `idx_processed_language` (`language`),
INDEX `idx_processed_sentiment` (`sentiment_score`),
INDEX `idx_processed_readability` (`readability_score`),
INDEX `idx_processed_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='분석된 RSS 데이터';
-- PublicItems 테이블 생성 (공개 API 데이터)
CREATE TABLE IF NOT EXISTS `public_items` (
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
`guid` VARCHAR(500) UNIQUE NOT NULL COMMENT 'RSS 아이템 고유 식별자',
`title` TEXT NOT NULL COMMENT '아이템 제목',
`link` TEXT NOT NULL COMMENT '아이템 링크',
`published_date` VARCHAR(100) COMMENT '발행일',
`summary` TEXT COMMENT '요약',
`tags` TEXT COMMENT '태그',
`public_url` VARCHAR(500) COMMENT '공개 URL',
`api_version` VARCHAR(20) COMMENT 'API 버전',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '테이블 생성 시간',
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '테이블 수정 시간',
-- 인덱스 생성
INDEX `idx_public_guid` (`guid`(100)),
INDEX `idx_public_published_date` (`published_date`(50)),
INDEX `idx_public_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='공개 API RSS 데이터';
-- RSS 피드 소스 테이블 생성
CREATE TABLE IF NOT EXISTS `rss_feeds` (
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL COMMENT '피드 이름',
`url` VARCHAR(500) UNIQUE NOT NULL COMMENT '피드 URL',
`description` TEXT COMMENT '피드 설명',
`category` VARCHAR(100) COMMENT '카테고리',
`language` VARCHAR(10) DEFAULT 'ko' COMMENT '언어 (ko, en)',
`is_active` BOOLEAN DEFAULT TRUE COMMENT '활성 상태',
`last_crawled` TIMESTAMP NULL COMMENT '마지막 크롤링 시간',
`crawl_interval` INT DEFAULT 3600 COMMENT '크롤링 간격 (초)',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '테이블 생성 시간',
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '테이블 수정 시간',
-- 인덱스 생성
INDEX `idx_rss_feeds_url` (`url`(100)),
INDEX `idx_rss_feeds_category` (`category`),
INDEX `idx_rss_feeds_is_active` (`is_active`),
INDEX `idx_rss_feeds_last_crawled` (`last_crawled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='RSS 피드 소스 정보';
-- 기본 RSS 피드 데이터 삽입
INSERT IGNORE INTO `rss_feeds` (`name`, `url`, `description`, `category`, `language`) VALUES
('OpenAI Blog', 'https://openai.com/blog/rss.xml', 'OpenAI 공식 블로그', 'AI', 'en'),
('Google AI Blog', 'https://ai.googleblog.com/feeds/posts/default?alt=rss', 'Google AI 공식 블로그', 'AI', 'en'),
('Microsoft Research Blog', 'https://www.microsoft.com/en-us/research/feed/', 'Microsoft Research 블로그', 'AI', 'en'),
('NVIDIA Technical Blog', 'https://developer.nvidia.com/blog/category/ai/feed/', 'NVIDIA AI 기술 블로그', 'AI', 'en'),
('Hugging Face Blog', 'https://huggingface.co/blog/feed.xml', 'Hugging Face AI 블로그', 'AI', 'en');
-- 테이블 생성 완료 메시지
SELECT 'MariaDB 테이블 생성 완료!' AS status;