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
운영게시판
최근게시물
PostgreSQL Q&A 7051 게시물 읽기
No. 7051
[질문] 배열 타입의 신뢰성에 대해서
작성자
박태웅
작성일
2007-02-15 18:03
조회수
4,503

안녕하세요.

postgreSQL 의 배열 타입에 관련된 질문이 있어서 글을 올립니다.

현재 하고자 하는 것이 무엇인지부터 말씀드리겠습니다.

제품의 상세 타입에 대한 텍스트 키를 배열을 사용해서 처리하고 싶습니다.

예를 들어서,


CREATE TABLE product_type_tb
(
    product_pk          integer,       -- 제품 아이디
    product_type1      text[10],     -- 제품 타입1 
    product_type2      text[10],     -- 제품 타입2
); 


위의 테이블에, 

6fd23231-2f7b-4f52-a62b-7bf004c8bb3b

와 같은 키를 배열 원소로 사용하고 싶습니다.

아마도 레코드 수가 만개 정도는 될듯 합니다만, 배열 원소의 선택적인 수정이나 삭제 등의 작업시에

속도라든지, 자료구조상의 문제라든지... 문제가 없을지 걱정이 됩니다. 필드를 배열로 사용해 본 경험이 없네요,

혹시 배열 데이터타입을 상용 서비스에 사용해 보신 경험이 있으시면, 조언을 부탁드립니다.

읽어주셔서 감사합니다.

좋은 하루 되세요.

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

text 배열은 인덱스를 쓸 수 없습니다. 


만일 텍스트 배열의 요소로 쓰이는 그 값들이 일정 패턴이 있다면, 


그 텍스트 요소와 정수로 매칭하는 테이블 하나를 만들고, 정수형 배열로 처리를 해야

정수형 배열 인덱스를 쓸 수 있습니다. 


구체적 자료 구조가 어떤 모습으로 나올지는 모르겠지만, 

텍스트 배열은 그 해당 로우의 부가 정보로 사용된다면 모를까,

텍스트 배열을 기준으로 어떤 자료를 처리하겠다는 무리입니다. 


배열 자료형은 생각을 잘 해야합니다. 

일반적인 RDBMS 자료설계와 많이 틀리거든요.

잘 설계한다면, 아주 유용하게 쓰일터이고, 

잘 못 쓴다면, 자료가 많이 쌓였을 때, 고생을 많이 합니다. :)

김상기(ioseph)님이 2007-02-15 18:08에 작성한 댓글입니다.

상기님 빠른 답변 감사합니다.


6fd23231-2f7b-4f52-a62b-7bf004c8bb3b


와 같은 키는 전부 유니크로서 랜덤합니다.


그렇다면,


따로 각각의 유니크한 제품 텍스트 키를 가지는 테이블을 작성하고, 그 테이블의 프라이머리키를


배열로 가지고 있으면 되겠군요.


말씀 감사합니다. 너무나 많은 도움이 되었습니다.


(_ _)

박태웅님이 2007-02-15 18:15에 작성한 댓글입니다. Edit

제목만 보고 들어왔는데...

흠.. 일단 저의 경우 유동성이 강한 성격은 대부분 배열을 사용하고 있습니다.


그리고..


상기님의 말씀에 대체적으로 동의하는 편입니다.



허나!!


아직 테스트는 안 해봤습니다만...


8.2 버젼에서는 배열타입에 '@>' 와 '<@' 연산자를 지원합니다.


이 연산자를 지원해준다는 의미는 좀 다르게 해석하면

인덱스를 사용할수 있다... 라는 의미로 보여집니다.


즉.. 텍스트 배열타입에도 인덱스를 사용할수 있다는 것이죠..

물론...

..... where arr[1] like 'word%' 이런건 안 되겠죠?

지원 연산자를 사용하여 (arr[1] = 'word' 같은 형태로) 검색해 볼 수 있습니다.



배열타입 그러니깐 메뉴얼 보다...

좀 재미있는 것을 발견했습니다.


8.2 에 새롭게 생긴 배열 타입 으로 hstore 라는 것이 있더군요 (SOURCE_TREE/contrib/hstore)


이놈이 참 재밌게 생겼네요..

실용성은 어떨지는 모르겠으나.. 저의 경우 배텰타입 을 조종 사용하는 터라..

hstore 가 유용할것도 같아 보였습니다. (사람마다 다를듯)


이놈이 뭐하는 놈인고 하면...


php 를 예를 들겠습니다.


일반 배열타입은 

$arr[] = 'a';

$arr[] = 'b';

$arr[] = 'c';


print $arr[2]; 이런 식으로 접근합니다.


헌데 hstore 를 사용하면


$arr['a'] = 'a_string';

$arr['b'] = 'b_string';

..


print $arr['c'];


이런 식으로 사용하는 놈입니다.


키만 뽑아올수 있고, 값만 뽑아올수도 있습니다.

each() 를 사용하면 key, value 를 뽑아올수도 있습니다.


아울러서 gist 인덱스를 사용하여 '@>', '<@' 연산자를 사용할 수도 있습니다.


자세한 내용은 hstore 문서를 보시고..



근데.. 이놈이 계속 유지되어 발전할것인지... 효용가치가 뜰어져  상위버젼(언제일지는 모르나) 에서 사라질지.. 를 몰라 바로 도입하기가 참....


암튼 응용하면 나름 유용하게 사용할 수 있는 타입 같아 보입니다.

tyro님이 2007-02-16 17:56에 작성한 댓글입니다. Edit

오 정말 좋은놈이군요! -.-

저도 배열을 많이 사용합니다 ㅋㅋ

신기배(소타)님이 2007-02-16 20:49에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7057뷰와 뷰의 조인...의 트리거 입니다. [4]
소심고양이
2007-02-23
4052
7055could not access status of transaction 1880546195 [3]
송효진
2007-02-22
4313
7052상기님 혹시 그 때의 그 분이신가요? [6]
tyro
2007-02-19
4456
7051[질문] 배열 타입의 신뢰성에 대해서 [4]
박태웅
2007-02-15
4503
7050[Help] 이 쿼리를 최적화 할 수 있는 방법이 없을까요? [1]
강상욱
2007-02-14
4343
7049몇일동안 고민중입니다 ㅠㅠpostgresSQL + Apache + PHP [2]
정희진
2007-02-14
4536
70487.1.1버전에서 유저들의 실행 쿼리 파악하는 법? [3]
dba
2007-02-14
4208
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다