Tôi sẽ sử dụng varchar(20)
, nhưng tôi đã tự hỏi điều gì sẽ xảy ra nếu tôi nên thực hiện INT và loại bỏ các giai đoạn thay thế. Điều gì sẽ tốt hơn và tại sao?Tôi nên lưu trữ địa chỉ IP cho MySQL?
Trả lời
Tôi đoán bạn chỉ quan tâm đến địa chỉ IPv4 chứ không phải IPv6.
Tôi sẽ sử dụng INT UNSIGNED
cho cột và sau đó sử dụng INET_ATON
và INET_NTOA
để chuyển đổi qua lại giữa biểu diễn văn bản và giá trị int.
mysql> SELECT INET_ATON('192.168.10.50');
+----------------------------+
| INET_ATON('192.168.10.50') |
+----------------------------+
| 3232238130 |
+----------------------------+
1 row in set (0.00 sec)
mysql> SELECT INET_NTOA(3232238130);
+-----------------------+
| INET_NTOA(3232238130) |
+-----------------------+
| 192.168.10.50 |
+-----------------------+
1 row in set (0.00 sec)
cửa hàng IPV4 như int unsigned
http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton
http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-ntoa
@ f00 - sau đó cho v6? – ajreal
Thú vị, tôi không biết những chức năng đó tồn tại. –
@ajreal - nhị phân hoặc x2 bigint unsigned –
Nếu bạn thực sự quan tâm đến tiết kiệm không gian, bạn có thể đóng gói nó thành một int 4 byte. Mỗi khối địa chỉ IP IPv4 có thể có 256 giá trị có thể, mà chỉ xảy ra là phạm vi của một byte đơn.
- Edit -> Những gì tôi vừa mô tả có thể được thực hiện với sự f00 chức năng mysql liên kết trong câu trả lời của ông
Tuy nhiên, lưu trữ nó như là một chuỗi sẽ tiết kiệm được một chút thời gian mã hóa. Thành thật mà nói, trừ khi bạn đang làm điều này trên một quy mô rất lớn, việc tối ưu hóa từ một định dạng lưu trữ dày đặc hơn sẽ không thành vấn đề.
- 1. Lưu trữ địa chỉ IP trong cơ sở dữ liệu MySQL bằng cách sử dụng PHP
- 2. Lưu trữ địa chỉ IP trong cơ sở dữ liệu MySQL (IPv4 và IPv6)
- 3. Cách hiệu quả nhất để lưu trữ Địa chỉ IP trong MySQL
- 4. Số nguyên cho Địa chỉ IP - C
- 5. Tăng địa chỉ IP
- 6. Địa chỉ lưu trữ cục bộ
- 7. trim địa chỉ ip octet
- 8. Địa chỉ IP từ sk_buff
- 9. Địa chỉ IP trong MaskedTextBox?
- 10. Scapy SYN gửi trên địa chỉ IP của chúng tôi
- 11. php - Tôi có nên mã hóa địa chỉ email không?
- 12. Chuyển đổi [địa chỉ NSNetservice] để ip địa chỉ chuỗi
- 13. Địa chỉ IP và cổng có nên được coi là bí mật không?
- 14. Nhận địa chỉ ip wifi của tôi Android
- 15. Cơ sở dữ liệu Magento IP được lưu trữ
- 16. Trong đó Địa điểm Mysql Compiled Thủ tục lưu trữ?
- 17. Chuyển đổi một địa chỉ IP cho một số:
- 18. Hạn chế địa chỉ IP cho Cầu tàu và Solr
- 19. Kỹ thuật phát hiện vị trí cho địa chỉ IP
- 20. Cách lấy tên máy chủ dựa trên địa chỉ IP?
- 21. Phân tích địa chỉ IP trong .NET
- 22. Cách lấy địa chỉ IP tăng :: asio :: ip :: tcp :: socket?
- 23. Đảo ngược ip, tìm tên miền trên địa chỉ IP
- 24. Cách nghe trên nhiều địa chỉ IP?
- 25. Nhận địa chỉ IP cục bộ
- 26. Tôi có nên chuyển đổi Markdown được lưu trữ sang HTML hay tôi nên lưu trữ HTML không?
- 27. Dns.GetHostEntry trả về nhiều địa chỉ IP
- 28. mysql datatype để lưu trữ tháng và năm chỉ
- 29. Tìm địa chỉ IP trong iphone
- 30. Cách tìm số cổng của địa chỉ IP?
Tùy thuộc vào những hoạt động nào bạn sẽ thực hiện trên dữ liệu. – zerkms
Bạn không thể bỏ qua các khoảng thời gian hoặc bạn sẽ phải pad mỗi octet với zeroes vì vậy họ là tất cả 3 ký tự dài. Nếu không, IP 192.168.45.5 và 192.168.4.55 của IP sẽ giống nhau. Khi mọi người đề nghị sử dụng một int (32 bit) họ có nghĩa là bạn mất mỗi octet (8 bit mỗi) và đóng gói chúng lại với nhau thành một int duy nhất. –