본문 바로가기
DataBase/MySQL

큐브리드 NHN NBD 벤치마크 결과

by 백룡화검 2010. 4. 24.

NHN NBD 벤치마크 결과
(인터넷 게시판 응용 중심으로 MySQL과 성능 비교)

 


 

1.    개요... 3

1.1.   NBD Benchmark 목적... 3

1.2.   인터넷 게시판 서비스 시스템 참조 모델... 3

1.3.   NBD Benchmark 시스템 구조... 4

2.    시험 결과... 5

2.1.   시험 환경... 5

2.2.   시험 결과... 6

2.2.1.    CUBRID 7.3 : 10(thread)*7(process) SqlMap-DBCP. 6

2.2.2.    MySQL: 10(thread)*7(process) SqlMap-DBCP. 6

2.3.   시험 결과 분석... 7

2.3.1.    CUBRID vs MySQL TPS비교... 7

2.3.2.    CUBRID vs MySQL CPU 사용율 비교... 7

2.3.3.    CUBRID vs MySQL DISK사용율 비교... 8

3.    시험 시나리오... 9

3.1.   Database Design. 9

3.1.1.    Entities and Relationships. 9

3.1.2.    Table Layout 10

3.2.   Workload Design. 14

3.2.1.    Services Definitions. 14

3.2.2.    Transaction Definitions. 18

3.2.3.    Workload Type – Hotspot read. 33

3.2.4.    Database Scaling and Population. 34

3.2.5.    Throughput 36

 


1.    개요

문서는 인터넷 게시판 응용 프로그램에서 큐브리드 데이터베이스의 성능을 검증할 목적으로 작성되었으며, 시험 방법 시험 결과를 포함하고 있다.

1.1.    NBD Benchmark 목적

문서는 NHN Internet Bulletin Board Application Database Benchmark(이후 NBD Benchmark) 사양(Specification) 간략히 기술하고 1 시험 결과를 제공한다. NBD Benchmark 인터넷 서비스에서 대표되는 응용 프로그램인 게시판 류의 서비스에 대한 데이터베이스 시스템(혹은 DBMS) 성능 벤치마크를 정의한 것이다.

NBD Benchmark 게시판 류의 서비스를 구현하면서 사용되는 데이터베이스 시스템의 성능을 서비스 관점에서 측정하여 시스템들의 성능을 상호 비교하기 위한 것이다. NBD Benchmark 데이터베이스 시스템의 성능에만 초점을 맞추며, 전체 서비스에 관여되는 서버 등은 배제한 상태로 성능을 측정한다.

1.2.    인터넷 게시판 서비스 시스템 참조 모델

NBD Benchmark 모델이 되는 인터넷 게시판 서비스에 대한 참조 시스템의 구조는 그림 1 같다.

l   서비스 클라이언트: 인터넷 게시판 서비스를 이용하는 브라우저와 사용자를 의미한다.

l   인터넷 어플리케이션 서버: 브라우저가 접속하는 서버와 서비스 로직을 수행하는 어플리케이션 서버를 합해서 지칭한다.

l   내부 네트워크: 어플리케이션 서버와 데이터베이스 시스템 사이에 존재하는 네트워크이다. (NBD Benchmark 에서는 어플리케이션 서버와 데이터베이스 시스템이 네트워크 연결 없이 하나의 서버에서 시스템 구성은 고려하지 않는다.)

l   데이터베이스 시스템: 인터넷 게시판 데이터베이스를 저장 관리하고 어플리케이션의 데이터베이스 요청을 처리하는 시스템이다.

 

그림 1 서비스 시스템 참조 모델

1.3.    NBD Benchmark 시스템 참조 구조

NBD Benchmark 1.2 인터넷 게시판 서비스 시스템 참조 모델에서 어플리케이션 서버가 브라우저(사용자) 서비스 요청을 처리하기 위해 데이터베이스 시스템에 요청을 보내고 결과를 얻는 과정에서 데이터베이스 시스템의 성능을 측정하기 위한 것으로, (1) 워크로드를 제공하는 테스트 드라이버 프로그램과 (2) 성능 측정 대상인 데이터베이스시스템, 그리고 (3) 데이터를 생성하는 데이터베이스 생성기로 구성된다. (그림 2)

테스트 드라이버는 서비스를 사용하는 브라우저와 서비스를 제공하는 어플리케이션 서버의 역할을 수행하는 프로그램으로 정의된 워크로드를 생성하며, 데이터베이스의 응답 결과를 서비스와 트랜잭션, 그리고 트랜잭션을 구성하는 SQL 쿼리 수준에서 측정한다.

데이터베이스 생성기는 대상 데이터베이스 시스템을 이용해 Database Design 정의된 NBD 데이터베이스를 생성/구성하는 프로그램이다.

그림 2 NBD Benchmark 시스템 참조 구조

 

2.    시험 결과

2.1.    시험 환경

항목

소항목

CUBRID

MySQL

데이터베이스

버전

CUBRID Release 7.3.0.1085

5.0.40-nhn_standard_64-log MySQL NHN Standard 64bit Version

서버 정보

시스템 정보

시험에 사용된 모든 장비의 SPEC은 동일함.

Linux d78741 2.6.18-8.el5 #1 SMP Thu Mar 15 19:46:53 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux

CPU

4 * ( model name: Intel(R) Xeon(R) CPU 5148  @ 2.33GHz

cpu MHz   : 2327.528

cache size  : 4096 KB )

MEM

8G

데이터 베이스 구성

스케일

small-scaled board (게시물 수 1000 ± 10%) 2

medium-scaled board (게시물 수 100000 ± 10%) 6

워크로드 유형

 

Hotspot read

워크로드 설정

 

DBMS 서버의 CPU 사용률을 극대화 하는 work load 생성. 다음 run 20분간 3회 연속 순차 수행

CUBRID: 10(thread)*7(process) SqlMap-DBCP

MySQL: 10(thread)*7(process) SqlMap-DBCP

테스트 드라이버

Font-end

NBench (2007/11/8일 버전)

Backend 구성

SQL Map + DBCP,  JDBC + DBCP

Backend 구성 package

SQL Map : ibatis-2.3.0.677.jar

DBCP : commons-dbcp-1.1.jar

JDBC : cubrid_jdbc_1085.jar (CUBRID), mysql-connector-java-5.1.3-rc-bin.jar (MySQL)

기타 소프트웨어

 

없음

NOTICE:

서비스 적용 시에는 대부분 HA(High Availability) 구성이 필요하므로 복제 기능을 이용하여 Active ó Standby를 구성한다. 따라서 2대의 DB 서버를 구성하는 것을 목표 모델로 하여 시험한다.

 

2.2.    시험 결과

2.2.1.     CUBRID 7.3 : 10(thread)*7(process) SqlMap-DBCP 

항목

RUN1

RUN2

RUN3

수행 시간 (msec)

1,207,635

1,205,475

1,204,228

서비스 요청수

6,739,478

6,688,506

6,702,216

실패한 서비스 요청수

2

0

0

페이지 뷰 (PV/sec)

944

938

941

초당 트랜잭션 처리수(TPS/sec)

5,580

5,548

5,565

2.2.2.     MySQL: 10(thread)*7(process) SqlMap-DBCP

항목

RUN1

RUN2

RUN3

수행 시간 (msec)

1,207,710

1,208,835

1,209,678

서비스 요청수

3,709,017

3,709,882

3,693,530

실패한 서비스 요청수

49

40

32

페이지 뷰 (PV/sec)

540

540

537

초당 트랜잭션 처리수(TPS/sec)

3,071

3,068

3,053


2.3.  시험 결과 분석

2.3.1.     CUBRID vs MySQL TPS비교

구분

CUBRID 7.3

MySQL 5.0.40

CUBRID vs MySQL
(TPS
기준)

수행 시간 (msec)

1,205,779

1,208,741

182%

서비스 요청수

6,710,067

3,704,143

실패한 서비스 요청수

1

40

페이지 뷰 (PV/sec)

941

539

초당 트랜잭션 처리수(TPS/sec)

5,564

3,064

 

##########2*

 

