database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38923 게시물 읽기
No. 38923
【DB설계】컬럼수가 130개정도 데이타 1만5000건 검색
작성자
열심히(129kkt)
작성일
2011-09-29 10:11ⓒ
2011-09-29 10:50ⓜ
조회수
5,612

안녕하세요. 바로 질문 들어 가겠습니다. 설명이 부족하지만 많은 조언 부탁드립니다.

정보 TABLE과 메타정보테이블이 있습니다.

■정보테이블과 메타정보테이블은 1:1관계에 있고, 데이타는 대략 1만 5000건 정도 입니다.

①정보테이블

     ⇒  컬럼수: 10개정도,  기능:검색의 메인이 되는 정보, 

②메타정보테이블

     ⇒  컬럼수:130개정도(대부분 varchar(256)),  기능:정보테이블의 부수적인 정보,  130개 컬럼중 검색대상이 되는 컬럼은 대략 10개정도(인덱스를 여러개 만들 필요가 있음)

■질문 사항

1.질문: 정보테이블과 메타정보테이블을 1개의 테이블로 설계해도 괞찮을까요? 검색 속도등에 문제 되지 않을까요?

2.질문: 메타정보 테이블의 인덱스가 여러개 일경우 문제 될일이 없을까요?

3.질문: 인덱스만 잘 타면 데이타량에 관계없이 빠른 검색이 가능 할까요?(데이타가 대략 몇건 정도에 퍼포먼스에 영향을 끼칠까요?)

4.질문: 위와 같이 설계된 테이블이 실무에 쓰이는 경우가 있는지요?

5.질문: 조언 부탁바랍니다.

【추가질문】 1님 @답변 감사드립니다. 어느정도 궁금증은 해결되었습니다. 

6질문: 위의 테이블에서 검색 빈도에 따라서 검색횟수를 기록하는 컬럼이 1개 존재 합니다.

        웹상에서 해당정보를 클릭했을경우, 검색횟수를 증가시키고, 검색 횟수 순위를 보여주는기능입니다만,

       이 컬럼은 정보테이블에 놓는 것이 좋을 까요? 아니면 검색빈도 관리 테이블을 따로 만드는 것이 좋을 까요?

7질문: DB설계자가 1컬럼에 복수의 정보를 가지기 위해 데이타 코드(외부키)를  #구분자를 두어 여러 정보를 가질 수 있게 설계 하려합니다,  데이타가 적은 관계로 문제 될 것이 없다고는 합니다만, 이런 경우 문제 될 것이 없는 지요? (예: 0001#0002#0003#0004)

 

이 글에 대한 댓글이 총 4건 있습니다.

제 생각만 적어볼게요.. 정답이 아닐수 있습니다.

1. 1:1 관계라면 굳이 테이블을 나눌필요가 없겠지만

정보테이블에 있는 자료만 사용되는 빈도가 높고 메타정보테이블에 있는 자료의 사용빈도가 낮다면 테이블 분리로 성능향상의 효과가 있어 보입니다.

(단 두 테이블을 항상 조인해야 하는 상황이라면 분리하는게 좋아보이진 않네요)

2. 인덱스가 여러개일경우 발생할수 있는 문제는 

     1) 테이블스페이스 공간을 많이 사용하게된다.

     2) INSERT 나 UPDATE DELETE 의 속도저하

     3) Analyze 나 리빌딩시 오래걸림

     4) 백업시간이 오래걸림   등이 생각나네요

3. 대용량데이터(억단위이상) 에서는 인덱스 이상을 고려해야겠지만 1만 5000건 정도의 데이터에서는 인덱스 이상을 고려해야 할 필요는 없어보입니다만, 0.001 초를 고려해야 하는 상황이라면 또 달라지겠죠..

4. 테이블을 분리하는경우나 써머리테이블(통계나 누적)을 사용하는 경우는 실무에서도 자주 사용됩니다.

5. 1만 5천건 정도의 데이터에 동시접속 10명(동시에 쿼리를 날리는 숫자니 작은 숫자가 아닙니다. 쿼리실행 시간이 0.01초 안에 끝날것이니..) 정도의 시스템이라고 한다면 인덱스만 제대로 탄다면 특별히 DB 설계에서 고려해야 할 필요는 없어보이며 테이블을 굳이 나누지 않아도 성능에는 별 영향이 없어보이네요

1님이 2011-09-29 10:24에 작성한 댓글입니다. Edit

1님@답변 감사드립니다. 추가 질문도 올렸으니 한번 봐주시면 정말 감사드리겠습니다.

 

열심히(129kkt)님이 2011-09-29 11:00에 작성한 댓글입니다.

 추가답변입니다.

6. 위에서 말씀드렸다시피 15천건은 데이터양이 무시해도 좋을만큼 작은양입니다.

   (뭐 서버가 8bit pc 는 아니겠죠...)

   뷰카운트는 일반적으로 본테이블에 컬럼만 추가합니다만. 다만 조회시점을 로그로 남기려면 별도의 테이블이 있어야 겠지요. 

7. 구분자를 두어 단일컬럼에 여러정보를 담는 부분은 전 별로 좋지않게 생각합니다.

    뭐 정규화 문제를 떠나서  App 단에서 해줘야 할 작업이 많이 생기지요..

    

1님이 2011-09-29 14:23에 작성한 댓글입니다. Edit

또다시  1님 답변 감사드립니다.

조회 시점을 로그로 남기는 것은 생각해 보질 못한 부분이네요. 반영해야겠습니다.

구분자를 코드를 분해해서 검색도 가능하게 하려 합니다만, 물론 App단에서 해야할 일이 많겠지만, 구분자를 쓰도록 해야겠습니다. 리더가 정규하하는 것을 왠지 귀찮아 하네요.

답변 정말 감사드립니다.

열심히(129kkt)님이 2011-09-29 15:24에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
38927아래질문의 추가 정보 입니다. [3]
김종열
2011-09-30
5077
38926쿼리 관련 질문 드립니다. [3]
김종열
2011-09-29
4543
38925IIS관리자에서 응용프로그램 풀 기본값 설정에서 32bit사용을 했을때 DB연결 방법 문의 [1]
김수진
2011-09-29
5359
38923【DB설계】컬럼수가 130개정도 데이타 1만5000건 검색 [4]
열심히
2011-09-29
5612
38922ora-600 관련 급 질문 [1]
손님
2011-09-28
7796
38921timestamp 시간계산 [2]
초보
2011-09-28
5583
38920[급질] 한 서버에 DB가 2개일경우 recover [4]
임서희
2011-09-28
5269
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다