96
Micro Blog Database 중앙대학교 컴퓨터공학부 데이터베이스 시스템 1조 Tumblr(텀블러) 사이트에 대한 데이터베이스 응용설계 - 최종제출 장익환(20060957) 이상태(20115695) 조동경(20112104) 이소라(20111316) 박소연(20101524)

Analyze of Tumblr.com

Embed Size (px)

Citation preview

Page 1: Analyze of Tumblr.com

Micro����������� ������������������ Blog����������� ������������������ Database����������� ������������������ 중앙대학교 컴퓨터공학부 데이터베이스 시스템 1조 Tumblr(텀블러) 사이트에 대한 데이터베이스 응용설계 - 최종제출 장익환(20060957) 이상태(20115695) 조동경(20112104) 이소라(20111316) 박소연(20101524)

Page 2: Analyze of Tumblr.com

2����������� ������������������ INDEX •  응용����������� ������������������ 분야����������� ������������������

•  참조����������� ������������������ 사이트����������� ������������������

•  응용의����������� ������������������ 기능����������� ������������������

•  ERD����������� ������������������ &����������� ������������������ Scheme����������� ������������������

•  기능별����������� ������������������ SQL����������� ������������������

•  UI설계����������� ������������������

•  DATA분석����������� ������������������ ����������� ������������������

•  INDEXING����������� ������������������ 설계����������� ������������������

Page 3: Analyze of Tumblr.com

3

응용����������� ������������������ 분야����������� ������������������

Page 4: Analyze of Tumblr.com

4 응용����������� ������������������ 분야����������� ������������������ •  우리팀은����������� ������������������ 웹����������� ������������������ 서비스����������� ������������������ 중����������� ������������������ “블로그”를����������� ������������������ 응용����������� ������������������ 분야의����������� ������������������ 한����������� ������������������ 주제로����������� ������������������ 선정하였다.����������� ������������������

•  네이버����������� ������������������ 블로그,����������� ������������������ 티스토리,����������� ������������������ 이글루스����������� ������������������ 등����������� ������������������ 수����������� ������������������ 많은����������� ������������������ 블로그����������� ������������������ 플랫폼����������� ������������������ 중에����������� ������������������ 이러한����������� ������������������ 방대한����������� ������������������ 기능을����������� ������������������ 배제하고,����������� ������������������

기본적인����������� ������������������ 블로그의����������� ������������������ 기능인����������� ������������������ “포스팅”����������� ������������������ 기능을����������� ������������������ 세분화하여����������� ������������������ 여기에����������� ������������������ 추가적으로����������� ������������������ 소셜����������� ������������������ 네트워크����������� ������������������ 기능(SNS)

을����������� ������������������ 제공하는����������� ������������������ 응용����������� ������������������ 분야를����������� ������������������ 생각하였다.����������� ������������������

•  본����������� ������������������ 응용분야는����������� ������������������ 기본적인����������� ������������������ 사용자����������� ������������������ 처리(회원가입,로그인����������� ������������������ 등)의����������� ������������������ 기능과����������� ������������������ 블로깅(글,����������� ������������������ 그림,����������� ������������������ 오디오,����������� ������������������ 비디오)����������� ������������������

기능,����������� ������������������ 그리고����������� ������������������ 추가적으로����������� ������������������ SNS기능의����������� ������������������ 일부인����������� ������������������ 친구관리����������� ������������������ 및����������� ������������������ 타임라인,����������� ������������������ 채팅등의����������� ������������������ 기능을����������� ������������������ 처리한다.����������� ������������������

•  추가적으로����������� ������������������ 사용자들이����������� ������������������ 자신의����������� ������������������ 블로그를����������� ������������������ 꾸밀����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 기능과����������� ������������������ 스킨을����������� ������������������ 사고팔����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 마켓플레이스를����������� ������������������

처리한다.����������� ������������������

Page 5: Analyze of Tumblr.com

5

참조����������� ������������������ 사이트����������� ������������������

Page 6: Analyze of Tumblr.com

참조����������� ������������������ 사이트����������� ������������������

텀블러(tumblr)는����������� ������������������ 사용자들이����������� ������������������ 문자,����������� ������������������ 그림,����������� ������������������

영상,����������� ������������������ 링크,����������� ������������������ 인용,����������� ������������������ 소리를����������� ������������������ 그들의����������� ������������������ 조그마한����������� ������������������

텀블로그에����������� ������������������ 게재할����������� ������������������ 수����������� ������������������ 있게����������� ������������������ 도와����������� ������������������ 주는����������� ������������������ 마이

크로블로그����������� ������������������ 플랫폼이자����������� ������������������ 웹사이트이다.����������� ������������������ ����������� ������������������

����������� ������������������

����������� ������������������ 사용자들은����������� ������������������ 다른����������� ������������������ 사용자를����������� ������������������ 팔로우(follow)

할����������� ������������������ 수����������� ������������������ 있고,����������� ������������������ 또한����������� ������������������ 블로그를����������� ������������������ 꾸밀����������� ������������������ 수����������� ������������������ 있다.����������� ������������������ 사

용자는����������� ������������������ 또한����������� ������������������ 자신이����������� ������������������ 직접����������� ������������������ 스킨을����������� ������������������ 제작하고����������� ������������������

판매할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 마켓����������� ������������������ 플레이스를����������� ������������������ 갖추고����������� ������������������ 있

다.����������� ������������������

www.tumblr.com

Page 7: Analyze of Tumblr.com

7

응용의����������� ������������������ 기능����������� ������������������

Page 8: Analyze of Tumblr.com

응용의����������� ������������������ 기능����������� ������������������ • 텀블러����������� ������������������ 응용����������� ������������������ 기능����������� ������������������

텀블러 DB

포스팅

팔로잉

친구 관리

타임 라인 글 쓰기, 수정, 삭제

글/사진/비디오/오디오 …

스킨

스킨 구매

스킨 제작

블로그 회원관리

계정

Page 9: Analyze of Tumblr.com

9

ERD����������� ������������������ &����������� ������������������ Scheme����������� ������������������

Page 10: Analyze of Tumblr.com

ERD����������� ������������������ 테이블����������� ������������������  블로그����������� ������������������

사용자����������� ������������������

포스트����������� ������������������

테마����������� ������������������

Page 11: Analyze of Tumblr.com

ERD����������� ������������������ 테이블����������� ������������������  • 사용자����������� ������������������

Table Attributes

TBL_USER 사용자SEQ(PK,AI), 사용자ID, 비밀번호, 이메일, 가입일자,사 용자프로필사진URL,상태(0:탈퇴 1:가입 2:일시정지), 탈퇴일자, 정보수정일자, 사용언어, 사용 포스팅 툴

TBL_FRIENDS 친구목록SEQ(PK,AI), 친구 SEQ(FK), 사용자 SEQ(FK)

TBL_BUY_LIST 구매목록SEQ(PK,AI), 구매한사용자SEQ(FK), 구매한 테마 SEQ(FK), 구매일자, 구매방법

TBL_LIKE_LIST 좋아요목록 SEQ(PK,AI), 좋아요 일자, 좋아요한 포스트 SEQ(FK), 좋아요한 사용자 SEQ(FK)

Page 12: Analyze of Tumblr.com

ERD����������� ������������������ 테이블����������� ������������������  • 블로그����������� ������������������

Table Attributes TBL_BLOG 블로그SEQ(PK,AI), 블로그 제목, 만든이 ID(FK), URL, 블로그 설명, 작성일자, 방문자

TBL_BLOG_OPTION 블로그 옵션 SEQ(PK,AI), 미리보기옵션, 페이지당 포스트갯수, 텀블러 공유 옵션, 모바일 레이아웃 옵션, 새창으로 옵션

TBL_BLOG_VIEW_OPTION 블로그 보기 옵션 SEQ(PK,AI), 작은 레이아웃 옵션, 빨간배경 옵션, 파란배경 옵션, 칼라 상단바 옵션, 날짜숨기기 옵션, 배경숨기기 옵션, 탭 숨기기 옵션, 노트 숨기기 옵션, 동적크기 옵션, 무한스크롤 옵션, 소셜링크버튼 없애기 옵션

TBL_BLOG_SOCIAL 블로그 소셜 SEQ(PK,AI), Github URL, 비핸스 URL, 포스퀘어 URL, 라스트FM URL, 구글분석도구 URL, 트위터 URL, 페이스북 URL, 드리블 URL, 플리커 URL, 스카이프 URL, 데비안아트 URL, 비메오 URL, 디스쿼스 URL

Page 13: Analyze of Tumblr.com

ERD����������� ������������������ 테이블����������� ������������������  • 포스트����������� ������������������

Table Attributes TBL_POSTS

포스팅SEQ(PK,AI), 블로그 SEQ(FK), 포스트 타입(0 : 글 1 : 사진 2 : 인용구 3 : 링크 4 : 채팅 5 : 오디오 6 : 동영상), 작성일, 수정일, 작성자IP, 사용자임의URL, 옵션1, 출처URL, 조회수, 라이크한 수

TBL_TAGS 태그SEQ(PK,AI), 포스트SEQ(fk), 태그이름

TBL_POST_WRITINGS

포스팅 SEQ(PK,FK), 제목, 내용

TBL_POST_IMAGE 포스팅 SEQ(PK,FK), 내용

TBL_POST_IMAGE_LIST 포스팅 SEQ(PK,FK), 내용, URL

TBL_POST_AUDIO 포스팅 SEQ(PK,FK), URL

TBL_POST_VIDEO 포스팅 SEQ(PK,FK), URL, 내용

TBL_POST_CHAT 포스팅 SEQ(PK,FK), 제목, 질문내용

TBL_POST_LINK 포스팅 SEQ(PK,FK), URL, 제목, 내용