2.3.2.     CUBRID vs MySQL CPU 사용율 비교

NOTE:

m  수집 방식 : sar –r

m  수집 항목

     USER : Percentage of CPU utilization that occurred while executing at the user level

     SYSTEM: Percentage of CPU utilization that occurred while executing at the system level

     TOTAL : USER + SYSTEM

 

2.3.3.     CUBRID vs MySQL DISK사용율 비교

 

 

NOTE:

m  수집 방법: sar –B

m  수집 항목

     pgpgin/s : Total number of kilobytes the system paged in from disk per second

     pgpgout/s : Total  number  of  kilobytes  the  system paged out to disk per second

     faults/s : Number of page faults (major + minor) made by the system per second

n   

3.    시험 시나리오

3.1.    Database Design

3.1.1.     Entities and Relationships

다음 그림은 NBD Benchmark 데이터베이스에 대한 간단한 ER Diagram이다.

그림 3 NBD 데이터베이스 ER 다이어그램

 

3.1.2.     Table Layout

범례: PK – Primary Key, FK – Foreign Key, NL – Not NULL constraint, U – Unique constraint

 

n  NBD_BOARD_INFO

NBD_BOARD_INFO 테이블은 데이터베이스에 있는 게시판들의 정보를 포함한다.

1 NBD_BOARD_INFO 테이블

필드명

필드 정의 (데이터타입)

제약 조건

설명

BOARD_ID

Decimal digits (10)

PK

게시판 식별자,

BOARD_TITLE

Variable character (100)

NL

게시판 제목

BOARD_DESCRIPTION

Variable character (300)

 

게시판에 대한 설명

SERVICE_INFO

Variable character (30)

NL

게시판이 사용되는 서비스

BOARD_TYPE

Variable character (10)

NL

게시판의 종류 (. UCC, Text, Picture)

BOARD_STATUS

Variable character (10)

NL

게시판의 상태 (. Active, Closed)

AUTH_CONTROL

Variable character (200)

 

권한을 나타내는 스트링

ADMIN_ID

Variable character (20)

 

관리자의 ID

OPEN_DATE

Date

 

서비스 시작된 날짜

CLOSE_DATE

Date

 

서비스 중지된 날짜

EXTRA_1

 

 

 

EXTRA_2

 

 

 

EXTRA_3

 

 

 

EXTRA_4

 

 

 

 

n  NBD_CATEGORY

NBD_CATEGORY 테이블은 게시판 내에서 게시물들의 주제 구분을 의미한다. 예를 들어, ‘세계 여행게시판이라면 여행 준비’, ‘맛집 소개’, ‘숙소 정보’, ‘여행기’, ‘기타등으로 구분할 있다. 게시물을 작성할 때는 특정 주제를 선택할 수도 있고, 주제 선택 없이 전체 수도 있다.

CATEGORY_ID 데이터베이스 범위에서 유일해야 한다. BOARD_ID 어떤 게시판에서 정의된 카테고리인지 나타낸다.

2 NBD_CATEGORY 테이블

필드명

필드 정의 (데이터타입)

제약 조건

설명

BOARD_ID

Decimal digits (10)

FK

게시판 식별자,

CATEGORY_ID

Decimal digits (10)

PK

카테고리 식별자

CATEGORY_NAME

Variable character (20)

NL

카테고리명

EXTRA_1

 

 

 

EXTRA_2

 

 

 

EXTRA_3

 

 

 

EXTRA_4

 

 

 

 

n  NBD_ARTICLE_INFO

NBD_ARTICLE_INFO 테이블은 모든 게시물에 대한 상세 정보를 저장하고 있다. NBD Benchmark 데이터베이스 모델에서는 게시판 별로 테이블이 분리되지 않고 모든 게시물은 보드 식별자(BOARD_ID) 가지고 있다.

ARTICLE_ID 게시판 내에서가 아닌 데이터베이스 범위 내에서 유일해야 한다.

ARTICLE_NO 게시판 내에서 등록되는 순서로 일련번호를 할당한다. 또한, 게시물이 답글인 경우는 원래 게시물과 동일한 ARTICLE_NO 갖는다. 답글도 하나의 게시물이므로 ARTICLE_ID 별도로 부여된다.

REPLY_NO_SEQ 게시물이 답글인 경우 값을 가지며, 대상 게시물의 ARTICLE_NO 답글 내에서의 순서 번호를 덧붙인 형태를 스트링으로 인코딩하여 만든다. 예를 들어, 10 게시물에 대한 3번째 답글인 경우는 ARTICLE_NO 10이며 REPLY_NO_SEQ “10,3” 값을 가지며, 10 게시물의 5번째 답글에 대한 첫번째 답글인 경우는 REPLY_NO_SEQ “10,5,1” 값을 가진다.

REPLY_DEPTH 답글인 경우 중첩 깊이를 표시한다. 예를 들어, 10 게시물에 대한 3번째 답글인 경우는 REPLY_DEPTH 1이며, REPLY_NO_SEQ “10,5,1” 답글은 REPLY_DEPTH 2이다. 답글이 아닌 게시물은 REPLY_DEPTH 0이다.

READ_COUNTER, RECOMMENDED_COUNTER, COMMENT_COUNTER, SCRAP_COUNTER 기본값은 0이다.

3 NBD_ARTICLE_INFO 테이블

필드명

필드 정의 (데이터타입)

제약 조건

설명

BOARD_ID

Decimal digits (10)

FK

게시물의 게시판 식별자

ARTICLE_ID

Decimal digits (20)

PK

게시물 식별자

ARTICLE_NO

Decimal digits (10)

NL

보드 내에서 게시물의 순서 번호

REPLY_NO_SEQ

Variable character (30)

U

답글 번호의 시퀀스 (. ARTICLE_NO 10 대한 번째 답글인 경우 10,2)

REPLY_DEPTH

Decimal digits (10)

 

답글 깊이 (. REPLY_NO_SEQ 10,2,1 경우 2)

ARTICLE_TITLE

Variable character (300)

NL

게시물 제목

PREVIEW_TEXT

Variable character (500)

 

미리 보기 텍스트 내용

THUMBNAIL_IMAGE

Variable character (200)

 

썸네일 이미지의 URI

ARTICLE_TYPE

Variable character (10)

NL

게시물의 종류 (. Text, Picture, UCC(Video Clip))

ARTICLE_CATEGORY

Decimal digits (10)

FK

게시물의 카테고리

ARTICLE_STATUS

Variable character (10)

NL

게시물의 상태 (. Deleted, Restricted, …)

WRITER_ID

Variable character (20)

NL

작성자 ID

WRITER_NICKNAME

Variable character (50)

NL

작성자 필명

WRITER_INFO

Variable character (200)

 

작성자 정보 (. IP 주소, e-mail, 성별, 브라우저 쿠키 )

POSTED_TIME

Timestamp

NL

게시물 등록 시간

MODIFIED_TIME

Timestamp

 

게시물 수정 시간

ARTICLE_PASSWORD

Variable character (20)

 

게시물 암호

HAS_ATTACHMENTS

Character (1)

 

첨부 포함 여부 (Y / N)

IS_PRIVATE

Character (1)

 

비공개 여부 (Y/N)

IS_SEARCHABLE

Character (1)

 

검색 허용 여부 (Y/N)

IS_SCRAPED

Character (1)

 

스크랩 여부 (Y/N)

IS_POPULAR

Character (1)

 

인기 여부 (Y/N)

READ_COUNTER

Decimal digits (10)

NL

조회수

RECOMMENDED_COUNTER

Decimal digits (10)

NL

추천수

COMMENT_COUNTER

Decimal digits (10)

NL

덧글

SCRAP_COUNTER

Decimal digits (10)

NL

스크랩

EXTRA_1

 

 

 

EXTRA_2

 

 

 

EXTRA_3

 

 

 

EXTRA_4

 

 

 

 

n  NBD_CONTENT

NBD_CONTENT 테이블은 NBD_ARTICLE_INFO 등록된 게시물의 내용을 저장한다.

레코드는 ARICLE_ID 구별한다. (ARTICLE_ID Foreign Key 이다.)

