[PostgreSQL] μ£Όμ†Œ νƒ€μž…: Inet, cidr

[원본 링크]

PostgreSQL은 λ³„μ˜λ³„κΈ°λŠ₯을 κΈ°λ³Έ λ‚΄μž₯ νƒ€μž…μœΌλ‘œ μ œκ³΅ν•˜λŠ”λ°, μ£Όμ†Œλ„ κ·Έ μ•ˆμ— ν¬ν•¨λœλ‹€.




Inet νƒ€μž…

Inet은 단일 IP, ν˜Ήμ€ λ„€νŠΈμ›Œν¬ 마슀크 μ˜μ—­μ„ ν‘œν˜„ν•˜λŠ” κΈ°λ³Έ νƒ€μž…μ΄λ‹€. μ΅œμ†Œ 7λ°”μ΄νŠΈ, μ΅œλŒ€ 19λ°”μ΄νŠΈλ₯Ό μ°¨μ§€ν•œλ‹€.
IPV4와 IPV6κ°€ λ™μ‹œμ— λ“€μ–΄κ°ˆ 수 있고, 192.168.100.128/25 같은 마슀크 μ˜μ—­λ„ ν‘œν˜„ν•  수 μžˆλ‹€.

inet λ¦¬ν„°λŸ΄μ€ λ¬Έμžμ—΄ 기반으둜 μΊμŠ€νŒ…ν•΄μ„œ ν‘œν˜„ν•  수 있고,

μœ νš¨ν•˜μ§€ μ•Šμ€ ν‘œν˜„μ΄ λ“€μ–΄κ°€λ©΄ μ—λŸ¬κ°€ λ‚œλ‹€.

inet μ»¬λŸΌμ— λ„£μ„λ•ŒλŠ” μžλ™μΊμŠ€νŒ…μ΄ λ˜λ‹ˆκΉŒ, κ·Έλƒ₯ λ¬Έμžμ—΄λ‘œ λ°€μ–΄λ„£μœΌλ©΄ λœλ‹€.

단일 IP 말고 μ„œλΈŒλ„· 마슀크λ₯Ό ν•¨κ»˜ ν‘œν˜„ν•  μˆ˜λ„ μžˆλ‹€.




cidr νƒ€μž…

cidr νƒ€μž…μ€ inet의 μ—„κ²©ν•œ 뢀뢄집합이라고 보면 λœλ‹€.
cidrμ—μ„œ ν•  수 μžˆλŠ”κ±΄ inetμ—μ„œ λ‹€ ν•  수 μžˆλŠ”λ°, λ°˜λŒ€λŠ” μ•ˆλœλ‹€.

일단 cidr은 β€œλ„€νŠΈμ›Œν¬ μžμ²΄β€λ§Œ ν‘œν˜„ν•˜λ„λ‘ κ°•μ œν•˜λŠ” νƒ€μž…μ΄λΌμ„œ, 이런 κ²ƒλ§Œ λ“€μ–΄κ°€κ³ 

이런건 ν‘œν˜„ν•  수 μ—†λ‹€.




λ°”μ΄νŠΈ μ •λ ¬

inet/cidr의 이점 쀑 ν•˜λ‚˜λŠ”, μ˜λ„ν•œλŒ€λ‘œ 정렬이 λœλ‹€λŠ” 것이닀.
μ‹€μ œ λ°”μ΄νŠΈκ°’ κΈ°μ€€μœΌλ‘œ 정렬을 ν•˜κΈ° λ•Œλ¬Έμ—, λ¬Έμžμ—΄μ„ μ“Έλ•Œμ²˜λŸΌ μ‚¬μ „μˆœμœΌλ‘œ 꼬일 λ¬Έμ œλŠ” μ—†λ‹€.




μ„œλΈŒλ„· 마슀크 μ—°μ‚°

inet/cidr νƒ€μž…μ˜ κ°€μž₯ 큰 μž₯점 쀑 ν•˜λ‚˜λ‹€. μ„œλΈŒλ„·μ— λŒ€ν•œ 포함, ꡐ집합 연산듀을 νŽΈλ¦¬ν•˜κ²Œ μ œκ³΅ν•œλ‹€.

<<, >> μ—°μ‚°μžλŠ” IP의 포함 μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” μ—°μ‚°μžλ‹€. IP << μ„œλΈŒλ„·λ§ˆμŠ€ν¬ λŒ€μ—­
λ‹€μŒμ€ 192.168.0.0/24 μ˜μ—­μ— 192.168.0.5κ°€ ν¬ν•¨λ˜λŠ”μ§€λ₯Ό ν™•μΈν•˜λŠ” 쿼리닀.




Gist 인덱슀λ₯Ό ν†΅ν•œ μ„œλΈŒλ„· 인덱싱

같은 μ„œλΈŒλ„· 포함 연산은 기본적으둜 인덱슀λ₯Ό 타지 μ•ŠλŠ”λ‹€. μ„œλΈŒλ„· 연산은 B-Tree의 λ™μž‘ 방식과 ν˜Έν™˜λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.
ν•˜μ§€λ§Œ Gist 인덱슀λ₯Ό μ‚¬μš©ν•˜λ©΄ 이λ₯Ό κ°„νŽΈν•˜κ²Œ μ΅œμ ν™”ν•  수 μžˆλ‹€.

그럼 이것도 이제 인덱슀λ₯Ό 탄닀.

inet GistλŠ” >>, >>=, <<=, <<, && 연산을 μ§€μ›ν•œλ‹€.



μ°Έμ‘°
https://www.postgresql.org/docs/current/datatype-net-types.html
https://blog.naver.com/sssang97/224290170058