본문 바로가기
프로그래머/프로그래밍

STRUTS2+iBatis 계층형 게시판 만들기 (1)

by plog 2009. 12. 14.
지금 부터 대용량 계층형 게시판을 만들려고 합니다.

개발 환경은
언어: JSP+STRUTS2
DB: MS-SQL
기타: iBatis, WINDOWS 2003
개발툴: Eclipse

1. 단계 DB 구축
- 데이터 베이스 스키마

CREATE TABLE [dbo].[BOARD_MASTER](
   [BOARD_NU] [int] NOT NULL,
   [CONTENT_NU] [int] NOT NULL,
   [TITLE] [varchar](256) COLLATE Korean_Wansung_CI_AS NULL,
   [CONTENTS] [text] COLLATE Korean_Wansung_CI_AS NULL,
   [WRITE_DT] [datetime] NULL,
   [ADJUST_DT] [datetime] NULL,
   [USER_ID] [varchar](20) COLLATE Korean_Wansung_CI_AS NULL,
   [WRITER] [varchar](50) COLLATE Korean_Wansung_CI_AS NULL,
   [RESULT] [varchar](50) COLLATE Korean_Wansung_CI_AS NULL,
   [KIND] [varchar](50) COLLATE Korean_Wansung_CI_AS NULL,
   [DEPTH_NU] [int] NULL,
   [ORDER_NU] [int] NOT NULL,
   [STEP_NU] [int] NOT NULL,
   [COUNTS] [int] NULL,
   CONSTRAINT [PK_BOARD_MASTER] PRIMARY KEY NONCLUSTERED
  (
     [BOARD_NU] ASC,
     [CONTENT_NU] DESC
  )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON,    
  ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
(스크립트 파일 첨부 되었음)

연결 테이블이 더 있지만 가장 기본 로직이 되는 부분 설명하기 위해 관계는 모두 끊었습니다.
위 스크립트의 특징은 기본키인 [BOARD_NU] , [CONTENT_NU] 를 nonclustered로 설정하였고,  [ORDER_NU] , [STEP_NU] 으로 구성되어 있는 index를 clustered로 설정하였습니다. 이와 같이 설정한 이유는 게시판 특성에 맞게 최신글이 상단 오래된 글이 하단으로 표출 되도록 하기위해 별도의 order by 구문을 사용하지 않게 하여 성능을 향상 시키기 위해서 입니다.

보충 설명
clustered index 는 한번에 원하는 데이타는 찾는 것이고, nonclustered index는 찾아보기를 통해서 원하는 데이타가 있는 곳에 근접하는 것이라 생각하면 됩니다. index는 검색할때 빠른 속도로 원하는 데이타를 찾아보기 위한 것이지만, 데이타를 변경하는 insert, update 같은 쿼리는 해당 색인을 만들어야 하기에 속도에 부담을 주게 됩니다.

보충 설명에서 알 수 있듯이 글의 정렬 컬럼을 [ORDER_NU] 하나만으로도 충분히 구성이 가능하시만, 오래된 글에 대한 답글이 달릴경우 time out이 걸릴정도의 많은 시간이 소요 됩니다. 그래서 [STEP_NU] 이란 컬럼을 두어 update를 최소로 구성 하였습니다.

 컬럼 설명 
 BOARD_NU  보드 ID
 CONTENT_NU  글번호
 TITLE  글 제목
 CONTENTS  글 내용
 WRITE_DT  작성 날짜
 ADJUST_DT  수정 날짜
 USER_ID  사용자 ID
 WRITER  사용자 이름
 RESULT  옵션] 글처리 상태
 KIND  옵션] 글 분류(구분)
 DEPTH_NU  답글의 깊이
 ORDER_NU  글 정렬 번호
 STEP_NU  부모글에 대한 글 정렬 번호
 COUNTS  조회수



댓글