4 NBD_CONTENT 테이블

필드명

필드 정의 (데이터타입)

제약 조건

설명

BOARD_ID

Decimal digits (10)

FK

게시판 식별자

ARTICLE_ID

Decimal digits (20)

PK, FK

게시물 식별자

CONTENT

LOB (>=1G)

 

게시물 내용

EXTRA_1

 

 

 

EXTRA_2

 

 

 

EXTRA_3

 

 

 

EXTRA_4

 

 

 

 

n  NBD_ATTACHMENT

NBD_ATTACHMENT 테이블의 레코드는 NBD_ARTICLE_INFO 등록된 게시물의 첨부들이다. 하나의 게시물은 여러 개의 첨부를 가질 있으므로 게시물 ATTACHEMENT_NO 순서대로 부여한다. (ARTICLE_ID, ATTACHMENT_NO) 기본키(Primary Key) 된다. 첨부 데이터 자체는 데이터베이스에 저장하지 않고 별도의 외부 시스템에 저장되므로 해당 URI만을 저장한다.

5 NBD_ATTACHEMENT 테이블

필드명

필드 정의 (데이터타입)

제약 조건

설명

BOARD_ID

Decimal digits (10)

FK

게시판 식별자

ARTICLE_ID

Decimal digits (20)

PK, FK

게시물 식별자

ATTACHEMENT_NO

Decimal digits (10)

PK

첨부 번호

ATTACHEMENT_NAME

Variable character (20)

 

첨부 이름

ATTACHEMENT_TYPE

Variable character (10)

NL

첨부 종류 (. Text, Image, File)

ATTACHEMENT

Variable character (200)

 

첨부의 URI

ATTACHEMENT_SIZE

Decimal digits (10)

 

첨부 크기

EXTRA_1

 

 

 

EXTRA_2

 

 

 

EXTRA_3

 

 

 

EXTRA_4

 

 

 

 

n  NBD_COMMENT

NBD_COMMENT 테이블은 NBD_ARTICLE_INFO 등록된 게시물의 덧글들을 저장한다.

COMMENT_NO 게시물 별로 덧글의 게시 순서대로 부여된다. (ARTICLE_ID, COMMENT_NO) 기본키가 된다.

6 NBD_COMMENT 테이블

필드명

필드 정의 (데이터타입)

제약 조건

설명

BOARD_ID

Decimal digits (10)

FK

보드 식별자

ARTICLE_ID

Decimal digits (20)

PK, FK

게시물 식별자

COMMENT_NO

Decimal digits (10)

PK

덧글 번호

COMMENT_TEXT

Text or Variable character (500)

 

덧글

COMMENT_STATUS

Variable character (10)

NL

덧글의 상태 (. Deleted, Restricted, …)

WRITER_ID

Variable character (20)

 

작성자 ID

WRITER_NICKNAME

Variable character (50)

NL

작성자 필명

WRITER_INFO

Variable character (200)

 

작성자 정보 (. IP 주소, e-mail, 성별, 브라우저 쿠키 )

POSTED_TIME

Timestamp

NL

게시물 등록 시간

RECOMMENDED_COUNTER

Decimal digits (10)

NL

추천수

EXTRA_1

 

 

 

EXTRA_2

 

 

 

EXTRA_3

 

 

 

EXTRA_4

 

 

 

 

3.2.    Workload Design

3.2.1.     Services Definitions

절에서는 NBD Benchmark에서 모델링하고 있는 게시판 서비스를 제공해야 하는 액션 중심으로 정의한다. 절에서 정의된 서비스 액션들은 테스트 워크로드를 정의하는 구성요소가 된다.

 

n  Selecting an article

게시물 읽기 (Selecting an article)’ 서비스 액션은 게시판에서 특정 게시물 개를 선택하여 내용을 표시하는 작업으로 다음과 같은 세부 사항을 포함한다.

l   게시물 제목

l   게시물 내용

l   작성자 ID 필명

l   게시물 등록 시간

l   조회수, 추천수, 스크랩수

l   첨부 리스트 (첨부 리스트에는 첨부 번호, 첨부 이름, 첨부 종류, 첨부 크기 정보가 제공되어야 한다.)

l   덧글 리스트 (덧글 리스트는 덧글 등록 시간 역순으로 나열되어야 하며, 작성자 필명과 조회수, 추천수 정보가 제공되어야 한다.)

l   인접 게시물 리스트 (답글을 제외한 리스트 상에서 이전 게시물과 다음 게시물)

l   답글 리스트 (답글 리스트는 대상 게시물 다음에 답글 게시물 등록 시간의 역순으로 정렬되어야 한다. 이는 중첩된 모든 답글에 해당된다.)

 

게시물 읽기 수행되면 해당 게시물의 조회수(READ_COUNTER) 1 증가되어야 한다.

 

n  Showing article list (pagination) – ordering by article timestamp

리스트 보기 (Showing article list)’ 서비스 액션은 선택된 게시판의 게시물 리스트를 페이지 형태로 보여주는 작업으로 다음과 같은 내용을 포함한다. (삭제된 게시물은 리스트에 포함되지 않는다.)

l   게시물

l   페이지 게시물

l   게시물 번호 (ARTICLE_NO 아닌 리스트에 나타나는 순서 번호)

l   썸네일 이미지

l   게시물 제목

l   미리 보기 내용

l   답글 여부 (어떤 게시물에 대한 답글인지 구분되어야 한다.)

l   작성자 필명

l   게시물 작성 시간

l   조회수

l   추천수

l   덧글

l   첨부 포함 여부

l   인기 여부

l   페이지 번호 리스트

 

게시물 리스트 페이지에 나타나는 게시물의 개수는 다음과 같이 조정될 있다.

l   페이지 15 게시물

l   페이지 30 게시물

l   페이지 50 게시물

 

리스트 보기등록 시간 (Ordering by article timestamp)’ 게시물 리스트를 다음과 같은 조건으로 정렬하여야 한다.

l   게시물 등록 시간의 역순 최근에 등록된 게시물이 먼저 나옴

l   게시물의 답글은 대상 게시물 다음에 답글 게시물 등록 시간의 역순으로 정렬되어야 한다. 이는 중첩된 모든 답글에 해당된다.

 

n  Showing article list (pagination) – ordering by read counter

리스트 보기조회수 (Ordering by read counter)’ 다음과 같은 정렬 조건을 선택할 있도록 해야 한다.

l   게시물(답글 포함) 조회수의 역순 조회수가 많은 게시물이 먼저 나옴

l   게시물(답글 포함) 조회수 조회수가 적은 게시물이 먼저 나옴

 

n  Showing article list (pagination) – ordering by recommended counter

리스트 보기추천수 (Ordering by recommended counter)’ 다음과 같은 정렬 조건을 선택할 있도록 해야 한다.

l   게시물(답글 포함) 추천수의 역순 추천수가 많은 게시물이 먼저 나옴

l   게시물(답글 포함) 추천수 추천수가 적은 게시물이 먼저 나옴

 

n  Writing a new article

게시물 쓰기 (Writing a new article)’ 서비스 액션은 선택된 게시판에 새로운 게시물을 등록하는 작업으로 다음과 같은 정보가 사용자로부터 입력되거나 서비스 시스템으로부터 제공된다.

l   게시판 식별자

l   게시물 제목

l   게시물 종류

l   게시물 카테고리 (NBD_CATEGORY.CATEGORY_ID 형태로 주어지며 해당 게시판에 카테고리가 없거나 카테고리 지정이 없는 경우는 NULL 주어진다.)

l   게시물 내용

l   미리보기 텍스트 내용 (게시물 내용의 앞부분이 시스템에서 자동으로 생성된다고 가정한다.)

l   썸네일 이미지

l   작성자 ID 필명 (필명은 선택 사항으로 NULL 있다.)

l   작성자 정보

l   게시물 암호 (NULL 있다.)

l   답글 여부 (답글일 경우는 대상 게시물의 ARTICLE_ID 주어진다.)

l   첨부 여부 (HAS_ATTACHEMENTS)

l   개인글 여부 (IS_PRIVATE)

