如何在关系数据库中存储IPv6兼容地址

发布于 2021-02-02 16:33:03

我怎么做?

现在,将不会使用IPv6,但是我需要设计应用程序以使其支持IPv6。有必要在MySQL数据库中存储IP地址和CIDR块(也是BGP
NLRI,但这是另一回事)。我一直将INT用于IPv4 +将TINYINT用于masklen,但是IPv6是128位。

哪种方法最适合呢?2xBIGINTCHAR(16)用于二进制存储?CHAR(39)用于文本存储?8xSMALLINT在专用桌子上?

你会推荐什么?

关注者
0
被浏览
91
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    我不确定哪款MySQL 是 正确的 答案,因为它尚不原生支持IPv6地址格式(尽管“ WL#798:MySQL
    IPv6支持
    ”表明它将会在MySQL
    v6.0中使用)文档不会对此进行备份)。

    但是,在您提出的建议中,我建议您使用2 * BIGINT,但要确保未签名。在IPv6的/ 64地址边界处存在一种自然分裂(因为/
    64是最小的网络块大小),因此可以很好地对齐。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看