Index structures for files
- index : ์ถ๊ฐ์ ์ธ ๋ณด์กฐ์ ๊ทผ๊ตฌ์กฐ, ๊ฒ์์๋ ์ฆ๊ฐ, ๋์ฒด๋ฐฉ๋ฒ์ ์ ๊ณตํจ, ํจ์จ์ ๊ฒ์
Single-level ordered indexes
- primary, secondary, clustering
- ISAM : Indexed Sequential Access Method
Multilevel indexes
- B trees, B+ trees
<Single level ordered>
Types of Single-level ordered indexes
- Primary index : ํค ํ๋ ์ ๋ ฌ ํ์ผ์์ ์ ๋ ฌ ํค ํ๋์ ๋ํด ์ ์๋ ์ธ๋ฑ์ค
- Clustering index : ํค๊ฐ ์๋๊ฑธ๋ก ์ ๋ ฌ๋ ํ์ผ์์ ์ ๋ ฌ ํ๋์ ๋ํด ์ ์๋ ์ธ๋ฑ์ค
- Secondary index : any nonordering field
Primary Indexes
- < K(i), P(i) >
- K = ์ ๋ ฌ ํค ํ๋
- P = ๋์คํฌ๋ธ๋ญ์ ํฌ์ธํฐ
- one index entry for each block
- Anchor record of the block, or the block anchor : ๊ฐ ๋ธ๋ญ์ ์ฒซ ๋ ์ฝ๋
- Dense index : has an index entry for every search key value
- Sparse index : non-dense. (primary index)
if) 300,000 ๋ ์ฝ๋, B=4096 bytes, R=100 bytes
→ bfr = B/R = 4096/100 = 40
→ ํ์ํ ๋ธ๋ญ ์ b = 300000/40 = 7500
→ ์ ๋ ฌ ํ์ผ์ด๋ฏ๋ก ์๊ฐ์ log 7500 = 13 block accesses
to insert a record
- move records to make space
- change some index entries
ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ ๋ฐฉ๋ฒ๋ค์ด๋ฏ๋ก, overflow ํ์ผ์ ์ฌ์ฉํ๊ฑฐ๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ ์ฌ์ฉ.
deletion ⇒ deletion markers
Clustering index
nonkey field
ordering nonkey field vs separate block cluster for each group →๋ธ๋ญ๋น ๊ฐ์ ๋ ์ฝ๋๋ง ์ ์ฅ. ๊ณต๊ฐ๋ญ๋น ๊ฐ๋ฅ์ฑ
→ ๊ณต๊ฐ๋ญ๋น ์์ง๋ง ๋ค์๋ธ๋ญ๊น์ง ๊ฒ์ ํ์
Secondary indexes : ๋ณด์กฐ์ธ๋ฑ์ค
need more storage space and longer search time
dense index : ๋ ์ฝ๋ ๋น ํ๋์ ์ํธ๋ฆฌ
์์ ๋ ์ฝ๋์ ๊ฒ์์๊ฐ ๊ฐ์
on a nonkey field
can have the same value for the indexing field
- index entry ์ฌ๋ฌ๊ฐ ์ฌ์ฉ
- ๊ฐ๋ณ๊ธธ์ด ๋ ์ฝ๋ ์ฌ์ฉ
- ๋ ๋ฒจ์ ํ๋ ๋
r=300,000 records fixed length, R=100bytes, B=4096bytes
secondary key, nonordering key field of the file that is V=9 bytes long
→ ๋ณด์กฐ์ธ๋ฑ์ค ์๋ค๋ฉด : ์ ํํ์, b/2 = 7500/2 = 3750 block accesses
→ ๋ณด์กฐ์ธ๋ฑ์ค ์์
- R(i) = V+P = 9+6 = 15 = ์ธ๋ฑ์ค ๋ธ๋ญ์ ํฌ๊ธฐ
- bfr(i) = 4096/15 = 273
- b(i) = 300000/273 = 1099
- ์ด์งํ์ ์๊ฐ : log 1099 = 11
- ์ด ์ ๊ทผ ๋ธ๋ญ ์ = 11 index blocks + 1 data block = 12
1. Indexing filed๊ฐ key ์ผ๋
: ์ธ๋ฑ์ค ํ๋๊ฐ ์ ๋ ฌ์ ์ฌ์ฉ๋๋ฉด Primary index, ์ ๋ ฌ์ ์ฌ์ฉ๋์ง ์์ ํค๋ผ๋ฉด secondary index(key)
2. Indexing filed๊ฐ nonkey ์ผ๋
: ์ธ๋ฑ์ค ํ๋๊ฐ ์ ๋ ฌ์ ์ฌ์ฉ๋๋ฉด Clustering index, ์ ๋ ฌ์ ์ฌ์ฉ๋์ง ์์ ํค๋ผ๋ฉด secondary index(nonkey)
<Multilevel indexes>
bfr(i) = the blocking factor for the index
= the fan-out = fo (์ธ๋ฑ์ค ์ฐจ์)
- searching a multilevel index = log (๋ฐ=fo) (index block ์) ๊ฐ์ ๋ธ๋ญ ์ ๊ทผ ํ์
ISAM = Indexed Sequential Access Method
bfr(i) = 273 = fan-out = fo
the number of first level index blocks b1 = 1099
block accesses = log(273) 1099
< Dynamic Multilevel indexes B Trees and B+ Trees >
B trees and B+ trees are special cases of the tree data structure
root node = level 0
search trees : ๋ ์ฝ๋ ๊ฒ์์ ๊ฐ์ด๋ํด์ฃผ๋ ํน๋ณํ ํํ์ ํธ๋ฆฌ
- p=3 → ํฌ์ธํฐ๊ฐ 3๊ฐ์ธ 3์ฐจ ํธ๋ฆฌ
B-tree
: ํธ๋ฆฌ๊ฐ ํญ์ ๊ท ํ์ ์ ์งํ๊ณ , ์ญ์ ๋ก ๋ญ๋น๋๋ ๊ณต๊ฐ์ด ์๋ค๋ฉด ์ ๋ ๊ณผ๋ํด์ง์ง ์๋๋ก ํ๋ ์ถ๊ฐ์ ์ธ ์ ์ฝ ์กฐ๊ฑด์ด ์์ต๋๋ค.
์ฐจ์ p์ธ Bํธ๋ฆฌ์ ํน์ฑ
- ๋ฃจํธ์ ๋ฆฌํ๋ฅผ ์ ์ธํ ๋ ธ๋์ ์๋ธํธ๋ฆฌ ์ : p/2์ด์ ≤ ๊ฐ์ ≤ p → ์ ์ด๋ ๋ ธ๋์ ๋ฐ์ ์ฑ์์ผํจ
- ๋ฃจํธ(๋ฆฌํ๊ฐ ์๋)์ ์๋ธํธ๋ฆฌ ์ > 2 → ๋ฃจํธ ๋ ธ๋๋ถํฐ ๋ถ๊ธฐ
- ๋ชจ๋ ๋ฆฌํ๋ ๊ฐ์ ๋ ๋ฒจ → ๊ท ํํธ๋ฆฌ
- ํค ๊ฐ์ ์ : ๋ฆฌํ๋ (p/2์ด์ - 1) ~ (p-1)
- ๋ฆฌํ๊ฐ ์๋ ๋ ธ๋ : ์๋ธํธ๋ฆฌ - 1
- ํ ๋ ธ๋ ๋ด์ ํค๊ฐ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ. → p-์ ํ์ํธ๋ฆฌ
key ๊ฐ์ = ํฌ์ธํฐ ๊ฐ์ - 1
์ฐ์ฐ : ์ง์ ํ์ = ํค๊ฐ์ ์์กดํ ๋ถ๊ธฐ, ํ ๋ ธ๋ ๋ธ๋ญ ๋ด์์๋ ์์ฐจํ์
์์ฐจํ์ = ์ค์ ์ํ
์ฝ์ = ํธ๋ฆฌ ๊ท ํ ์ ์ง, ๋ถํ ์ ๋์ด ์ฆ๊ฐ
์ญ์ = ๊ท ํ ์ ์ง, ํฉ๋ณ ์ ๋์ด ๊ฐ์
B+ tree : Bํธ๋ฆฌ์ ๋ณํ
data pointers are stored only at the leaf nodes of the tree
leaf node๋ค์ ์ฐ๊ฒฐ๋์ด์๋ค
- ์ธ๋ฑ์ค ์ธํธ : ๋ด๋ถ ๋ ธ๋ (์์ชฝ์ ํธ๋ฆฌ)
- ์์ฐจ ์ธํธ : ๋ฆฌํ ๋ ธ๋ (๋ชจ๋ ํค ๊ฐ๋ค์ ํฌํจํ๋ฉฐ, ์์ฐจ์ ์ผ๋ก ์ฐ๊ฒฐ)
B+ ํธ๋ฆฌ์ ํน์ฑ
- ๋ฃจํธ์ ์๋ธํธ๋ฆฌ : 0, 2, p/2 ~ p
- ๋ ธ๋์ ์๋ธํธ๋ฆฌ (๋ฃจํธ, ๋ฆฌํ ์ ์ธ) : p/2 ~ p
- ๋ชจ๋ ๋ฆฌํ๋ ๊ฐ์ ๋ ๋ฒจ
- ๋ฆฌํ๊ฐ ์๋ ๋ ธ๋์ ํท๊ฐ ์ : ์๋ธํธ๋ฆฌ - 1
- ๋ฆฌํ ๋ ธ๋ : ๋ฐ์ดํฐ ํ์ผ์ ์์ฐจ์ธํธ(๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐ)
์ฐ์ฐ
ํ์ : ์ธ๋ฑ์ค ์ธํธ = p-์ ํ์ํธ๋ฆฌ, ๋ฆฌํ์์ ๊ฒ์
์ฝ์ : Bํธ๋ฆฌ์ ์ ์ฌ, ์ค๋ฒํ๋ก์ฐ→๋ถ์ด→ ๋ถ๋ชจ๋ ธ๋์ ๋ฆฌํ ๋ ๋ค์ ํค๊ฐ ์กด์ฌ
์ญ์ : ๋ฆฌํ์์๋ง ์ญ์ or ํฉ๋ณ or ์ฌ๋ถ๋ฐฐ
Index Creation (in sql)
CREATE [Unique] INDEX <index name>
ON <table name> (~~~)
[CLUSTER];
ex)
CREATE INDEX Dno_index
ON EMPLOYEE (Dno)
CLUSTER;
'๐ ์ ๊ณต ๊ณต๋ถ > DB๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ๋์์ฑ ์ ์ด (0) | 2022.12.30 |
---|---|
[DB] Transaction processing (0) | 2022.12.30 |
[DB] Disk, ํ์ผ๊ตฌ์กฐ, Hashing, ์ ์ฅ์ ์ค๊ณ (1) | 2022.12.30 |
[DB] SQL programmingโจ๏ธ (2) (0) | 2022.12.30 |
[DB] SQL Programmingโจ๏ธ (1) (0) | 2022.12.30 |