l   검색 노출 여부 (IS_SEARCHABLE)

 

게시물 식별자(ARTICLE_ID) 데이터베이스 시스템에서 제공되어야 한다.

게시물 번호(ARTICLE_NO) 데이터베이스 시스템에서 제공되어야 한다.

게시물 등록 시간(POSTED_TIME) 데이터베이스 시스템에서 제공되어야 한다.

 

n  Writing a new article with attachments

게시물 쓰기에서 첨부가 있는 경우는 다음과 같은 첨부에 관한 정보 N개가 추가로 제공된다.

l   첨부 이름

l   첨부 종류

l   첨부 URI

l   첨부 크기

첨부 번호(ATTACHEMENT_NO) 데이터베이스 시스템에서 제공되어야 한다.

 

n  Deleting an article

게시물 삭제 (Deleting an article)’ 서비스 액션은 게시물 읽기 선택된 게시물을 삭제하는 작업으로 다음과 같은 정보가 사용자로부터 입력되거나 서비스 시스템으로부터 제공된다.

l   게시판 식별자

l   게시물 식별자

l   현재 사용자 ID (관리자인 경우는 관리자 ID)

 

게시물 삭제는 사용자 ID 게시물 작성자 ID 동일할 경우이거나 관리자일 경우에만 가능하다.

삭제된 게시물은 데이터베이스에서 삭제되지 않는다. 게시물의 상태만 Deleted 변경되며, 실제 데이터 삭제는 사용자 서비스가 아닌 별도의 작업으로 진행된다. , NBD Benchmark에서는 실제 데이터 삭제를 포함하지 않는다.

게시물 변경 시간(MODIFIED_TIME) 데이터베이스 시스템에서 제공되어야 한다.

 

n  Canceling deletion of the article

게시물 삭제 취소 (Canceling deletion of the article)’ 서비스 액션은 게시물 삭제 삭제된 게시물을 다시 정상 게시물로 되돌리는 작업이다. 다음과 같은 정보가 주어진다.

l   게시판 식별자

l   게시물 식별자

l   관리자 ID

 

삭제 취소 작업은 관리자만 사용 가능하다.

 

n  Adding a comment to the article

덧글 쓰기 (Adding a comment to the article)’ 서비스 액션은 게시물 읽기 선택된 게시물에 덧글을 추가하는 작업으로 사용자나 서비스 시스템으로부터 다음과 같은 정보가 제공된다.

l   게시판 식별자

l   게시물 식별자

l   덧글 내용

l   작성자 ID 필명 (필명은 선택 사항으로 NULL 있다.)

l   작성자 정보

 

덧글 번호(COMMENT_NO) 데이터베이스 시스템에서 제공되어야 한다.

덧글 등록 시간(POSTED_TIME) 데이터베이스 시스템에서 제공되어야 한다.

 

n  Recommending an article

추천하기 (Recommending an article)’ 서비스 액션은 게시물 읽기 선택된 게시물이나 함께 표시된 덧글의 추천수 증가시키는 작업으로 사용자나 서비스 시스템으로부터 다음과 같은 정보가 제공된다.

l   게시판 식별자

l   게시물 식별자

l   사용자 ID

 

본인이 작성한 게시물이나 덧글에 대해서는 추천하기를 수행할 없다. WRITER_ID 주어진 사용자 ID 동일하지 않아야 한다.

 

n  Deleting the comment

덧글 삭제 (Deleting the comment)’ 서비스 액션은 게시물 읽기 선택된 게시물에 함께 표신된 덧글 리스트 중에 선택된 덧글을 삭제하는 작업으로 다음과 같은 정보가 사용자로부터 입력되거나 서비스 시스템으로부터 제공된다.

l   게시판 식별자

l   게시물 식별자

l   덧글 번호

l   현재 사용자 ID (관리자인 경우는 관리자 ID)

 

덧글 삭제는 사용자 ID 게시물 작성자 ID 동일할 경우이거나 관리자일 경우에만 가능하다.

 

n  Selecting popular (top most read) articles

인기글 뽑기 (Selecting popular articles)’ 서비스 액션은 다음 가지 작업을 포함한다.

l   서비스 시스템에서 주기적으로 수행되어 게시판 별로 추천수가 일정 (10) 넘은 게시물들을 추천수가 많은 순서로 지정된 수만큼 선택해 NBD_ARTICLE_INFO.IS_POPULAR 설정하여 리스트 보기에 표시될 있게 하는 작업

l   게시판 별로 인기글로 선정된 게시글 들의 리스트를 리스트 보기조회수 같은 방식으로 제공하는 작업

 

인기 뽑기 선택되는 게시물의 수는 다음과 같이 설정될 있다.

l   게시판 별로 10 게시물

l   게시판 별로 20 게시물

 

3.2.2.     Transaction Definitions

절에서는 NBD Benchmark 수행하는데 사용되는 트랜잭션을 정의한다. NBD Benchmark 테스트 워크로드는 트랜잭션들의 혼합(mix)으로 구성되며, 성능 측정 처리양(throughput) 단위가 된다. 하나의 서비스 액션은 다수의 트랜잭션으로 구성되고 워크로드의 트랜잭션 믹스에서 정의된 순서로 수행된다.

 

n  Select_Article_Info_And_Update_Read_Counter

‘Select_Article_Info_And_Update_Read_Counter’ 트랜잭션은 게시물 읽기서비스 액션에서 사용된다. 트랜잭션은 NBD_ARTICLE_INFO 테이블에서 레코드를 조회하고 READ_COUNTER 필드를 변경한다.

입력 조건

데이터베이스에 존재하는 게시물의 식별자

l   ARTICLE_ID

l   ARTICLE_STATUS = ‘Normal’

l   IS_PRIVATE = ‘N’

출력 조건

선택된 1 튜플

l   BOARD_ID

l   ARTICLE_ID

l   ARTICLE_NO

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

l   POSTED_TIME

l   HAS_ATTACHMENTS

l   READ_COUNTER

l   RECOMMENDED_COUNTER

l   COMMENT_COUNTER

l   SCRAP_COUNTER

데이터베이스 변경 조건

선택된 게시물의 조회수 증가

l   READ_COUNTER = READ_COUNTER + 1

 

n  Select_Content

‘Select_Content’ 트랜잭션은 게시물 읽기서비스 액션에서 Select_Article_Info_And_Update_ Read_Counter 트랜잭션 다음에 연속적으로 사용되며 NBD_CONTENT 테이블에서 레코드를. 조회한다.

입력 조건

Select_Article_Info_And_Update_Read_Counter 게시물 식별자

l   ARTICLE_ID

출력 조건

선택된 1 튜플

l   CONTENT

데이터베이스 변경 조건

없음

 

n  Select_Attachement_List

‘Select_Attachement_List’ 트랜잭션은 게시물 읽기서비스 액션에서 Select_Article_Info_And_ Update_Read_Counter 트랜잭션의 결과 HAS_ATTACHEMENT 값이 ‘Y’ 경우에 Select_Content 트랜잭션 다음에 연속적으로 사용되며 NBD_ATTACHEMENT 테이블의 레코드들을. 조회한다.

입력 조건

Select_Article_Info_And_Update_Read_Counter 게시물 식별자

l   ARTICLE_ID

출력 조건

ARTICLE_NO 순으로 정렬된 N개의 튜플

l   ATTACHEMENT_NO

l   ATTACHEMENT_NAME

l   ATTACHEMENT_TYPE

l   ATTACHEMENT

l   ATTACHEMENT_SIZE

데이터베이스 변경 조건

없음

 

n  Select_Comment_List

‘Select_Comment_List’ 트랜잭션은 게시물 읽기서비스 액션에서 Select_Article_Info_And_ Update_Read_Counter 트랜잭션의 결과 COMMENT_COUNTER 값이 1이상인 경우에 Select_Attachement_List 트랜잭션 다음에 연속적으로 사용되며 NBD_COMMENT 테이블의 레코드들을. 최대 100개까지 조회한다.

입력 조건

Select_Article_Info_And_Update_Read_Counter 게시물 식별자

l   ARTICLE_ID

