当前位置: 首页 > 面试题库 >

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

越勇
2023-03-14
问题内容

我怎么做?

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

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

你会推荐什么?


问题答案:

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

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



 类似资料:
  • 问题内容: 在MySQL数据库中用PHP存储IP的最佳实践是什么?有一个名为ip2long的函数-但这仅适用于IPv4。但是IPv6呢? 我知道一个用于IPv6 IP的php函数,但是在Windows上的PHP <Version 5.3上不起作用 问题答案: 可以将点分十进制IPv4地址转换为整数,最大大小为32位。IPv6地址是128位。由于128位不适合PHP int,因此在PHP中使用它会很

  • 问题内容: 我想将分层的二维科学数据集存储在关系数据库(MySQL或SQLite)中。每个数据集都包含一个数值数据表,其中包含任意数量的列。另外,每个数据集可以具有一个或多个与其表的给定行关联的相同类型的子级。每个数据集通常具有1至100列和1至1.000.000行。数据库应该能够处理许多数据集(> 1000),并且数据的读/写应该相当快。 存储此类数据的最佳数据库模式将是什么?是否有一个“主”表

  • 问题内容: 正如“具有ipv6功能的inet_aton和inet_ntoa功能所需 ”中所要求的那样,当前没有用于存储IPv6地址的MySQL函数。建议用于存储/插入的数据类型/功能是什么?(我不打算将它们存储为字符串)。我也不想将IPv6地址分为2个INT。 问题答案: 怎么样: 那应该足够有效。 如该错误报告中所述,当前在MySQL服务器中没有将文本IPv6地址从二进制转换为二进制的功能。您需

  • 问题内容: 我正在建立一个网站,我需要在数据库中存储随机数的数据。 例如:用户john可能有一个电话号码,而jack可能有3。 我需要能够为每个用户存储无限数量的值。 我在任何地方都找不到方法,希望您能帮助我!:) 我是关系数据库的新手。 问题答案: 您创建一个单独的电话号码表(即1:M关系)。 现在,您可以通过简单的连接轻松获得用户的电话号码;

  • 我正在为我工作的一家公司申请工作。我有它来防止SQL注入和一些XSS技术。我的主要问题是保护敏感信息的安全,比如SSN和地址,因为公司需要它来为推销员制作1099表格。 我不知道如何做这部分,但是我应该加密所有内容,然后在它进入MySQL数据库时对其进行解密吗?

  • 问题内容: 我的主要问题是,我想检查具有相同SSN的某人是否在我们这里有多个帐户。当前,所有个人身份信息都经过加密,解密需要很短的时间。 我最初的想法是在数据库的用户列中添加一个ssn列。然后,我可以简单地执行一个查询,使所有具有ssn或用户A的用户。 我不想将ssn以明文形式存储在数据库中。我当时只是想以某种方式加盐并对其进行哈希处理。 我的主要问题是,这是否安全(或安全性如何)?有什么简单的方