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 4146 게시물 읽기
No. 4146
Re: R-tree와 B-tree의 차이점은 무엇인가요?
작성자
김상기(ioseph)
작성일
2002-04-16 00:59
조회수
2,504

b-tree 놈은 이진트리 형태로 이것 아니면, 저것으로 움직입니다. 그래서, 그 키와 완벽하게 일치해야합니다. (이렇게 보면, hash와 크게 다르지 않지요, 이놈이 hash와 크게 다른 것은 키의 접근 방식이 순차적입니다.)

 

즉, "10보다 큰놈 모두 뽑아라."

이렇게 했을 경우, 10을 찾고 그 왼쪽 트리의 모든 것을 그 다음부터 끝까지 아무 생각 없이 뽑아내면, 되는 식입니다.

 

하지만,

"10을 찾아라." 이런 식으로 1:1 형태의 검색만 사용된다면,(죽어도 끝까지 이런 검색만 사용된다면) b-tree보다는 hash 인덱싱이 훨씬 빠릅니다.

 

한변, r-tree 놈은 그 알고리즘은 공부안해서 모르겠지만,

배열의 중간놈도 인덱싱을 가능하게 해줍니다.

이말이 무슨 말인고 하면,

"{1,2,3,4}" 이런 자료가 있을때, "3"이 들어있는 배열 모두 찾아라. 이렇게 했을때, 인덱싱을 사용하게 하는 놈입니다. (어떻게해서 그렇게 되는지는 모르겠습니다. 공부해야지)

 

(물론 PostgreSQL에서 그냥 R-Tree 쓰겠다고 배열의 인덱싱이 가능한 것은 아닙니다. PostgreSQL에서의 배열 자료형에 대한 인덱싱은 따로 존재합니다. 이곳 투토리얼 참조)

 

그래서, r-tree 놈은 gis쪽으로 많이 사용된다네요. (제가 gis 쪽은 전혀 관심이 없어서) 또한 이놈의 확장형태로 gist 라는 인덱싱이 있는데, 이놈은 PostgreSQL에서 contrib 모듈형태로 제공합니다. 이놈이 바로 제가 쓰는 배열 관련 인덱싱, 날짜관련 인덱싱에서 사용됩니다.

 

-------

다음 text 자료형의 중간자 검색 ~* 놈이나, like에서의 '%검색어%' 이런 쿼리는 당연히 인덱싱이 불가능합니다. 이글 제일 처음에서 이야기한 btree 인덱싱을 사용하기 때문입니다.

 

제가 제일 관심 가지는 부분중에 하나인데,

이곳 게시판에서 full text 검색 관련 검색을 해보시면,

그에 대한 자세한 이야기가 있습니다.

아주 복잡한 문제인지라, 이곳에서는 언급하기가 힘드네요.

 

현재로써는 한국어 환경에 대한 full text 인덱싱은 PostgreSQL에서 제공하는 것을 아직 못봤습니다. (반드시 이루워내야할 숙원사업 -.-)

 

관심있으신 분의 적극참여를 ^.^

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

R-Tree 리버스 트리를 말하는게 아니었나요.. 인덱스가 만들어질때 B-Tree의 인덱스 삽입 작업이 작업량이 몰릴때 한 블럭에만 집중되어 경합이 이루어 지는 것을 막기 위해 역 인덱스, 즉 인덱스의 키값을 뒤집어서 인덱스 분산을 막기위해 사용하는 인덱스. 이때 B-Tree처럼 Range Scan에 들어가는 비용은 장난 아니겠죠... 아님 ... 말고..

김대성님이 2002-04-18 09:41에 작성한 댓글입니다.

..뒤집어서 인덱스 분산을 막기위해 사용하는 ..

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

인덱스 분산을 위해 로 정정...

~~~~~~~~~~~~

김대성님이 2002-04-18 09:43에 작성한 댓글입니다.

노파심에... 해쉬인덱싱을 설명해 주셨는데 나왔는데... 오라클 공부해 보신분은 아시겠지만 SGA의 캐쉬관리하는데 해쉬 인댁스로 메모리내의 위치를 관리한다고 하더군요..

 

PostgreSQL 메뉴얼을 보면 해쉬나 BTree나 거의 속도면에서 차이가 없는듯 하다 고 주저리주저리 써 있는 부분도 있습니다. PostgreSQL은 다 지원합니다.

김대성님이 2002-04-18 09:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4151상품사이즈 테이블 구현? [1]
김현
2002-04-17
1304
4149권한에 대한 질문입니다.
한용희
2002-04-16
1224
4145Table access 문제. [1]
김남수
2002-04-15
1297
4144R-tree와 B-tree의 차이점은 무엇인가요?
소타
2002-04-14
2930
4146┕>Re: R-tree와 B-tree의 차이점은 무엇인가요? [3]
김상기
2002-04-16 00:59:05
2504
4143쿼리 수행시간을 알아내고 싶은데...
이경직
2002-04-12
1367
4148┕>Re: 7.2.x 버전부터 지원합니다.
김상기
2002-04-16 01:17:11
1303
4150 ┕>Re: Re: 7.2 버전도 지원됩니다.
전병혁
2002-04-17 11:16:22
1313
4141php에서 postgresql을.... [3]
신성미
2002-04-12
1440
4140칼럼의 자료형 바꾸기
토지기
2002-04-11
1433
4142┕>Re: 칼럼의 자료형 바꾸기
주피터
2002-04-12 17:25:22
1589
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다