l   COMMENT_STATUS = ‘Normal’

l   출력할 덧글의 최대 개수 100

출력 조건

등록된 날짜 역순으로 정렬된 지정된 개수의 튜플

l   COMMENT_NO

l   COMMENT_TEXT

l   COMMENT_STATUS

l   WRITER_ID

l   WRITER_NICKNAME

l   POSTED_TIME

l   RECOMMENDED_COUNTER

데이터베이스 변경 조건

없음

 

n  Select_Before_And_After_Article_Info

‘Select_Comment_List’ 트랜잭션은 게시물 읽기서비스 액션에서 사용되며 NBD_ARTICLE_INFO 테이블의 레코드들을. 2개까지 조회한다.

입력 조건

Select_Article_Info_And_Update_Read_Counter 게시물 번호

l   BOARD_ID (Select_Article_Info_And_Update_Read_Counter 출력값)

l   ARTICLE_NO (Select_Article_Info_And_Update_Read_Counter 출력값)

l   REPLY_NO_SEQ (Select_Article_Info_And_Update_Read_Counter 출력값)

l   REPLY_DEPTH_NO (Select_Article_Info_And_Update_Read_Counter 출력값)

l   ARTICLE_CATEGORY (Select_Article_Info_And_Update_Read_Counter 출력값)

l   ARTICLE_STATUS=’Normal’

l   IS_PRIVATE=’N’

출력 조건

이전 게시물 정보와 다음 게시물 정보를 순서대로 나타내는 개의 튜플. 이전 게시물이 없거나 다음 게시물이 없는 경우는 하나의 튜플

l   ARTICLE_ID

l   ARTICLE_NO

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   ARTICLE_STATUS

l   WRITER_ID

l   WRITER_NICKNAME

l   POSTED_TIME

l   HAS_ATTACHMENTS

l   IS_SCRAPED

l   IS_POPULAR

l   READ_COUNTER

l   RECOMMENDED_COUNTER

l   COMMENT_COUNTER

l   SCRAP_COUNTER

데이터베이스 변경 조건

없음

 

n  Select_Reply_Articles_Info

‘Select_Reply_Articles_Info’ 트랜잭션은 게시물 읽기서비스 액션에서 사용되며, Select_Article_Info_And_Content 트랜잭션에서 선택된 게시글에 대한 모든 답글 리스트를 얻는다. (ARTICLE_NO 선택된 게시물과 같고, REPLY_NO_SEQ 선택된 게시물의 REPLY_NO_SEQ 시작되는 스트링이며, REPLY_DEPTH_NO 선택된 게시물보다 크다.)

입력 조건

Select_Article_Info_And_Update_Read_Counter 게시물 식별자

l   BOARD_ID (Select_Article_Info_And_Update_Read_Counter 출력값)

l   ARTICLE_NO (Select_Article_Info_And_Update_Read_Counter 출력값)

l   REPLY_NO_SEQ (Select_Article_Info_And_Update_Read_Counter 출력값)

l   REPLY_DEPTH_NO (Select_Article_Info_And_Update_Read_Counter 출력값)

l   ARTICLE_CATEGORY (Select_Article_Info_And_Update_Read_Counter 출력값)

l   ARTICLE_STATUS=’Normal’

l   IS_PRIVATE=’N’

출력 조건

대상 게시물에 대한 모든 답글 게시물의 정보를 등록 시간의 역순으로 정렬한 튜플들

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   ARTICLE_STATUS

l   WRITER_ID

l   WRITER_NICKNAME

l   POSTED_TIME

l   HAS_ATTACHMENTS

l   IS_SCRAPED

l   IS_POPULAR

l   READ_COUNTER

l   RECOMMENDED_COUNTER

l   COMMENT_COUNTER

l   SCRAP_COUNTER

데이터베이스 변경 조건

없음

 

n  Select_Count_Board

‘Select_Count_Board’ 트랜잭션은 리스트 보기서비스 액션에서 사용된다. NBD_ARTICLE_INFO 테이블에서 특정 게시판의 게시물 수를 조회한다.

입력 조건

NBD_BOARD_INFO 등록된 게시판 식별자

l   BOARD_ID

출력 조건

게시판에 등록된 게시물

l   COUNT()

데이터베이스 변경 조건

없음

 

n  Select_List_Page_By_Posted_Time

‘Select_List_Page_By_Posted_Time’ 트랜잭션은 리스트 보기서비스 액션에서 사용된다. NBD_ARTICLE_INFO 테이블에서 페이지 리스트 개수만큼의 레코드들을 선택 선택하며 등록 시간 역순으로 정렬된 결과를 얻는다. (ARTICLE_NO 답글이 아닌 게시물에 대해 등록 시간 순으로 부여된다.)

입력 조건

게시물 리스트를 얻을 게시판 식별자와 카테고리. 리스트 페이지의 게시물 시작 순서 번호와 페이지 게시물 리스트 개수

l   BOARD_ID

l   ARTICLE_CATEGORY (카테고리가 없는 경우는 입력에서 빠짐)

l   ARTICLE_STATUS = ‘Normal’

l   IS_PRIVATE = ‘N’

l   페이지 시작 게시물 순서 번호 (전체 게시물 개수 보다는 작은 )

l   페이지 게시물 리스트 개수: 15 혹은 20 혹은 50 (3.3.2. Showing article list (pagination) – ordering by article timestamp 참조)

출력 조건

선택된 게시판의 게시물 리스트 중에 지정된 페이지에 포함되는 게시물들의 정보를 나타내는 튜플들. Showing article list (pagination) – ordering by article timestamp 정의된 조건으로 정렬됨

l   게시물 번호 (페이지 시작 게시물 순서 번호에서 페이지 게시물 순서 번호)

l   ARTICLE_ID

l   ARTICLE_NO

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

l   POSTED_TIME

l   HAS_ATTACHMENTS

l   IS_SCRAPED

l   IS_POPULAR

l   READ_COUNTER

l   RECOMMENDED_COUNTER

l   COMMENT_COUNTER

l   SCRAP_COUNTER

데이터베이스 변경 조건

없음

 

n  Select_List_Page_By_Read_Counter_Descending

‘Select_List_Page_By_Read_Counter_Descending’ 트랜잭션은 리스트 보기서비스 액션에서 사용된다. NBD_ARTICLE_INFO 테이블에서 페이지 리스트 개수만큼의 레코드들을 선택하며 조회수 역순으로 정렬된 결과를 얻는다.

입력 조건

게시물 리스트를 얻을 게시판 식별자와 카테고리. 리스트 페이지의 게시물 시작 순서 번호와 페이지 게시물 리스트 개수.

l   BOARD_ID

l   ARTICLE_CATEGORY (카테고리가 없는 경우는 입력에서 빠짐)

l   ARTICLE_STATUS = ‘Normal’

l   IS_PRIVATE = ‘N’

l   페이지 시작 게시물 순서 번호 (전체 게시물 개수 보다는 작은 )

l   페이지 게시물 리스트 개수: 15 혹은 20 혹은 50

출력 조건

선택된 게시판의 게시물 리스트 중에 지정된 페이지에 포함되는 게시물들의 정보를 나타내는 튜플들. READ_COUNTER 역순으로 정렬됨

l   게시물 번호 (페이지 시작 게시물 순서 번호에서 페이지 게시물 순서 번호)

l   ARTICLE_ID

l   ARTICLE_NO

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

l   POSTED_TIME

l   HAS_ATTACHMENTS

l   IS_SCRAPED

l   IS_POPULAR

l   READ_COUNTER

l   RECOMMENDED_COUNTER

l   COMMENT_COUNTER

l   SCRAP_COUNTER

데이터베이스 변경 조건

없음

 

n  Select_List_Page_By_Read_Counter_Ascending

‘Select_List_Page_By_Read_Counter_Ascending’ 트랜잭션은 리스트 보기서비스 액션에서 사용된다. NBD_ARTICLE_INFO 테이블에서 페이지 리스트 개수만큼의 레코드들을 선택하며 조회수 순으로 정렬된 결과를 얻는다.

입력 조건

