INET_ATON 및 INET_NTOA 함수를 이용하는 방법
개발을 진행하면서 IP 주소 데이터에 대해서 MySQL을 이용하여 저장하고 검색을 하는 경우 IP 주소 데이터를 그대로 사용할 수 있지만 MySQL에서 제공하는 INET_ATON 및 INET_NTOA 함수를 활용하는 것이 더 많은 장점을 제공한다.
그렇다면 이 함수들을 어떻게 사용하는지에 대해서 한번 알아보도록 하자.
1. INET_ATON 함수
INET_ATON 함수는 IP 주소를 숫자로 변환을 한다.
예를 들어 "1.1.1.1"이라는 IP 주소에 대해서 숫자로 변환을 하면 "16843009"이 된다.
# INET_ATON Example
mysql> SELECT INET_ATON('1.1.1.1');
+----------------------+
| INET_ATON('1.1.1.1') |
+----------------------+
| 16843009 |
+----------------------+
INET_ATON 함수를 사용하는 이유는 여러 가지가 있다.
1.1 저장 공간의 절약
IP 주소를 그대로 입력하여 사용하는 경우 텍스트 형태로 CHAR 또는 VARCHAR를 사용해야 한다.
그러나 INET_ATON 함수를 이용하면 IP 주소를 숫자 형태인 INTEGER로 변환하여 저장할 수 있다.
이로써 MySQL에 좀 더 적은 저장 공간을 사용할 수 있다.
1.2 효율적인 검색, 비교, 정렬
숫자로 된 IP주소는 텍스트보다 검색 및 비교가 훨씬 빠르며, 정렬이 쉽다.
검색 시에도 들어오는 데이터를 먼저 INET_ATON 함수를 사용하여 숫자로 변환해야 하지만, 그래도 숫자 간의 비교가 텍스트보다 효율적이다.
또한, 데이터가 숫자로 저장되기 때문에 범위 기반의 조건 검색도 효율적으로 수행할 수 있다.
2. INET_NTOA 함수
INET_NTOA 함수는 INET_ATON 함수와 반대로 숫자를 IP 주소로 변환을 한다.
예를 들어 "16843009"로 변환된 숫자를 변환을 하면 "1.1.1.1" IP 주소가 된다.
# INET_NTOA Example
mysql> SELECT INET_NTOA(16843009);
+---------------------+
| INET_NTOA(16843009) |
+---------------------+
| 1.1.1.1 |
+---------------------+
INET_NTOA 함수는 숫자로 작성된 데이터를 익숙한 IP 주소 형태로 변환하여 가독성을 높일 수 있다.
INET_ATON 함수를 사용하여 MySQL에 저장한 데이터를 조회할 때 INET_NTOA 함수를 활용하여 데이터를 익숙한 IP 주소 형태로 변환할 수 있다.
이를 통해 저장된 데이터를 사용할 때 숫자로 저장된 IP 주소를 텍스트 형태로 변환함으로써 사용자는 더 직관적으로 데이터를 이해하고 활용할 수 있을 것이다.
3. 참고 문서
🌵댓글