开发者社区> 问答> 正文

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

我怎么做?

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

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

你会推荐什么?

展开
收起
保持可爱mmm 2020-05-11 17:20:26 648 0
1 条回答
写回答
取消 提交回答
  • 我不确定哪款MySQL 是正确的答案,因为它尚不原生支持IPv6地址格式(尽管“ WL#798:MySQL IPv6支持 ”表明它将会在MySQL v6.0中使用)文档不会对此进行备份)。

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

    2020-05-11 17:20:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载