게시물 리스트를 얻을 게시판 식별자와 카테고리. 리스트 페이지의 게시물 시작 순서 번호와 페이지 게시물 리스트 개수.

l   BOARD_ID

l   ARTICLE_CATEGORY (카테고리가 없는 경우는 입력에서 빠짐)

l   ARTICLE_STATUS = ‘Normal’

l   IS_PRIVATE = ‘N’

l   페이지 시작 게시물 순서 번호 (전체 게시물 개수 보다는 작은 )

l   페이지 게시물 리스트 개수: 15 혹은 20 혹은 50

출력 조건

선택된 게시판의 게시물 리스트 중에 지정된 페이지에 포함되는 게시물들의 정보를 나타내는 튜플들. READ_COUNTER 순으로 정렬됨

l   게시물 번호 (페이지 시작 게시물 순서 번호에서 페이지 게시물 순서 번호)

l   ARTICLE_ID

l   ARTICLE_NO

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

l   POSTED_TIME

l   HAS_ATTACHMENTS

l   IS_SCRAPED

l   IS_POPULAR

l   READ_COUNTER

l   RECOMMENDED_COUNTER

l   COMMENT_COUNTER

l   SCRAP_COUNTER

데이터베이스 변경 조건

없음

 

n  Select_List_Page_By_Recommended_Counter_Descending

‘Select_List_Page_By_Recommended_Counter_Descending’ 트랜잭션은 리스트 보기서비스 액션에서 사용된다. NBD_ARTICLE_INFO 테이블에서 페이지 리스트 개수만큼의 레코드들을 선택하며 추천수 역순으로 정렬된 결과를 얻는다.

입력 조건

게시물 리스트를 얻을 게시판 식별자와 카테고리. 리스트 페이지의 게시물 시작 순서 번호와 페이지 게시물 리스트 개수.

l   BOARD_ID

l   ARTICLE_CATEGORY (카테고리가 없는 경우는 입력에서 빠짐)

l   ARTICLE_STATUS = ‘Normal’

l   IS_PRIVATE = ‘N’

l   페이지 시작 게시물 순서 번호 (전체 게시물 개수 보다는 작은 )

l   페이지 게시물 리스트 개수: 15 혹은 20 혹은 50

출력 조건

선택된 게시판의 게시물 리스트 중에 지정된 페이지에 포함되는 게시물들의 정보를 나타내는 튜플들. RECOMMENDED_COUNTER 역순으로 정렬됨

l   게시물 번호 (페이지 시작 게시물 순서 번호에서 페이지 게시물 순서 번호)

l   ARTICLE_ID

l   ARTICLE_NO

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

l   POSTED_TIME

l   HAS_ATTACHMENTS

l   IS_SCRAPED

l   IS_POPULAR

l   READ_COUNTER

l   RECOMMENDED_COUNTER

l   COMMENT_COUNTER

l   SCRAP_COUNTER

데이터베이스 변경 조건

없음

 

n  Select_List_Page_By_Recommended_Counter_Ascending

‘Select_List_Page_By_Recommended_Counter_Ascending’ 트랜잭션은 리스트 보기서비스 액션에서 사용된다. NBD_ARTICLE_INFO 테이블에서 페이지 리스트 개수만큼의 레코드들을 선택하며 추천수 순으로 정렬된 결과를 얻는다.

입력 조건

게시물 리스트를 얻을 게시판 식별자와 카테고리. 리스트 페이지의 게시물 시작 순서 번호와 페이지 게시물 리스트 개수.

l   BOARD_ID

l   ARTICLE_CATEGORY (카테고리가 없는 경우는 입력에서 빠짐)

l   ARTICLE_STATUS = ‘Normal’

l   IS_PRIVATE = ‘N’

l   페이지 시작 게시물 순서 번호 (전체 게시물 개수 보다는 작은 )

l   페이지 게시물 리스트 개수: 15 혹은 20 혹은 50

출력 조건

선택된 게시판의 게시물 리스트 중에 지정된 페이지에 포함되는 게시물들의 정보를 나타내는 튜플들. RECOMMENDED_COUNTER 순으로 정렬됨

l   게시물 번호 (페이지 시작 게시물 순서 번호에서 페이지 게시물 순서 번호)

l   ARTICLE_ID

l   ARTICLE_NO

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

l   POSTED_TIME

l   HAS_ATTACHMENTS

l   IS_SCRAPED

l   IS_POPULAR

l   READ_COUNTER

l   RECOMMENDED_COUNTER

l   COMMENT_COUNTER

l   SCRAP_COUNTER

데이터베이스 변경 조건

없음

 

n  Get_Article_ID

‘Get_Article_ID’ 트랜잭션은 게시물 쓰기서비스 액션에서 사용된다. NBD_ARTICLE_INFO 새로운 레코드를 추가하기 위해 필요한 ARTICLE_ID 데이터베이스 시스템에서 얻는다.

입력 조건

유일한 ARTICLE_ID 얻기 위해 데이터베이스 시스템에 필요한 정보

출력 조건

데이터베이스 내에서 유일한 ARTICLE_ID

l   ARTICLE_ID

데이터베이스 변경 조건

유일한 ARTICLE_ID 얻기 위해 데이터베이스 시스템에 필요한 내용

 

n  Insert_Article_Info_And_Content

‘Insert_Article_Info_And_Content’ 트랜잭션은 게시물 쓰기서비스 액션에서 사용되며, Get_Article_ID 트랜잭션에서 얻은 ARTICLE_ID 사용하여 NBD_ARTICLE_INFO 테이블과 NBD_CONTENT 테이블에 새로운 레코드를 추가한다.

입력 조건

Get_Article_ID ARTICLE_ID. NBD_ARTICLE_INFO 테이블과 NBD_CONTENT 테이블의 레코드 가운데 사용자와 서비스 시스템으로부터 제공되는 데이터 이외에는 데이터베이스 시스템에서 제공됨.

l   BOARD_ID

l   ARTICLE_ID

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   ARTICLE_STATUS = ‘Normal’

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

l   ARTICLE_PASSWORD

l   HAS_ATTACHMENTS

l   IS_PRIVATE

l   IS_SEARCHABLE

l   CONTENT

출력 조건

없음

데이터베이스 변경 조건

l   NBD_ARTICLE_INFO 테이블 레코드

l   NBD_CONTENT 테이블 레코드

 

n  Insert_Reply_Article_Info_And_Content

‘Insert_Reply_Article_Info_And_Content’ 트랜잭션은 게시물 쓰기서비스 액션에서 사용되며, 지정된 게시물의 답글을 등록한다. Get_Article_ID 트랜잭션에서 얻은 ARTICLE_ID 사용하여 NBD_ARTICLE_INFO 테이블과 NBD_CONTENT 테이블에 REPLY_NO_SEQ NULL 아닌 새로운 레코드를 추가한다.

입력 조건

Get_Article_ID ARTICLE_ID. NBD_ARTICLE_INFO 테이블과 NBD_CONTENT 테이블의 레코드 가운데 사용자와 서비스 시스템으로부터 제공되는 데이터 이외에는 데이터베이스 시스템에서 제공됨.

l   BOARD_ID

l   ARTICLE_ID

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   ARTICLE_STATUS = ‘Normal’

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

l   ARTICLE_PASSWORD

l   HAS_ATTACHMENTS

l   IS_PRIVATE

l   IS_SEARCHABLE

l   CONTENT

출력 조건

없음

데이터베이스 변경 조건

l   NBD_ARTICLE_INFO 테이블 레코드

l   NBD_CONTENT 테이블 레코드

 

n  Insert_Attachement

‘Insert_Attachement’ 트랜잭션은 게시물 쓰기서비스 액션에서 Insert_Article_Info_And_Content / Insert_Reply_Article_Info_And_Conetnt 트랜잭션에서 HAS_ATTACHEMENT ‘Y’ 경우에 사용된다. Get_Article_ID 트랜잭션에서 얻어서 Insert_Article_Info_And_Content / Insert_Reply_Article_Info_And_ Conetnt에서 사용한 ARTICLE_ID 사용하여 NBD_ATTACHMENT 테이블에 새로운 레코드를 N 추가한다.