TBL_POST_QUOTE 포스팅 SEQ(PK,FK), 격언내용, 출처

Page 14: Analyze of Tumblr.com

ERD����������� ������������������ 테이블����������� ������������������  • 테마����������� ������������������

Table Attributes TBL_THEME 테마SEQ(PK,AI), 제작자 유저 SEQ(FK), 제목, 요약, 내용, 소스코드, 섬네일URL, 유/무료 옵션, 가격, 카테고리 SEQ(FK), 뷰카운트, 판매숫자

TBL_THEME_SCREENSHOT 스크린샷 SEQ(PK,AI), 테마SEQ(FK), 스크린샷 URL

TBL_CATEGORIES 카테고리 SEQ(PK,AI), 카테고리명

Page 15: Analyze of Tumblr.com

15

기능별����������� ������������������ SQL����������� ������������������

Page 16: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 사용자����������� ������������������ 테이블����������� ������������������ 생성(TBL_USER)����������� ������������������

CREATE TABLE `TBL_USER` (

`SEQ` INT(11) NOT NULL,

`USER_ID` VARCHAR(20) NOT NULL,

`PASSWORD` VARCHAR(20) NOT NULL,

`EMAIL` VARCHAR(100) NOT NULL,

`USER_STATUS_SEQ` INT(11) NOT NULL,

`USER_NAME` VARCHAR(20) NOT NULL,

`JOIN_DATE` DATETIME NOT NULL,

`USER_PROFILE_URL` VARCHAR(256) NULL DEFAULT NULL,

`STATUS` INT(11) NULL DEFAULT NULL COMMENT '0 : 탈퇴 1 : 가입',

`DROP_DATE` DATE NULL DEFAULT NULL,

`MODIFY_DATE` DATE NULL DEFAULT NULL,

`LANGUAGE` VARCHAR(512) NOT NULL,

`IS_EDIT_TOOL` VARCHAR(512) NOT NULL,

PRIMARY KEY (`SEQ`))

Page 17: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 블로그����������� ������������������ 테이블����������� ������������������ 생성(TBL_BLOG)����������� ������������������

CREATE TABLE `TBL_BLOG` (

`SEQ` INT(11) NOT NULL,

`BLOG_TITLE` VARCHAR(512) NOT NULL,

`SEQ_USER` INT(11) NOT NULL,

`URL` VARCHAR(512) NOT NULL,

`BLOG_DETAIL` VARCHAR(2048) NULL DEFAULT NULL,

`CREATE_DATE` DATETIME NOT NULL DEFAULT getdate(),

`HIT_VISITOR` INT(11) NULL,

PRIMARY KEY (`SEQ`),

INDEX `tbl_user_tbl_blog_fk` (`SEQ_USER` ASC),

CONSTRAINT `tbl_user_tbl_blog_fk`

FOREIGN KEY (`SEQ_USER`)

REFERENCES `mydb`.`TBL_USER` (`SEQ`)

ON DELETE CASCADE

ON UPDATE CASCADE)

Page 18: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 포스팅����������� ������������������ 테이블����������� ������������������ 생성(TBL_POSTS)����������� ������������������

CREATE TABLE `TBL_POSTS` (

`SEQ` int(11) NOT NULL,

`SEQ_BLOG` int(11) NOT NULL,

`POST_TYPE` int(11) DEFAULT NULL COMMENT '1 : 글 2 : 그림 3 : 오디오 4 : 비디오 5 : 인용구',

`CREATE_DATE` datetime NOT NULL,

`MODIFY_DATE` date DEFAULT NULL,

`WRITER_IP` varchar(128) DEFAULT NULL,

`CUSTOM_URL` varchar(256) DEFAULT NULL,

`OPT1` int(11) DEFAULT NULL COMMENT '1 : 허용 0 : 불가',

`REFERENCE_URL` varchar(256) DEFAULT NULL,

`HIT_VIEWER` int(11) NOT NULL,

`HIT_LIKE` int(11) NOT NULL,

PRIMARY KEY (`SEQ`),

KEY `tbl_blog_tbl_posts_fk` (`SEQ_BLOG`),

CONSTRAINT `tbl_blog_tbl_posts_fk` FOREIGN KEY (`SEQ_BLOG`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE

ASCADE)

Page 19: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 테마����������� ������������������ 테이블����������� ������������������ 생성(TBL_THEME)����������� ������������������

CREATE TABLE `TBL_THEME` (

`SEQ` int(11) NOT NULL,

`SEQ_USER` int(11) NOT NULL,

`TITLE` varchar(2048) NOT NULL,

`SUMMARY` varchar(2048) NOT NULL,

`DETAIL` varchar(2048) NOT NULL,

`SOURCE_CODE` varchar(4086) NOT NULL,

`THUMBNAIL_URL` varchar(512) NOT NULL,

`OPT_FREE_OR_PAID` tinyint(1) DEFAULT NULL COMMENT '0 : 무료 1 : 유료',

`PRICE` int(11) NOT NULL DEFAULT '0',

`SEQ_CATEGORY` int(11) NOT NULL,

`HIT_VIEW` int(11) NOT NULL DEFAULT '0',

`HIT_SELL` int(11) NOT NULL,

PRIMARY KEY (`SEQ`),

KEY `tbl_user_tbl_theme_fk` (`SEQ_USER`),

KEY `fk_TBL_THEME_TBL_CATEGORIES1_idx` (`SEQ_CATEGORY`),

CONSTRAINT `tbl_user_tbl_theme_fk` FOREIGN KEY (`SEQ_USER`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT `fk_TBL_THEME_TBL_CATEGORIES1` FOREIGN KEY (`SEQ_CATEGORY`) REFERENCES `TBL_CATEGORIES` (`SEQ`) ON DELETE NO ACTION

ON UPDATE NO ACTION)

Page 20: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 블로그����������� ������������������ 옵션����������� ������������������ 테이블����������� ������������������ 생성(TBL_BLOG_OPTION)����������� ������������������

CREATE TABLE `TBL_BLOG_OPTION` (

`SEQ` int(11) NOT NULL,

`OPT_PRE_VIEW` tinyint(1) NOT NULL DEFAULT '0',

`NO_POST_BY_PAGE` int(11) NOT NULL DEFAULT '20',

`OPT_SHARE_TUMBLR` tinyint(1) NOT NULL,

`OPT_IS_USE_MOBILE_LAYOUT` tinyint(1) NOT NULL DEFAULT '0',

`OPT_NEW_LINK` tinyint(1) NOT NULL DEFAULT '0',

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_blog_tbl_blog_option_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)

Page 21: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 블로그����������� ������������������ 옵션����������� ������������������ 테이블����������� ������������������ 생성(TBL_BLOG_OPTION)����������� ������������������

CREATE TABLE `TBL_BLOG_SOCIAL` (

`SEQ` int(11) NOT NULL,

`GITHUB` varchar(256),

`BEHANCE` varchar(256),

`FOURSQUARE` varchar(256),

`LAST_FM` varchar(256),

`GOOGLE_ANALYTICS_ID` varchar(256),

`TWITTER` varchar(256),

`FACEBOOK` varchar(256),

`DRIBBLE` varchar(256),

`FLICKR` varchar(256),

`SKYPE` varchar(256),

`DEVIANART` varchar(256),

`VIMEO` varchar(256),

`DISQUS` varchar(256),

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_blog_tbl_blog_social_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)

Page 22: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 블로그����������� ������������������ 뷰����������� ������������������ 옵션����������� ������������������ 테이블����������� ������������������ 생성(TBL_VIEW_OPTION)����������� ������������������

CREATE TABLE `TBL_BLOG_VIEW_OPT` (

`SEQ` int(11) NOT NULL,

`OPT_SMALLER_NAV_FOR_PAGES` tinyint(1) NOT NULL DEFAULT '0',

`OPT_RED_BACKGROUND` tinyint(1) NOT NULL DEFAULT '0',

`OPT_BLUE_BACKGROUND` tinyint(1) NOT NULL DEFAULT '0',

`OPT_HIDE_COLORED_TOP_BAR` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_DATE` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_BACKGROUND_TEXTURE` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_TABS` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_NOTES` tinyint(1) NOT NULL DEFAULT '0',

`ALIGN_NAVIGATION_WITH_DESCRIPTION` tinyint(1) NOT NULL DEFAULT '0',

`INFINITE_SCROLL` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_SOCIAL_BUTTON` tinyint(1) NOT NULL DEFAULT '0',

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_blog_tbl_blog_view_opt_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)

Page 23: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 카테고리����������� ������������������ 테이블����������� ������������������ 생성(TBL_CATEGORIES)����������� ������������������

CREATE TABLE `TBL_CATEGORIES` (

`SEQ` int(11) NOT NULL,

`NAME` varchar(256) NOT NULL,

PRIMARY KEY (`SEQ`)

)

Page 24: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 친구목록����������� ������������������ 테이블����������� ������������������ 생성(TBL_FRIENDS)����������� ������������������

CREATE TABLE `TBL_FRIENDS` ( `SEQ` int(11) NOT NULL, `SEQ_FRIEND` int(11) NOT NULL, `SEQ_USER` int(11) NOT NULL, PRIMARY KEY (`SEQ`), KEY `tbl_user_tbl_friends_fk` (`SEQ_USER`), KEY `tbl_user_tbl_friends_fk1` (`SEQ_FRIEND`), CONSTRAINT `tbl_user_tbl_friends_fk1` FOREIGN KEY (`SEQ_FRIEND`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `tbl_user_tbl_friends_fk` FOREIGN KEY (`SEQ_USER`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 25: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 포스팅����������� ������������������ 테이블����������� ������������������ 생성(TBL_POSTS)����������� ������������������

CREATE TABLE `TBL_POSTS` ( `SEQ` int(11) NOT NULL, `SEQ_BLOG` int(11) NOT NULL, `POST_TYPE` int(11) DEFAULT NULL COMMENT '1 : 글 2 : 그림 3 : 오디오 4 : 비디오 5 : 인용구’, `CREATE_DATE` datetime NOT NULL, `MODIFY_DATE` date DEFAULT NULL, `WRITER_IP` varchar(128) DEFAULT NULL, `CUSTOM_URL` varchar(256) DEFAULT NULL, `OPT1` int(11) DEFAULT NULL COMMENT '1 : 허용 0 : 불가’, `REFERENCE_URL` varchar(256) DEFAULT NULL, `HIT_VIEWER` int(11) NOT NULL, `HIT_LIKE` int(11) NOT NULL, PRIMARY KEY (`SEQ`), KEY `tbl_blog_tbl_posts_fk` (`SEQ_BLOG`), CONSTRAINT `tbl_blog_tbl_posts_fk` FOREIGN KEY (`SEQ_BLOG`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 26: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 태그����������� ������������������ 테이블����������� ������������������ 생성(TBL_TAGS)����������� ������������������

CREATE TABLE `TBL_TAGS` ( `SEQ` int(11) NOT NULL, `SEQ_POST` int(11) NOT NULL, `TAG_NAME` varchar(256) NOT NULL, PRIMARY KEY (`SEQ`), KEY `tbl_posts_tbl_tags_fk` (`SEQ_POST`), CONSTRAINT `tbl_posts_tbl_tags_fk` FOREIGN KEY (`SEQ_POST`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 27: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 포스팅����������� ������������������ ­–����������� ������������������ 글����������� ������������������ 테이블����������� ������������������ 생성(TBL_POST_WRITINGS)����������� ������������������

CREATE TABLE `TBL_POST_WRITINGS` ( `SEQ_POST` int(11) NOT NULL, `TITLE` varchar(512) NOT NULL, `CONTENT` varchar(2048) NOT NULL, PRIMARY KEY (`SEQ_POST`), CONSTRAINT `tbl_posts_tbl_writings_fk` FOREIGN KEY (`SEQ_POST`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 28: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 포스팅����������� ������������������ ­–����������� ������������������ 이미지����������� ������������������ 목록����������� ������������������ 테이블����������� ������������������ 생성(TBL_POST_IMAGE_LIST)����������� ������������������

CREATE TABLE `TBL_POST_IMAGE_LIST` ( `SEQ` int(11) NOT NULL, `SEQ_IMAGE` int(11) NOT NULL, `IMG_URL` varchar(45) NOT NULL, PRIMARY KEY (`SEQ`), KEY `tbl_post_image_tbl_post_image_list_fk` (`SEQ_IMAGE`), CONSTRAINT `tbl_post_image_tbl_post_image_list_fk` FOREIGN KEY (`SEQ_IMAGE`) REFERENCES `TBL_POST_IMAGE` (`SEQ_POST`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 29: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 포스팅����������� ������������������ ­–����������� ������������������ 인용구����������� ������������������ 테이블����������� ������������������ 생성(TBL_POST_QUOTE)����������� ������������������

CREATE TABLE `TBL_POST_QUOTE` ( `SEQ` int(11) NOT NULL, `QUOTE` varchar(2048) NOT NULL, `REFERENCE` varchar(2048) NOT NULL, PRIMARY KEY (`SEQ`), CONSTRAINT `tbl_posts_tbl_quote_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 30: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 포스팅����������� ������������������ ­–����������� ������������������ 링크����������� ������������������ 테이블����������� ������������������ 생성(TBL_POST_LINK)����������� ������������������

CREATE TABLE `TBL_POST_LINK` ( `SEQ` int(11) NOT NULL, `URL` varchar(512) NOT NULL, `TITLE` varchar(512) NOT NULL, `DETAIL` varchar(2048) NOT NULL, PRIMARY KEY (`SEQ`), CONSTRAINT `tbl_posts_tbl_post_link_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 31: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 포스팅����������� ������������������ ­–����������� ������������������ 채팅����������� ������������������ 테이블����������� ������������������ 생성(TBL_POST_CHAT)����������� ������������������

CREATE TABLE `TBL_POST_CHAT` ( `SEQ` int(11) NOT NULL, `TITLE` varchar(256) NOT NULL, `QUESTION` varchar(2048) NOT NULL, PRIMARY KEY (`SEQ`), CONSTRAINT `tbl_posts_tbl_post_chat_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 32: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 포스팅����������� ������������������ ­–����������� ������������������ 오디오����������� ������������������ 테이블����������� ������������������ 생성����������� ������������������ (TBL_POST_AUDIO)����������� ������������������

CREATE TABLE `TBL_POST_AUDIO` ( `SEQ` int(11) NOT NULL, `URL` varchar(1024) NOT NULL, PRIMARY KEY (`SEQ`), CONSTRAINT `tbl_posts_tbl_post_audio_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 33: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 포스팅����������� ������������������ -����������� ������������������ 비디오����������� ������������������ 테이블����������� ������������������ 생성����������� ������������������ (TBL_POST_VIDEO)����������� ������������������

CREATE TABLE `TBL_POST_VIDEO` ( `SEQ` int(11) NOT NULL, `URL` varchar(1024) NOT NULL, `CONTENT` varchar(2048) NOT NULL, PRIMARY KEY (`SEQ`), CONSTRAINT `tbl_posts_tbl_post_video_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)#

Page 34: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 테마����������� ������������������ 테이블����������� ������������������ 생성����������� ������������������ (TBL_THEME)����������� ������������������

CREATE TABLE `TBL_THEME` (# `SEQ` int(11) NOT NULL,# `SEQ_USER` int(11) NOT NULL,# `TITLE` varchar(2048) NOT NULL,# `SUMMARY` varchar(2048) NOT NULL,# `DETAIL` varchar(2048) NOT NULL,# `SOURCE_CODE` varchar(4086) NOT NULL,# `THUMBNAIL_URL` varchar(512) NOT NULL,# `OPT_FREE_OR_PAID` tinyint(1) DEFAULT NULL COMMENT '0 : 무료 1 : 유료',# `PRICE` int(11) NOT NULL DEFAULT '0',# `SEQ_CATEGORY` int(11) NOT NULL,# `HIT_VIEW` int(11) NOT NULL DEFAULT '0',# `HIT_SELL` int(11) NOT NULL,# PRIMARY KEY (`SEQ`),# KEY `tbl_user_tbl_theme_fk` (`SEQ_USER`),# KEY `fk_TBL_THEME_TBL_CATEGORIES1_idx` (`SEQ_CATEGORY`),# CONSTRAINT `tbl_user_tbl_theme_fk` FOREIGN KEY (`SEQ_USER`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,# CONSTRAINT `fk_TBL_THEME_TBL_CATEGORIES1` FOREIGN KEY (`SEQ_CATEGORY`) REFERENCES `TBL_CATEGORIES` (`SEQ`) ON DELETE NO ACTION ON UPDATE NO ACTION#)#

Page 35: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 테마����������� ������������������ 스크린샷����������� ������������������ 테이블����������� ������������������ 생성����������� ������������������ (TBL_THEME_SCREENSHOT)����������� ������������������

CREATE TABLE `TBL_THEME_SCREENSHOT` (# `SEQ` int(11) NOT NULL,# `SEQ_THEME` int(11) NOT NULL,# `SCREENSHOT_URL` varchar(512) NOT NULL,# PRIMARY KEY (`SEQ`),# KEY `tbl_theme_tbl_theme_screenshot_fk` (`SEQ_THEME`),# CONSTRAINT `tbl_theme_tbl_theme_screenshot_fk` FOREIGN KEY (`SEQ_THEME`) REFERENCES `TBL_THEME` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE#)#

Page 36: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 새����������� ������������������ 사용자����������� ������������������ 추가����������� ������������������

INSERT INTO `tbl_user` (`SEQ`, `USER_ID`, `PASSWORD`, `EMAIL`, `USER_NAME`, `JOIN_DATE`, `USER_PROFILE_URL`, `STATUS`, `DROP_DATE`, `MODIFY_DATE`, `LANGUAGE`, `IS_EDIT_TOOL`, `TBL_LIKE_LIST_SEQ`)#VALUES#

#(4, 'lee', '1231', '[email protected]', '이정훈', now(), 'www.haha.com/het.png', 1, NULL, NULL, 'KOR', '2', 0);#

Page 37: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 회원����������� ������������������ 정지처리����������� ������������������ &����������� ������������������ 탈퇴����������� ������������������

update TBL_USER set state = 2 where user_id = ‘lee’ ‘ 회원정지##update TBL_USER set state = 0 where user_id = ‘lee' ‘ 탈퇴#

* 사용자의 경우 state 1이 회원가입 상태, 0이 탈퇴상태, 2가 회원정지 상태

Page 38: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 친구����������� ������������������ 추가����������� ������������������

INSERT INTO `tbl_friends` (`SEQ`,`SEQ_FRIEND`,`SEQ_USER`)VALUES (0, #(select SEQ from tbl_user where user_name=‘장익환’ limit 1), #(select SEQ from tbl_user where user_name=‘강수현’ limit 1)),#(0, #(select SEQ from tbl_user where user_name=‘장익환’ limit 1), #(select SEQ from tbl_user where user_name=‘황정윤’ limit 1));#

* 위의 경우는 이름이 장익환인 회원에게 이름이 강수현, 황정윤 인 친구를 추가하는 질의

Page 39: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 블로그����������� ������������������ 만들기(기본옵션)����������� ������������������

INSERT INTO `tbl_blog` (`SEQ`, `BLOG_TITLE`, `SEQ_USER`, `URL`, `BLOG_DETAIL`, `CREATE_DATE`, `HIT_VISITOR`)#VALUES##(3, '강\'s blog', 3, 'kang.soo', '깡수의 블로그', '2013-12-02 00:00:00', 12423424);#

Page 40: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 새����������� ������������������ 포스트����������� ������������������ 등록(글)����������� ������������������

INSERT INTO `tbl_posts` (`SEQ`, `SEQ_BLOG`, `POST_TYPE`, `CREATE_DATE`, `MODIFY_DATE`, `WRITER_IP`, `CUSTOM_URL`, `OPT1`, `REFERENCE_URL`, `HIT_VIEWER`, `HIT_LIKE`)#VALUES#

#(0, 0, 0, '2013-03-02 00:00:00', NULL, '211.238.145.12', NULL, NULL, NULL, 1234, 123);##INSERT INTO `tbl_post_writings` (`SEQ_POST`, `TITLE`, `CONTENT`)#VALUES#

#(0, '오늘 일기', '오늘 나는 뭐하고 놀까 싶었다.<br /> 그러다 보니 어느덧 시간은 다되고...<br/> 허허허허...');#

Page 41: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 모든����������� ������������������ 회원의����������� ������������������ 등록된����������� ������������������ 글을����������� ������������������ DESC순서로����������� ������������������ 가져오는����������� ������������������ 질의����������� ������������������

select## A.SEQ,A.POST_TYPE ,(case A.POST_TYPE ## #when 0 then (select title from TBL_POST_WRITINGS where SEQ = A.SEQ)## #when 1 then (select content from TBL_POST_IMAGE where SEQ = A.SEQ)## #when 2 then (select quote from TBL_POST_QUOTE where SEQ = A.SEQ)## #when 3 then (select title from TBL_POST_LINK where SEQ = A.SEQ)## #when 4 then (select title from TBL_POST_CHAT where SEQ = A.SEQ)## #when 5 then (select url from TBL_POST_AUDIO where SEQ = A.SEQ)## #when 6 then (select content from TBL_POST_VIDEO where SEQ = A.SEQ)##end) AS TITLE,A.CREATE_DATE,C.USER_NAME,A.HIT_VIEWER#

from##TBL_POSTS A,##TBL_BLOG B,##TBL_USER C#

where##A.SEQ_BLOG = B.SEQ##and B.SEQ_USER = C.SEQ#

order by A.HIT_VIEWER desc#

Page 42: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 내����������� ������������������ 친구가����������� ������������������ 등록한����������� ������������������ 글����������� ������������������ 목록����������� ������������������

select ##(select user_name from tbl_user where seq = B.seq_user) AS USER_NAME,#A.CREATE_DATE,##A.HIT_VIEWER,##A.HIT_LIKE

from ##tbl_posts A,##tbl_blog B#

where ##A.`SEQ_BLOG` = B.`SEQ` ##and B.`SEQ_USER` in ## #(select SEQ_FRIEND from tbl_friends ## #where SEQ_USER = ## # #(select user_name from tbl_user where email='[email protected]’)## #)#

Page 43: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 내����������� ������������������ 친구가����������� ������������������ 등록한����������� ������������������ 글����������� ������������������ 중����������� ������������������ 가장����������� ������������������ Like가����������� ������������������ 많은����������� ������������������ 글����������� ������������������

select ##(select user_name from tbl_user where seq = B.seq_user) AS USER_NAME,#A.CREATE_DATE,##A.HIT_VIEWER,##A.HIT_LIKE

from ##tbl_posts A,##tbl_blog B#

where ##A.`SEQ_BLOG` = B.`SEQ` ##and B.`SEQ_USER` in ## #(select SEQ_FRIEND from tbl_friends ## #where SEQ_USER = ## # #(select user_name from tbl_user where email='[email protected]’)## #)#

order by A.HIT_LIKE DESC LIMIT 1#

Page 44: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 날짜별����������� ������������������ 등록된����������� ������������������ 포스트����������� ������������������ 갯수����������� ������������������

select##C.CREATE_DATE,##(SELECT COUNT(*) FROM tbl_posts where create_date = C.CREATE_DATE) AS

NUM_WRITING_POST#from#

#tbl_user A,##tbl_blog B,##tbl_posts C#

where##A.SEQ = B.SEQ_USER##and B.SEQ = C.SEQ_BLOG#

group by C.CREATE_DATE#

Page 45: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 일자별����������� ������������������ 가입자����������� ������������������ 숫자����������� ������������������

select##A.JOIN_DATE,##(SELECT COUNT(*) FROM tbl_user where join_date = A.JOIN_DATE) AS NUM_JOIN_USER#

from##tbl_user A#

group by A.JOIN_DATE#

Page 46: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 사용자별����������� ������������������ 방문자����������� ������������������ 순위����������� ������������������

select##A.user_name,##B.BLOG_TITLE,##B.HIT_VISITOR#

from##tbl_user A,##tbl_blog B#

where##A.SEQ = B.SEQ_USER#

order by B.`HIT_VISITOR` desc#

Page 47: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 방문자가����������� ������������������ 1000명����������� ������������������ 이상인����������� ������������������ 사용자의����������� ������������������ 블로그����������� ������������������

select##A.user_name,##B.BLOG_TITLE,##B.HIT_VISITOR#

from##tbl_user A,##tbl_blog B#

where##A.SEQ = B.SEQ_USER##and B.HIT_VISITOR > 1000#

Page 48: Analyze of Tumblr.com

기능별����������� ������������������ SQL����������� ������������������ • 카테고리가����������� ������������������ ‘벤처����������� ������������������ 기업’����������� ������������������ 인����������� ������������������ 테마����������� ������������������ 목록����������� ������������������

select##*#

from##tbl_theme A,##tbl_user B,##tbl_categories C#

where##A.SEQ_CATEGORY = C.SEQ##and A.SEQ_USER = B.SEQ##and C.name = '벤처 기업'#

Page 49: Analyze of Tumblr.com

49

UI����������� ������������������ 설계����������� ������������������

Page 50: Analyze of Tumblr.com

메뉴 구조도  Tumblr����������� ������������������

회원가입����������� ������������������

Dashboard����������� ������������������ (로그인후)����������� ������������������

타임라인����������� ������������������ Posts����������� ������������������

글작성����������� ������������������

Follower����������� ������������������

친구목록����������� ������������������

친구추가/삭제����������� ������������������

활동����������� ������������������ 블로그����������� ������������������ 꾸미기����������� ������������������

테마선택����������� ������������������

테마옵션����������� ������������������

새����������� ������������������ 블로그����������� ������������������ 만들기����������� ������������������

설정����������� ������������������

계정설정����������� ������������������

테마����������� ������������������

카테고리����������� ������������������ 별����������� ������������������ 보기����������� ������������������

인기테마����������� ������������������

테마����������� ������������������ 등록����������� ������������������

Page 51: Analyze of Tumblr.com

화면 설계 • 회원����������� ������������������ 가입����������� ������������������

 회원가입

이메일 주소

비밀번호

다른 사람이 나를 검색할 수 있도록 허용

비밀번호 확인

포스팅 편집도구 리치 텍스트 편집기 일반 텍스트/HTML 마크다운

언어 한국어

회원 가입 취소

Page 52: Analyze of Tumblr.com

화면 설계 • Dashboard����������� ������������������

 Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

포스팅����������� ������������������ 등록����������� ������������������ 글����������� ������������������ 사진����������� ������������������ 인용구����������� ������������������ 링크����������� ������������������ 오디오����������� ������������������ 비디오����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

장익환([email protected])����������� ������������������ 님이����������� ������������������ 2014-05-08����������� ������������������ 등록한����������� ������������������ 사진����������� ������������������

����������� ������������������

오늘은����������� ������������������ 기분이����������� ������������������ 좀����������� ������������������ 좋군.����������� ������������������ Tags����������� ������������������ :����������� ������������������ 일상,기분,플젝,언제다하지,밤새기싫긔����������� ������������������

. . .

Timeline����������� ������������������

Page 53: Analyze of Tumblr.com

화면 설계 • Posts����������� ������������������ -����������� ������������������ 글����������� ������������������ 작성����������� ������������������

 Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

포스팅����������� ������������������ 등록����������� ������������������ 글 사진����������� ������������������ 인용구����������� ������������������ 링크����������� ������������������ 오디오����������� ������������������ 비디오����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

제목

등록 취소

사용자 지정 URL

출처

Page 54: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

포스팅����������� ������������������ 등록����������� ������������������ 글 사진����������� ������������������ 인용구����������� ������������������ 링크����������� ������������������ 오디오����������� ������������������ 비디오����������� ������������������ 타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

제목

등록 취소

사진설명

태그등록

Page 55: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

인용구

등록 취소

출처

태그등록

포스팅����������� ������������������ 등록����������� ������������������ 글����������� ������������������ 사진����������� ������������������ 인용구����������� ������������������ 링크����������� ������������������ 오디오����������� ������������������ 비디오����������� ������������������

Page 56: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

URL

등록 취소

설명

태그등록

포스팅����������� ������������������ 등록����������� ������������������ 글����������� ������������������ 사진����������� ������������������ 인용구����������� ������������������ 링크����������� ������������������ 오디오����������� ������������������ 비디오����������� ������������������

제목

Page 57: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

업로드

등록 취소

설명

태그등록

포스팅����������� ������������������ 등록����������� ������������������ 글����������� ������������������ 사진����������� ������������������ 인용구����������� ������������������ 링크����������� ������������������ 오디오����������� ������������������ 비디오����������� ������������������

외부 URL

Page 58: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

업로드

등록 취소

설명

태그등록

외부 URL

포스팅����������� ������������������ 등록����������� ������������������ 글����������� ������������������ 사진����������� ������������������ 인용구����������� ������������������ 링크����������� ������������������ 오디오����������� ������������������ 비디오����������� ������������������

Page 59: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

친구����������� ������������������ 목록����������� ������������������

친구����������� ������������������ 등록����������� ������������������ 등록 이메일 입력 친구찾기

Page 60: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

활동����������� ������������������

친구����������� ������������������ 등록����������� ������������������ 등록 이메일 입력 친구찾기

Like : 2개 총 팔로워 : 22명

05/10 토요일 uponateasd님이 사진을 좋아합니다. “러쉬 냄새나는 콘서트에 오다..”

05/09 금요일 uponateasd님이 나를 팔로우 합니다. [팔로우 하기]

05/08 목요일 uponateasd님이 사진을 좋아합니다. “러쉬 냄새나는 콘서트에 오다..”

05/10 토요일 uponateasd님이 사진을 좋아합니다. “러쉬 냄새나는 콘서트에 오다..”

05/10 토요일 uponateasd님이 사진을 좋아합니다. “러쉬 냄새나는 콘서트에 오다..”

Page 61: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

Matthew TIMES

제목

블로그����������� ������������������ 꾸미기����������� ������������������

Hi I'm Matthew from Seoul, South Korea.<br/><br/> I'm a Software Engineer, studying Data Mining and Distributed Computing, enjoying electronic sounds.

설명

새창에서 링크 열기

모바일 전용 레이아웃 사용

새창에서 링크 열기

내포스트 | 샘플포스트 Preview

페이지당 포스트 수 15

Red Background

Blue Background

Small Nav For Pages

Hide Colored Top Bar

Hide Background Texture

Hide Date

Hide Tags

Hide Notes

Align Navigation w/Description

Infinite Scroll

Hide Social Button

화면 표시 옵션

수정

Page 62: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

Google Analytics ID

블로그����������� ������������������ 꾸미기����������� ������������������

Disqus ID

Twitter ID

Facebook ID

Dribble ID

Flickr ID

Youtube ID

Skype ID

Deviantart ID

Vimeo ID

Behance ID

Foursquare ID

LastFM ID

Github ID

소셜 설정

수정

Page 63: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

타임라인����������� ������������������

Posts����������� ������������������

Followers����������� ������������������

활동����������� ������������������

블로그����������� ������������������ 꾸미기����������� ������������������

새블로그����������� ������������������

새����������� ������������������ 블로그����������� ������������������ 만들기����������� ������������������

제목

URL .tumblr.com

이 블로그는 여러 작성자가 관리할 수 있고 비공개로 설정할 수도 있습니다. 참고: 포스트의 좋아요를 클릭하거나 다른 회원을 팔로우할 때 이 블로그 이름이 나타게 하려면 로그아웃한 다음 별도의 계정을 만들어야 합니다.

블로그 만들기

Page 64: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

카테고리����������� ������������������

인기����������� ������������������ 테마����������� ������������������

테마����������� ������������������ 등록����������� ������������������

테마����������� ������������������ :����������� ������������������ 카테고리����������� ������������������

카테고리 : 1단

카테고리 : 2단

. . .

Page 65: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

카테고리����������� ������������������

인기����������� ������������������ 테마����������� ������������������

테마����������� ������������������ 등록����������� ������������������

테마����������� ������������������ :����������� ������������������ 인기����������� ������������������

유료 인기테마

무료 인기테마

Page 66: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

카테고리����������� ������������������

인기����������� ������������������ 테마����������� ������������������

테마����������� ������������������ 등록����������� ������������������

테마����������� ������������������ 등록����������� ������������������ (1page)����������� ������������������

제목

태그

섬네일 등록

스크린샷 등록

설명

Page 67: Analyze of Tumblr.com

화면 설계  Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

카테고리����������� ������������������

인기����������� ������������������ 테마����������� ������������������

테마����������� ������������������ 등록����������� ������������������

테마����������� ������������������ 등록����������� ������������������ (2page)����������� ������������������

Demo 데모 블로그 URL

지원요청 테마 지원 이메일 주소

소스코드

유/무료 무료 유료 가격입력

테마 등록 1단 | 2단 | 그리드 카테고리

Page 68: Analyze of Tumblr.com

화면 설계 

Tumblr Dashboard����������� ������������������ |����������� ������������������ 테마����������� ������������������ |����������� ������������������ 설정����������� ������������������

계정����������� ������������������ 설정����������� ������������������ 계정����������� ������������������ 설정����������� ������������������

수정

사용자 이름 changmatthew

댓글 내 팔로잉의 댓글 허용

2주 이상된 내 팔로워의 댓글 허용

질문하기 질문 허용

포스트 허용 다른 사람들의 포스트 허용 내가 승인해야만 포스팅되도록 하려면 포스트를 /submit(으)로 보내세요.

한국어 | 영어 언어

Page 69: Analyze of Tumblr.com

69

DATA����������� ������������������ 분석����������� ������������������

Page 70: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ INT(11) PK UNIQUE PK로 UNIQUE 100,000 5

BLOG_TITLE VARCHAR(512) NN 대략 UNIQUE - Mattew의 블로그

SEQ_USER INT(11) FK NN UNIQUE 100,000 3

URL VARCHAR(512) NN UNIQUE 100,000 Blog.mattew.tumblr.com

BLOG_DETAIL VARCHAR(2048) 대략 UNIQUE - 어서오이소

CREATE_DATE DATETIME NN 2013년 1월1일 이후 - 2014.2.3

HIT_VISITOR INT(11) 0 이상 - 100

TML_BLOG����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ SEQ����������� ������������������ 는 블로그 PK이므로 UNIQUE하고 BLOG_TITLE은 똑같은 것이 있을 수 ����������� ������������������ ����������� ������������������ ����������� ������������������ 있으므로 대략 UNIQUE.����������� ������������������ ����������� ������������������ ����������� ������������������ SEQ_USER는 USER����������� ������������������ TABLE의 외래키로,����������� ������������������ USER����������� ������������������ 하나당 하나의 ����������� ������������������ ����������� ������������������ ����������� ������������������ BLOG를 갖고 하나의 BLOG는 유일한 URL을 가져야 하므로 두 값은 UNIQUE.����������� ������������������ ����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ ����������� ������������������ SEQ,URL,SEQ_USER은 모두 UNIQUE하므로 100,000가지 값이 존재.����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 100,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 321.2����������� ������������������ MB����������� ������������������ ����������� ������������������

Page 71: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������ TML_BLOG_OPTION����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ SEQ는 FK이자 PK로 UNIQUE하고,����������� ������������������ ����������� ������������������ NO_POST_BY_PAGE는 4가지 값을 가짐.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 나머지 속성들은 2가지 TOGLE����������� ������������������ 값을 가짐.����������� ������������������

����������� ������������������ •  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ ����������� ������������������ NO_POST_BY_PAGE����������� ������������������ 4가지로 구분되고,����������� ������������������ SEQ를 제외한 나머지 속성들은 2가지 ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 값으로 구분.����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 100,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 2.6����������� ������������������ MB����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ INT(11) PK/FK PK로 UNIQUE UNIQUE 100,000 3

OPT_PRE_VIEW TINYINT(1) NN / DEFAULT 0 0 OR 1 2 0

NO_POST_BY_PAGE INT(11) NN / DEFAULT 20 5,10,20,100 4 20

OPT_SHARE_TUMBLR TINYINT(1) NN 0 OR 1 2 0

OPT_IS_USE_MOBILE_LAYOUT TINYINT(1) NN / DEFAULT 0 0 OR 1 2 0

OPT_NEW_LINK TINYINT(1) NN / DEFAULT 0 0 OR 1 2 0

Page 72: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������ TML_BLOG_VIEW_OPT����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ ����������� ������������������ SEQ는 BLOG����������� ������������������ TABLE의 FK이자 PK로 UNIQUE하며 나머지 속성들은 TOGLE값 ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 으로 2가지 씩 가짐.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ SEQ를 제외한 나머지 속성들은 2가지 값으로 구분.����������� ������������������ ����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 100,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 2.2����������� ������������������ MB����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ INT(11) PK/FK PK로 UNIQUE UNIQUE 100,000 5

OPT_SMALLER_NAV_FOR_PAGES TINYINT(1) NN 0 OR 1 2 가지 0

OPT_RED_BLACKGROUND TINYINT(1) NN 0 OR 1 2 가지 0

OPT_BLUE_BLACKGROUND TINYINT(1) NN 0 OR 1 2 가지 0

OPT_HIDE_COLORED_TOP_BAR TINYINT(1) NN 0 OR 1 2 가지 0

OPT_DATE TINYINT(1) NN 0 OR 1 2 가지 0

OPT_BACKGROUND_TEXTURE TINYINT(1) NN 0 OR 1 2 가지 0

OPT_TABS TINYINT(1) NN 0 OR 1 2 가지 0

OPT_NOTES TINYINT(1) NN 0 OR 1 2 가지 0

ALIGN_NAVIGATION_WITH_DESCRIPTION TINYINT(1) NN 0 OR 1 2 가지 0

INFINITE_SCROLL TINYINT(1) NN 0 OR 1 2 가지 0

HIDE_SOCIAL_BUTTON TINYINT(1) NN 0 OR 1 2 가지 0

Page 73: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������ TML_BLOG_SOCIAL����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ SEQ는 BLOG����������� ������������������ TABLE의 FK이자 PK로 UNIQUE하며 나머지 속성들은 주소 값으로 같은 주소를 등록해도 무방하지만 각자 개인마다 다른 계정을 갖고 있을 것으로 대략 UNIQUE.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ ����������� ������������������ SEQ를 제외한 모든 속성값들은 각자 다를 것으로 예상되어 약 100,000가지로 구분.����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 100,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 282.7����������� ������������������ MB����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ INT(11) PK/FK PK로 UNIQUE UNIQUE 100,000 7

GITHUB VARCHAR(256) 대략 UNIQUE [email protected]

BEHANCE VARCHAR(256) 대략 UNIQUE [email protected]

FOURSQUARE VARCHAR(256) 대략 UNIQUE [email protected]

LAST_FM VARCHAR(256) 대략 UNIQUE [email protected]

GOOGLE_ANALYTICS_ID VARCHAR(256) 대략 UNIQUE [email protected]

TWITTER VARCHAR(256) 대략 UNIQUE [email protected]

FACEBOOK VARCHAR(256) 대략 UNIQUE [email protected]

DRIBBLE VARCHAR(256) 대략 UNIQUE [email protected]

FLICKR VARCHAR(256) 대략 UNIQUE [email protected]

SKYPE VARCHAR(256) 대략 UNIQUE [email protected]

DEVIANARTY VARCHAR(256) 대략 UNIQUE [email protected]

Page 74: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������ Attribute Type PK/FK Constraint

Value Distribution

Distinct Value

Example

SEQ Int(11) PK UNIQUE PK로 UNIQUE 2000000 2

SEQ_BLOG Int(11) FK NN 대략 UNIQUE 1

POST_TYPE Int(11) 1:글 2:그림 3:오디오 4:비디오 5:인용

구 5 5

CREATE_DATE Datetime NN 2013년 1월1일 이후

2014-05-14 00:00:00

MODIFY_DATE Date 2013년 1월1일 이후

2014-05-14 00:00:00

WRITER_IP Varchar(128) 대략 UNIQUE 211.238.145.12

CUSTOM_URL Varchar(256) 대략 UNIQUE

OPT1 Int(11) 1:허용 0:불가 2

REFERENCE_URL Varchar(256) UNIQUE www.naver.com

HIT_VIEWER Int(11) NN 0이상의 값 1234

HIT_LIKE Int(11) NN 0이상의 값 54

TBL_POSTS����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ 각 포스트는 고유한 SEQ를 가지고 있음(UNIQUE).����������� ������������������ ����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 회원이 100000명이라 가정.����������� ������������������ 한 사람당 20개의 포스트를 올린다고 가정.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 포스트 타입(1:글,����������� ������������������ 2:그림,����������� ������������������ 3:오디오,����������� ������������������ 4:비디오,����������� ������������������ 5:인용구)로 5가지로 구분.����������� ������������������ ����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 2,000,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 1.84GB����������� ������������������ ����������� ������������������

Page 75: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ_POST Int(11) PK/FK UNIQUE,NN PK로 UNIQUE 400,000 5

TITLE Varchar(512) NN 대략 UNIQUE 오늘의 일기

CONTENT Varchar(2048) NN 대략 UNIQUE 날씨가 너무 좋았다. 근데 나는 팀플을 하고 있었다ㅠㅠ

TBL_POST_WRITINGS����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ SEQ_POST는 포스트의 5개 분류 중 글 부분을 식별하는 기본키이다.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 또한,����������� ������������������ SEQ_POST는 TBL_POSTS의 기본키(SEQ) 참조하는 외래키이다.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 100000명의 회원이 있다고 가정.����������� ������������������ 한 사람당 포스트를 평균 20개씩 올릴 수 있다고 가정.����������� ������������������ 포스트는 5가지의 종류를 가지는데,����������� ������������������ 각각의 종류가 균등분포로 4개씩 올린다고 가정.����������� ������������������ 따라서,����������� ������������������ SEQ_POST는 400000개.����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 400,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 1.05GB����������� ������������������

Page 76: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ Int(11) PK/FK UNIQUE,NN PK로 UNIQUE 400,000 2

QUOTE Varchar(2048) NN 대략 UNIQUE 람스테인은 ich

will이라는 뮤비를 남겼다.

REFERENCE Varchar(2048) NN 대략 UNIQUE Rammstein.co.ge

TBL_POST_QUOTE����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ SEQ는 포스트의 5개 분류 중 인용구 부분을 식별하는 기본키이다.����������� ������������������ ����������� ������������������ 또한,����������� ������������������ SEQ는 TBL_POSTS의 기본키(SEQ) 참조하는 외래키이다.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 100000명의 회원이 있다고 가정.����������� ������������������ 한 사람당 포스트를 평균 20개씩 올릴 수 있다고 가정.����������� ������������������ 포스트는 5가지의 종류를 가지는데,����������� ������������������ 각각의 종류가 균등분포로 4개씩 올린다고 가정.����������� ������������������ 따라서,����������� ������������������ SEQ는 400000개.

데이터 규모����������� ������������������ :����������� ������������������ 400,000����������� ������������������ 개,����������� ������������������ 데이터 용량 :����������� ������������������ 1.66GB����������� ������������������

Page 77: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ Int(11) PK/FK UNIQUE,NN PK로 UNIQUE 5

URL Varchar(1024) NN 대략 UNIQUE ./test.mp3

TBL_POST_AUDIO����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ SEQ는 포스트의 5개 분류 중 오디오 부분을 식별하는 기본키이다.����������� ������������������ ����������� ������������������ 또한,����������� ������������������ SEQ는 TBL_POSTS의 기본키(SEQ) 참조하는 외래키이다.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 100000명의 회원이 있다고 가정.����������� ������������������ 한 사람당 포스트를 평균 20개씩 올릴 수 있다고 가정.����������� ������������������ 포스트는 5가지의 종류를 가지는데,����������� ������������������ 각각의 종류가 균등분포로 4개씩 올린다고 가정.����������� ������������������ 따라서,����������� ������������������ SEQ는 400000개.

데이터 규모����������� ������������������ :����������� ������������������ 400,000����������� ������������������ 개,����������� ������������������ 데이터 용량 :����������� ������������������ 0.43GB����������� ������������������ ����������� ������������������

Page 78: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ Int(11) PK/FK UNIQUE,NN PK로 UNIQUE 5

URL Varchar(1024) NN 대략 UNIQUE .www.youtube.com/asdfsd

CONTENT Varchar(2048) NN 대략 UNIQUE 람스테인 뮤비

TBL_POST_VIDEO����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ SEQ는 포스트의 5개 분류 중 비디오 부분을 식별하는 기본키이다.����������� ������������������ ����������� ������������������ 또한,����������� ������������������ SEQ는 TBL_POSTS의 기본키(SEQ) 참조하는 외래키이다.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 100000명의 회원이 있다고 가정.����������� ������������������ 한 사람당 포스트를 평균 20개씩 올릴 수 있다고 가정.����������� ������������������ 포스트는 5가지의 종류를 가지는데,����������� ������������������ 각각의 종류가 균등분포로 4개씩 올린다고 가정.����������� ������������������ 따라서,����������� ������������������ SEQ는 400000개.

데이터 규모����������� ������������������ :����������� ������������������ 400,000����������� ������������������ 개,����������� ������������������ 데이터 용량 :����������� ������������������ 1.25GB����������� ������������������ ����������� ������������������

Page 79: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ Int(11) PK UNIQUE,NN PK로 UNIQUE 400,000 5

SEQ_IMAGE Int(11) FK NN 1

IMG_URL Varchar(45) NN 대략 UNIQUE www.izectlab.com/test4.png

TBL_POST_IMAGE_LIST����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ SEQ는 포스트의 5개 분류 중 이미지 부분을 식별하는 기본키이다.����������� ������������������ ����������� ������������������ SEQ_IMAGE는 TBL_POSTS의 기본키(SEQ) 참조하는 외래키이다.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 100000명의 회원이 있다고 가정.����������� ������������������ 한 사람당 포스트를 평균 20개씩 올릴 수 있다고 가정.����������� ������������������ 포스트는 5가지의 종류를 가지는데,����������� ������������������ 각각의 종류가 균등분포로 4개씩 올린다고 가정.����������� ������������������ 따라서,����������� ������������������ SEQ는 400000개.

데이터 규모����������� ������������������ :����������� ������������������ 400,000����������� ������������������ 개,����������� ������������������ 데이터 용량 :����������� ������������������ 53.1MB����������� ������������������ ����������� ������������������

Page 80: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������ Attribute Type PK/FK Constraint

Value distribution

Distinct value

Example

SEQ INT(11) PK UNIQUE PK로 UNIQUE 100,000 0

USER_ID VARCHAR(20) UNIQUE UNIQUE 100,000 izie

PASSWORD VARCHAR(20) NN 대략 UNIQUE - 1231

EMAIL VARCHAR(100) NN UNIQUE 100,000 [email protected]

USER_NAME VARCHAR(20) NN 대략 UNIQUE - 장익환

JOIN_DATE DATETIME NN 2013.1.1 이후 - 2013-09-13

USER_PROFILE_URL VARCHAR(256) NN UNIQUE 100,000 www.test.com/profile.png

STATUS INT(11) 0:탈퇴 1:가입 2 1

DROP_DATE DATE 대략 UNIQUE - NULL

MODIFY_DATE DATE 대략 UNIQUE - NULL

LANGUAGE VARCHAR(512) NN 약 130개로 분포 130 KOR

IS_EDIT_TOOL VARCHAR(512) NN 대략 5개로 분포 5 1

TBL_LIKE_LIST_SEQ INT(11) UNIQUE 100,000 0

TBL_USER����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ 사용자는 대략 100,000명 있다고 가정����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 사용자 개개인의 ID,����������� ������������������ EMAIL은 다르므로 UNIQUE(100,000개)����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 각 사용자 별로 PASSWORD는 중복되는 값이 있을 수도 있으므로 대략 UNIQUE����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 100,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 약 160MB����������� ������������������

Page 81: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ INT(11) PK UNIQUE PK로 UNIQUE 300,000 1

SEQ_USER INT(11) FK NN 100,000개로 분포 100,000 253

TBL_THEME_SEQ INT(11) FK UNIQUE UNIQUE - 76

BUY_DATE DATETIME NN 2013.1.1 이후 - 2013-01-21

BUY_METHOD ENUM(…) NN 대략 5개로 분포 5 0

TBL_BUY_LIST����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ 한 명의 사용자가 테마 대략 3개 구입한다고 가정����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 따라서 대략 300,000개의 구입 SEQ가 있음.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 총 사용자가 100,000명으로 가정했으므로 SEQ_USER의 값 분포는 100,000개����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 300,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 약 43MB����������� ������������������ ����������� ������������������

Page 82: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct Value

Example

SEQ INT(11) UNIQUE UNIQUE 100,000,000 3645

LIKE_DATE DATETIME NN 2013.1.1 이후 - 2014-05-06

SEQ_POST INT(11) FK NN 대략 UNIQUE - 2154

SEQ_USER INT(11) FK NN 100,000개로 분포 100,000 157

TBL_LIKE_LIST����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ 한 명의 사용자가 좋아요 하는 글 약 1000개로 가정����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 따라서 대략 100,000,000개의 LIKE����������� ������������������ LIST����������� ������������������ SEQ가 있음.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 총 사용자가 100,000명으로 가정했으므로 SEQ_USER의 값 분포는 100,000개

데이터 규모����������� ������������������ :����������� ������������������ 100,000,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 약 14GB����������� ������������������

Page 83: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ INT(11) PK UNIQUE PK로 UNIQUE 50,000,000 255

SEQ_FRIEND INT(11) FK NN 100,000개로 분포 100,000 127

SEQ_USER INT(11) FK NN 100,000개로 분포 100,000 65

TBL_FRIENDS����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ 한 명의 사용자 당 친구의 수 500명으로 가정����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 따라서 대략 50,000,000개의 FRIEND����������� ������������������ SEQ가 있음.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 총 사용자가 100,000명으로 가정했으므로 SEQ_USER의 값 분포는 100,000개����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 마찬가지로 총 사용자가 100,000명으로 가정했으므로 SEQ_FRIEND의 값 분포는 100,000개

데이터 규모����������� ������������������ :����������� ������������������ 50,000,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 약 6.6GB����������� ������������������

Page 84: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������ Attribute Type PK/FK Constraint

Value distribution

Distinct value

Example

SEQ INT(11) PK UNIQUE PK로 UNIQUE 10,000 0

SEQ_USER INT(11) NN 100,000개로 분포 100,000 0

TITLE VARCHAR(2048) NN 대략 UNIQUE - 장익환이 직접 만든 테마

SUMMARY VARCHAR(2048) NN 대략 UNIQUE - 장익환스 테마입니다.

DETAIL VARCHAR(2048) NN 대략 UNIQUE - 이것은 jQuery 1.9이상에서만 동작합니다.

SOURCE_CODE VARCHAR(4096) NN 대략 UNIQUE - Global $themename,

$shortname, $options_saved, $menu_locations;

THUMBNAIL VARCHAR(512) NN 대략 UNIQUE - www.izectlab.com/test.png

OPT_FREE_OR_PAID TINYINT(1) 0:무료 1:유료 2 1

PRICE INT(11) NN 대략 UNIQUE - 123412

SEQ_CATEGORY INT(11) NN 대략 20개로 분포 20 3

HIT_VIEW INT(11) NN - - 30

HIT_SELL INT(11) NN - - 20

TBL_THEME����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ 현재 등록되어있는 테마 개수가 10,000개로 가정����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ 각 테마를 나타내는 SEQ,����������� ������������������ 테마의 이름/설명/코드 등은 겹치지 않을 가능성이 크기 때문에 대략 UNIQUE,����������� ������������������ 카테고리는 20개로 가정했으므로 20개의 distribution����������� ������������������ value가 있을 것으로 보임.����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 10,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 약 110MB����������� ������������������ ����������� ������������������

Page 85: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct value

Example

SEQ INT(11) PK UNIQUE PK로 UNIQUE 100,000 525

SEQ_THEME INT(11) NN 10,000개로 분포 10,000 42

SCREENSHOT_URL VARCHAR(512) NN UNIQUE - www.izectlab.com/test.png

TBL_THEME_SCREENSHOT����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ 한 테마당 screenshot����������� ������������������ 개수 10개로 가정����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 따라서 테마 10,000개 당 screenshot����������� ������������������ 개수 10개로,����������� ������������������ 대략 100,000개의 레코드가 있음.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ ����������� ������������������ 각 screenshot이 가지는 SEQ는 서로 다르므로 100,000개의 distinct����������� ������������������ value����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 테마 레코드 10,000개로 가정했으므로 SEQ_THEME는 10,000개의 distinct����������� ������������������ value가짐.����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 100,000개,����������� ������������������ 데이터 용량 :����������� ������������������ 약 60MB����������� ������������������ ����������� ������������������

Page 86: Analyze of Tumblr.com

데이터 분석����������� ������������������ ����������� ������������������ ����������� ������������������

Attribute Type PK/FK Constraint Value

distribution Distinct Value

Example

SEQ INT(11) PK UNIQUE PK로 UNIQUE 20 12

NAME VARCHAR(256) NN 대략 UNIQUE - 이카니카테고리

TBL_CATEGORIES����������� ������������������

•  Value����������� ������������������ distribution����������� ������������������ :����������� ������������������ 카테고리 20개로 가정,����������� ������������������ CATEGORIES����������� ������������������ table에는 20개의 레코드가 있음.����������� ������������������

•  Distinct����������� ������������������ value����������� ������������������ :����������� ������������������ table내의 각 카테고리를 구분하는 SEQ는 UNIQUE해야 하므로����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 모두 20개의 distinct����������� ������������������ value����������� ������������������ 가질 수 있음.����������� ������������������

데이터 규모����������� ������������������ :����������� ������������������ 20개,����������� ������������������ 데이터 용량 :����������� ������������������ 약 6KB����������� ������������������

Page 87: Analyze of Tumblr.com

87

INDEXING����������� ������������������ 설계����������� ������������������

Page 88: Analyze of Tumblr.com

인덱싱 설계 전략  사용자 쿼리 특성

l 응용 특성상 USER의 POST를 읽어오는 부분에서 삽입/삭제 뿐만 아니라

SELECT����������� ������������������ 연산이 매우 많이 일어난다.����������� ������������������ ����������� ������������������

성능비교 및 원칙

l 대표적인 POST를 읽어오는 QUERY를 이용하여 인덱싱 전후의 성능 비교를 진

행한다.����������� ������������������

l 인덱싱을 하지 않은 TABLE은 순차화일로 순차접근을 원칙으로 한다.����������� ������������������

인덱싱

조건 설정

l 인덱스의 구조는 B+����������� ������������������ tree����������� ������������������ -->1000차 B+tree����������� ������������������

l BF(블록킹 팩터) : 1000

����������� ������������������

Page 89: Analyze of Tumblr.com

사용자 타임라인 쿼리  select����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ A.SEQ,A.POST_TYPE����������� ������������������ ,(case����������� ������������������ A.POST_TYPE����������� ������������������ ����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ when����������� ������������������ 0����������� ������������������ then����������� ������������������ (select����������� ������������������ title����������� ������������������ from����������� ������������������ TBL_POST_WRITINGS����������� ������������������ where����������� ������������������ SEQ����������� ������������������ =����������� ������������������ A.SEQ)����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ when����������� ������������������ 1����������� ������������������ then����������� ������������������ (select����������� ������������������ content����������� ������������������ from����������� ������������������ TBL_POST_IMAGE����������� ������������������ where����������� ������������������ SEQ����������� ������������������ =����������� ������������������ A.SEQ)����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ when����������� ������������������ 2����������� ������������������ then����������� ������������������ (select����������� ������������������ quote����������� ������������������ from����������� ������������������ TBL_POST_QUOTE����������� ������������������ where����������� ������������������ SEQ����������� ������������������ =����������� ������������������ A.SEQ)����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ when����������� ������������������ 3����������� ������������������ then����������� ������������������ (select����������� ������������������ title����������� ������������������ from����������� ������������������ TBL_POST_LINK����������� ������������������ where����������� ������������������ SEQ����������� ������������������ =����������� ������������������ A.SEQ)����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ when����������� ������������������ 4����������� ������������������ then����������� ������������������ (select����������� ������������������ title����������� ������������������ from����������� ������������������ TBL_POST_CHAT����������� ������������������ where����������� ������������������ SEQ����������� ������������������ =����������� ������������������ A.SEQ)����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ when����������� ������������������ 5����������� ������������������ then����������� ������������������ (select����������� ������������������ url����������� ������������������ from����������� ������������������ TBL_POST_AUDIO����������� ������������������ where����������� ������������������ SEQ����������� ������������������ =����������� ������������������ A.SEQ)����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ when����������� ������������������ 6����������� ������������������ then����������� ������������������ (select����������� ������������������ content����������� ������������������ from����������� ������������������ TBL_POST_VIDEO����������� ������������������ where����������� ������������������ SEQ����������� ������������������ =����������� ������������������ A.SEQ)����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ end)����������� ������������������ AS����������� ������������������ TITLE,A.CREATE_DATE,C.USER_NAME,A.HIT_VIEWER����������� ������������������

from����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ TBL_POSTS����������� ������������������ A,����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ TBL_BLOG����������� ������������������ B,����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ TBL_USER����������� ������������������ C����������� ������������������

where����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ A.SEQ_BLOG����������� ������������������ =����������� ������������������ B.SEQ����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ and����������� ������������������ B.SEQ_USER����������� ������������������ =����������� ������������������ C.SEQ����������� ������������������

����������� ������������������ ����������� ������������������ ����������� ������������������ and����������� ������������������ C.SEQ����������� ������������������ in����������� ������������������ in����������� ������������������ (select����������� ������������������ seq����������� ������������������ from����������� ������������������ tbl_friends����������� ������������������ where����������� ������������������ seq_user����������� ������������������ =����������� ������������������ (select����������� ������������������ seq����������� ������������������ from����������� ������������������ tbl_users����������� ������������������ where����������� ������������������ user_id='izie'))����������� ������������������

order����������� ������������������ by����������� ������������������ A.HIT_VIEWER����������� ������������������ desc����������� ������������������

Page 90: Analyze of Tumblr.com

인덱싱 설계 

INDEX 전 INDEX 후 성능향상

BEST 1 1(리프) + 2(트리 높이)

200 / 3 = 66.666배 성능향상

WORST 400,000 / 1,000 = 400 1(리프) + 2(트리 높이)

AVERAGE (400,000 / 1,000) / 2 = 200 1(리프) + 2(트리 높이)

TBL_POSTS_*����������� ������������������

select����������� ������������������ title����������� ������������������ ����������� ������������������ from����������� ������������������ TBL_POST_WRITINGS����������� ������������������ where����������� ������������������ SEQ����������� ������������������ =����������� ������������������ 123����������� ������������������ ����������� ������������������ (단, 모든 종류의 POST들은 동일하다고 가정)

l SEQ는����������� ������������������ MYSQL에서����������� ������������������ 자동으로����������� ������������������ 부여하는����������� ������������������ SEQUENCE����������� ������������������ NUMBER로����������� ������������������ 오름차순으로����������� ������������������ 부여하여����������� ������������������ 자동����������� ������������������ 오름차순정렬이����������� ������������������ 되어있다.����������� ������������������

l SEQ를����������� ������������������ 기준으로����������� ������������������ 희소인덱스를����������� ������������������ 구성하면����������� ������������������ 보다����������� ������������������ 적은����������� ������������������ 탐색으로����������� ������������������ 해당����������� ������������������ 값을����������� ������������������ 찾을����������� ������������������ 수����������� ������������������ 있다.����������� ������������������

Page 91: Analyze of Tumblr.com

인덱싱 설계  TBL_USER����������� ������������������

select����������� ������������������ seq����������� ������������������ ����������� ������������������ from����������� ������������������ tbl_users����������� ������������������ ����������� ������������������ where����������� ������������������ user_id='izie'����������� ������������������

l 거의����������� ������������������ 모든����������� ������������������ 쿼리문의����������� ������������������ 시작은����������� ������������������ USER����������� ������������������ table에서����������� ������������������ USER_ID를����������� ������������������ 이용하여����������� ������������������ SEQ를����������� ������������������ 알아한다. 따라서����������� ������������������ 많은����������� ������������������ 탐색이����������� ������������������ 필요하므로����������� ������������������ USER_ID를����������� ������������������ 기본����������� ������������������ 인덱스로하여����������� ������������������ 이를����������� ������������������ b+트리의����������� ������������������ 구조로����������� ������������������ 사용하여����������� ������������������ 보다����������� ������������������ 빠른����������� ������������������ 탐색을����������� ������������������ 할����������� ������������������ 수����������� ������������������ 있도록����������� ������������������ 한다.����������� ������������������ ����������� ������������������

INDEX 전 INDEX 후 성능향상

BEST 1 1(리프) + 2(트리 높이)

50 / 3 = 16.66배 성능향상

WORST 100,000 / 1,000 = 100 1(리프) + 2(트리 높이)

AVERAGE (100,000 / 1,000) / 2 = 50 1(리프) + 2(트리 높이)

Page 92: Analyze of Tumblr.com

인덱싱 설계 

INDEX 전 INDEX 후 성능향상

BEST 50,000,000 / 1,000 = 50,000 2 + 500 = 502

50,000 / 502 = 99.6배 성능향상

WORST 50,000,000 / 1,000 = 50,000 2 + 500 = 502

AVERAGE 50,000,000 / 1,000 = 50,000 2 + 500 = 502

TBL_FRIENDS����������� ������������������

select����������� ������������������ seq����������� ������������������ ����������� ������������������ from����������� ������������������ tbl_friends����������� ������������������ ����������� ������������������ where����������� ������������������ seq_user����������� ������������������ =����������� ������������������ 123����������� ������������������ ����������� ������������������

l 데이터규모가����������� ������������������ 매우����������� ������������������ 크므로����������� ������������������ 인덱스를����������� ������������������ 생성하는����������� ������������������ 것이����������� ������������������ 효율적임����������� ������������������

l SEQ_USER����������� ������������������ 로����������� ������������������ 집중인덱스����������� ������������������ 구성하는����������� ������������������ 것이����������� ������������������ 효율적임����������� ������������������ 주로사용하는����������� ������������������ 쿼리는����������� ������������������ 사용자의����������� ������������������ 친구들의����������� ������������������ 목록이����������� ������������������ 필요하므로����������� ������������������ SEQ_USER로����������� ������������������ 탐색한다.����������� ������������������

l 이때����������� ������������������ SEQ_USER값으로����������� ������������������ cluster를����������� ������������������ 이루고����������� ������������������ 있으면����������� ������������������ I/O횟수가����������� ������������������ 줄어든다.����������� ������������������ ����������� ������������������

Page 93: Analyze of Tumblr.com

인덱싱 설계 

INDEX 전 (블록 단위)

INDEX 전 (투플 단위)

INDEX 후

BEST (100,000 / 1,000) + (100,000 / 1,000) * (100,000 / 1,000)

= 10100

(100,000 / 1,000) + 100,000 * (100,000 / 1,000)

= 10,000,100

(100,000 / 1,000) + 100,000 * (2 + 1)

= 300,100 WORST

AVERAGE

TBL_POSTS����������� ������������������ (JOIN����������� ������������������ 1)����������� ������������������

l JOIN����������� ������������������ (TLB_USER����������� ������������������ table,����������� ������������������ TLB_BLOG����������� ������������������ table)����������� ������������������

l INDEX����������� ������������������ 전은 중첩루프, INDEX����������� ������������������ 후는 인덱스 검사 수행 (JOIN����������� ������������������ TABLE����������� ������������������ 결과 테이블 이름은 RESULT로 가정)

Page 94: Analyze of Tumblr.com

인덱싱 설계 

INDEX 전 (블록 단위)

INDEX 전 (투플 단위)

INDEX 후

BEST (100,000 / 1,000) + (100,000 / 1,000) * (2,000,000 / 1,000)

= 200,100

(100,000 / 1,000) + 100,000 * (2,000,000 / 1,000)

= 200,000,100

(100,000 / 1,000) + 100,000 * (3 + 1)

= 400,100 WORST

AVERAGE

TBL_POSTS����������� ������������������ (JOIN����������� ������������������ 2)����������� ������������������

l JOIN����������� ������������������ (RESULT����������� ������������������ table,����������� ������������������ TLB_POST����������� ������������������ table)����������� ������������������

l INDEX����������� ������������������ 전은 중첩루프, INDEX����������� ������������������ 후는 인덱스 검사 수행

Page 95: Analyze of Tumblr.com

인덱싱 설계 

INDEX 전 (블록 단위)

INDEX 전 (투플 단위)

INDEX 후

BEST (400,000 / 1,000) + (40,000 / 1,000) *

(2,000,000 / 1,000) = 80,400

(400,000 / 1,000) + 40,000 *

(2,000,000 / 1,000) = 80,000,400

(400,000 / 1,000) + 400,000 * (3 + 1)

= 1,600,400 WORST

AVERAGE

TBL_POSTS����������� ������������������

select����������� ������������������ title����������� ������������������ from����������� ������������������ post_writing����������� ������������������ PW,����������� ������������������ post����������� ������������������ P����������� ������������������ where����������� ������������������ PW.seq����������� ������������������ =����������� ������������������ P.seq����������� ������������������

l 이����������� ������������������ table에����������� ������������������ 많은����������� ������������������ 부하가����������� ������������������ 걸리고����������� ������������������ 데이터����������� ������������������ 규모가����������� ������������������ 크므로����������� ������������������ 인덱스����������� ������������������ 설계가����������� ������������������ 필요하다.����������� ������������������

l SEQ_BLOG로����������� ������������������ 집중����������� ������������������ 인덱스를����������� ������������������ 구성하여����������� ������������������ cluster를����������� ������������������ 이루어야����������� ������������������ I/O횟수가����������� ������������������ 줄어든다.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������

조인을����������� ������������������ 수행하는����������� ������������������ 경우,����������� ������������������ 인덱싱을����������� ������������������ 하지����������� ������������������ 않은����������� ������������������ 경우����������� ������������������ 중첩루프를����������� ������������������ 사용하여����������� ������������������ 조인하는데,����������� ������������������ 이때����������� ������������������ 블록단위로����������� ������������������ 하는����������� ������������������ 것이����������� ������������������ 가장����������� ������������������ I/O수가����������� ������������������ 적었다.����������� ������������������ 가장����������� ������������������ 큰����������� ������������������ 경우는����������� ������������������ 투플단위로����������� ������������������ 중첩루프를����������� ������������������ 사용하는����������� ������������������ 경우였고����������� ������������������ 그����������� ������������������ 다음으로����������� ������������������ 인덱스����������� ������������������ 검사����������� ������������������ 방법이����������� ������������������ 크다.����������� ������������������

Page 96: Analyze of Tumblr.com

thanks!

www.matthewlab.com

감사합니다.