입력 조건

Get_Article_ID ARTICLE_ID. NBD_ATTACHEMENT 테이블의 N개의 레코드. 사용자와 서비스 시스템으로부터 제공되는 데이터 이외에는 데이터베이스 시스템에서 제공됨

l   BOARD_ID

l   ARTICLE_ID

N개의 다음 값들

l   ATTACHEMENT_NAME

l   ATTACHEMENT_TYPE

l   ATTACHEMENT

l   ATTACHEMENT_SIZE

출력 조건

없음

데이터베이스 변경 조건

l   NBD_ATTACHEMENT 테이블 레코드 N

 

n  Delete_Article_Info_And_Content

‘Delete_Article_Info_And_Content’ 트랜잭션은 게시물 삭제서비스 액션에서 사용된다. ‘게시물 삭제서비스 액션이 게시물 읽기 선택된 게시물을 삭제하는 작업이므로, Select_Article_Info_And_ Content 트랜잭션에서 선택된 BOARD_ID ARTICLE_ID 해당하는 NBD_ARTICLE_INFO NBD_CONTENT 테이블의 레코드를 삭제한다.

입력 조건

l   BOARD_ID

l   ARTICLE_ID

출력 조건

없음

데이터베이스 변경 조건

l   NBD_ARTICLE_INFO 테이블 레코드

l   NBD_CONTENT 테이블 레코드

 

n  Insert_Comment

‘Insert_Comment’ 트랜잭션은 덧글 쓰기서비스 액션에서 사용된다. ‘덧글 쓰기서비스 액션이 게시물 읽기 선택된 게시물에 덧글을 추가하는 것이므로, Select_Article_Info_And_Content 트랜잭션에서 선택된 BOARD_ID ARTICLE_ID 사용하여 NBD_COMMENT 테이블에 새로운 레코드를 N 추가한다.

입력 조건

사용자와 서비스 시스템으로부터 제공되는 데이터 이외에는 데이터베이스 시스템에서 제공됨

l   BOARD_ID

l   ARTICLE_ID

N개의 다음 값들

l   COMMENT_TEXT

l   COMMENT_STATUS = ‘Normal’

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

출력 조건

없음

데이터베이스 변경 조건

l   NBD_COMMENT 테이블 레코드 N

 

n  Delete_Comment

‘Delete_Comment’ 트랜잭션은 덧글 삭제서비스 액션에서 사용된다. 입력된 WRITER_ID NBD_COMMENT 테이블 레코드의 WRITER_ID 동일한 경우만 레코드가 삭제된다.

입력 조건

l   BOARD_ID

l   ARTICLE_ID

l   WRITER_ID

출력 조건

없음

데이터베이스 변경 조건

l   NBD_COMMENT 테이블 레코드

 

n  Update_Recommended_Counter

‘Update_Recommended_Counter’ 트랜잭션은 추천하기서비스 액션에서 사용된다. 입력된 WRITER_ID NBD_ARTICLE_INFO 테이블 레코드의 WRITER_ID 다른 경우만 RECOMMENDED_COUNTER 증가한다.

입력 조건

l   ARTICLE_ID

l   WRITER_ID

출력 조건

없음

데이터베이스 변경 조건

선택된 게시물의 추천수 증가

l   RECOMMENDED_COUNTER = RECOMMENDED_COUNTER + 1

 

n  Update_Comment_Recommended_Counter

‘Update_Comment_Recommended_Counter’ 트랜잭션은 추천하기서비스 액션에서 사용된다. 입력된 WRITER_ID NBD_COMMENT 테이블 레코드의 WRITER_ID 다른 경우만 RECOMMENDED_COUNTER 증가한다.

입력 조건

l   ARTICLE_ID

l   WRITER_ID

출력 조건

없음

데이터베이스 변경 조건

선택된 덧글의 추천수 증가

l   RECOMMENDED_COUNTER = RECOMMENDED_COUNTER + 1

 

n  Update_Scrap_Counter

‘Update_Scrap_Counter’ 트랜잭션은 스크랩 하기서비스 액션에서 사용된다

입력 조건

l   BOARD_ID

l   ARTICLE_ID

출력 조건

없음

데이터베이스 변경 조건

선택된 게시물의 추천수 증가

l   SCRAP_COUNTER = SCRAP_COUNTER + 1

 

n  Select_Popular_Articles

‘Select_Popular_Article’ 트랜잭션은 인기글 뽑기서비스 액션에서 사용된다. NBD_ARTICLE_INFO 테이블에서 IS_POPULAR = ‘Y’ 게시물 정보들을 선택한다.

입력 조건

l   BOARD_ID

l   선택할 인기글 (10 혹은 20)

출력 조건

Update_Popular_Articles에서 사용된 인기글 수개의 튜플들

l   ARTICLE_ID

l   ARTICLE_NO

l   REPLY_NO_SEQ

l   REPLY_DEPTH

l   ARTICLE_TITLE

l   PREVIEW_TEXT

l   THUMBNAIL_IMAGE

l   ARTICLE_TYPE

l   ARTICLE_CATEGORY

l   WRITER_ID

l   WRITER_NICKNAME

l   WRITER_INFO

l   POSTED_TIME

l   HAS_ATTACHMENTS

l   IS_SCRAPED

l   IS_POPULAR

l   READ_COUNTER

l   RECOMMENDED_COUNTER

l   COMMENT_COUNTER

l   SCRAP_COUNTER

데이터베이스 변경 조건

없음

 

n  Update_Popular_Articles

‘Update_Popular_Articles’ 트랜잭션은 인기글 뽑기서비스 액션에서 사용된다. NBD_ARTICLE_INFO 테이블에서 IS_POPULAR = ‘Y’ 게시물 정보들을 ‘N’으로 바꾸고, 추천수가 10 넘은 게시물들 추선수가 많은 순서로 지정된 개수의 게시물들의 IS_POPULAR ‘Y’ 바꾼다.

입력 조건

l   BOARD_ID

l   선택할 인기글 (10 혹은 20)

출력 조건

없음

데이터베이스 변경 조건

l   IS_POPULAR = ‘Y’였던 레코드들은 IS_POPULAR=’N’

l   레코드들은 IS_POPULAR = ‘Y’

 

3.2.3.     Workload Type – Hotspot read

Hotspot read 워크로드는 지정된 개수의 특정 게시글들을 주어진 시간 동안 게시글 읽기 리스트 보기등록 시간 서비스 액션이 일정 비율로 반복되는 테스트이다. 워크로드는 전체 트래픽의 대부분이 특정 인기 게시물에 집중되는 경우를 모델링 것이다.

 

n  Transaction Mix

Mix 1

BOARD_ID ARTICLE_ID 가지고 다음 트랜잭션들을 순서대로 실행한다.

l   Select_Article_Info_And_Update_Read_Counter

l   Select_Content

l   Select_Attachement_List

l   Select_Comment_List

l   Select_Before_And_After_Article_Info

l   Select_Reply_Articles_Info

l   대기 시간 5msec

Mix 2

BOARD_ID ARTICLE_ID 가지고 다음 트랜잭션들을 순서대로 실행한다.

l   Select_Article_Info_And_Update_Read_Counter

l   Select_Content

l   Select_Attachement_List

l   Select_Comment_List

l   Select_Before_And_After_Article_Info

l   Select_Reply_Articles_Info

l   Select_List_Page_By_Posted_Time (이전 트랜잭션에서 선택된 게시물이 포함되는 페이지를 출력)

l   대기 시간 5msec

Mix 3

BOARD_ID 페이지 번호 1 가지고 다음 트랜잭션을 실행한다.

l   Select_List_Page_By_Posted_Time

l   대기 시간 50msec

 

n  Workload Parameters

l   전체 수행 시간: 10 / 30 / 1시간

l   데이터베이스 스케일: 최소 1단계 구성 이상

l   트랜잭션 믹스별 동시 수행 개수

l   워크로드 전체에서 사용되는 핫스팟 게시물의 (Mix 1 Mix 2에서 구별되는 게시물의 개수): 3 / 6 / 9 / 12

 

n  Requirements

l   데이터베이스는 2.6.2 Scaling Requirements에서 정의한 최소 데이터베이스 구성 이상이어야 한다.

l   트랜잭션 믹스 1, 트랜잭션 믹스 2, 트랜잭션 믹스 3 7:2:1 비율로 정해진 시간 동안 반복 실행한다.

l   핫스팟 게시물들은 중간 규모 게시판들과 대규모 게시판들에서 균등하게 선택된다.

l   모든 핫스팟 게시물들은 서로 인접한 게시물이 아니며, 번째와 마지막 게시물이 아니다. (인접글이 있다.)

l   모든 핫스팟 게시물은 3 이상의 첨부와 50 이상의 덧글, 그리고 1 이상의 답글을 가지고 있어야 한다.

l   핫스팟 게시물들은 트랜잭션 믹스 1 믹스 2 순차적으로 배분된다. (예를 들어, 핫스팟이 6개이고 믹스 1 7 수행되고 믹스 2 2 수행된다면, 번째 믹스 1 번째 게시물, 번째 믹스 1 번째 게시물, … 번째 믹스 2 번째 게시물, 번째 믹스 2 번째 게시물을 조회하게 된다.)

l   트랜잭션 믹스 3 핫스팟 게시물이 속한 게시판 중에 하나를 선택하여 수행한다. 페이지 게시물 리스트 개수는 20으로 한다.

 

3.2.4.     Database Scaling and Population

절에서는 NBD Benchmark에서 사용되는 데이터베이스의 구성 단위와 크기를 증가시키는 방법에 대해 정의한다.

 

n  Board Data Set

NBD Benchmark 데이터베이스에 저장되는 게시판 데이터에는 다음과 같은 세가지 유형이 있다.

Small-scaled Board Data Set

l   소규모의 게시판으로 게시물의 수가 1,000 ± 10% 게시판 데이터 집합이다. 일반적으로 공지사항유형의 게시판을 의미한다.

l   게시판에 카테고리가 지정되지 않는다.

l   게시물의 유형은 Text 한정되며 90% 게시물의 크기가 1K 넘지 않는다.

l   모든 게시물의 작성자는 1명이다.

l   첨부를 가지는 게시물은 없다.

l   게시판에는 답글 게시물은 없다.

Medium-scaled Board Data Set

l   중간 규모의 게시판으로 게시물의 수가 100,000 ± 10% 게시판 데이터 집합이다.

l   게시판에 3 이상 10 미만의 카테고리가 지정된다.

l   게시물의 10% 카테고리가 지정되지 않는다.

l   게시물의 유형은 제한이 없으며 게시물의 크기는 50% 1K 이하, 30% 1K~10K, 나머지 20% 10K~64K 차지한다.

l   1명의 작성자가 평균 10개의 글을 작성한다.

l   게시물의 50% 첨부를 평균 5개를 가진다.

l   게시물의 10% 덧글을 평균 100, 50% 평균 10, 나머지 40% 덧글이 없다.

l   게시물의 10% 답글이다.

Large-scaled Board Data Set

l   대규모의 게시판으로 게시물의 수가 10,000,000 ± 10% 게시판 데이터 집합이다.

l   다른 조건은 중간 규모 게시판과 동일하다.

 

n  Scaling Requirements

NBD Benchmark 데이터베이스의 데이터는 다음에 정의된 방법에 따라 생성되며 증가되어야 한다. 게시판 데이터 집합은 2.6.1 Board Data Set 정의된 바를 따른다.

l   최소 (1단계) 데이터베이스 구성: 소규모 게시판 1 + 중간 규모 게시판 1

l   5단계까지의 데이터베이스 증가 단위: 소규모 게시판 1 + 중간 규모 게시판 5

l   이후 데이터베이스 증가 단위: 소규모 게시판 1 + 중간 규모 게시판 5 + 대규모 게시판 2

l   결과 보고서에는 테스트에 사용된 데이터베이스의 구성을 명시해야 한다.

 

NBD Benchmark 게시판 별로 워크로드의 한계가 정해지므로 테스트 데이터베이스 게시판의 크기와 수가 증가함에 따라 측정 대상 데이터베이스 시스템의 처리량(throughput) 비례적으로 증가하게 된다. (3.10 Workload Scaling 참조)

 

n  Database Population

NBD Benchmark에서는 테스트 중에 게시판 증가나 감소는 허용되지 않는다. 반면에 테스트 수행 중에 데이터베이스의 게시판 데이터는 증가 감소될 있다. 테스트 실행 준비로 데이터베이스의 상태를 초기 상태(initial population) 재구성하는 것이 허용되지만 반드시 그럴 필요는 없다. 워크로드 정의만 위배되지 않는다면 이전 테스트에서 변화된 데이터베이스 상태에서 다음 테스트를 수행해도 상관없다. 데이터 증가 감소에는 다음 사항이 지켜져야 한다.

l   소규모 게시판은 테스트 데이터의 변화가 없다.

l   중간 규모 게시판은 테스트 게시물 수가 최대 10% 증가할 있으며, 최대 1% 감소할 있다.

l   대규모 게시판은 테스트 게시물 수가 최대 20% 증가할 있으며, 최대 1% 감소할 있다.

l   데이터베이스 전체는 최대 20% 증가할 있으며, 최대 1% 감소할 있다.

 

3.2.5.     Throughput

n  Total number of service requests processed

처리된 전체 서비스 요청 일정 기간 동안 어플리케이션 서버에서 정상 처리된 브라우저(사용자) 서비스 액션 요청 수를 의미한다.

벤치마크 결과로는 테스트 드라이버가, 수행하는 워크로드에서 steady state period 동안 성공한 서비스 요청의 수를 측정한다.

 

n  Total number of service requests failed

실패한 서비스 요청 일정 기간 동안 어플리케이션 서버에서 실패 처리된 브라우저(사용자) 서비스 액션 요청 수를 의미한다.

벤치마크 결과로는 테스트 드라이버가, 수행하는 워크로드에서 steady state period 동안 실패한 서비스 요청의 수를 측정한다. 따라서, 테스트 드라이버가 데이터베이스 시스템에 요청한 전체 트랜잭션의 수는 처리된 전체 서비스 요청 실패한 서비스 요청 합과 같다.

 

n  Service throughput – PV (Page View)

인터넷 게시판 서비스에서 서비스 요청의 결과로는 페이지가 출력된다. ‘서비스 처리량 페이지 일정 기간 동안 브라우저(사용자) 요청에 따라 어플리케이션을 통해 제공된 페이지의 수와 같다.

벤치마크 결과로는 테스트 드라이버가, 수행하는 워크로드에서 steady state period 동안 초당 성공 처리된 서비스 요청의 수를 측정한다.

 

n  TPS (Transaction Per Second)

초당 트랜잭션 처리 데이터베이스 시스템이 1 동안 오류 없이 처리한 트랜잭션의 수이다. 트랜잭션의 종류와는 상관없다.

벤치마크 결과로는 테스트 드라이버가, 수행하는 워크로드에서 Transaction Definitions 정의된 트랜잭션이 초당 처리되는 수를 측정한다.

 

n  QPS (Query Per Second)

초당 쿼리 처리 데이터베이스 시스템이 1 동안 expected response time 만족하며 오류 없이 처리한 SQL 쿼리의 수이다. SQL 문의 종류와는 상관없다. (일반적으로 하나의 트랜잭션은 하나 혹은 이상의 쿼리로 이루어져 있으므로 QPS TPS 보다 상회하는 결과값이 나온다.)

벤치마크 결과로는 테스트 드라이버가, 수행하는 워크로드에서 초당 처리된 SQL문의 수를 측정한다.

 

출처 : 큐브리드

'DataBase > MySQL' 카테고리의 다른 글

mysql 버젼 확인  (0) 2010.04.24
innodb 와 myisam 의 차이점과 성능비교  (0) 2010.04.24
블로그 테이블 구조  (0) 2010.04.24
[MYSQL] 우선순위, LOW_PRIORITY, DELAYED, ...  (0) 2010.04.24
[본문스크랩] Optimize Table  (0) 2010.04.24