使用Java在数据库中存储IPv4的最佳方法

使用Java在数据库中存储IPv4的最佳方法,java,database,db2,ip,ipv4,Java,Database,Db2,Ip,Ipv4,我需要用Java制作一个应用程序来管理IPv4(或者将来的IPv6)。用户将在该应用程序中管理其IP地址范围、超级网和子网(创建/删除等)。我有一些关于架构的问题 在DB2中存储/搜索IPv4及其前缀的最佳格式是什么(考虑到我将通过Java访问它们) 他们还将使用私有IP地址范围,例如10.0.0.0/8,这将创建16777214个IP地址。其中,当他们尝试创建此网络时,他们将仅使用0.1%的IP。我应该如何在DB中定义它?我应该创建代表每个IP的1600万行,还是应该只在DB中创建已使用的IP

我需要用Java制作一个应用程序来管理IPv4(或者将来的IPv6)。用户将在该应用程序中管理其IP地址范围、超级网和子网(创建/删除等)。我有一些关于架构的问题

  • 在DB2中存储/搜索IPv4及其前缀的最佳格式是什么(考虑到我将通过Java访问它们)

  • 他们还将使用私有IP地址范围,例如10.0.0.0/8,这将创建16777214个IP地址。其中,当他们尝试创建此网络时,他们将仅使用0.1%的IP。我应该如何在DB中定义它?我应该创建代表每个IP的1600万行,还是应该只在DB中创建已使用的IP


  • 我将在Java 1.6中使用DB2 10.5。

    只需使用文本格式,在Java中他们使用字符串格式,如果您想处理子网,,,,等一些字符串函数,以附加您需要的字段。

    根据此答案,您可以使用45作为列的长度来存储也将容纳IPv4的IPv6地址,因为它只有39个字符

    为了回答第二个问题,您只能存储那些使用过的IP地址,并通过IP列本身对其进行索引,以便检索更快


    这是一个一般性建议,并不特定于任何数据库。

    对于1),最好创建一个自定义类型,该类型可以解析/显示相关的文本格式,但实际上将其存储为整数或4。对于2),您需要某种方式来存储范围的开始/结束,但我对子网的工作方式还不够了解,无法确定这是显式的结束/开始还是其他内容。1)我正在寻找类似的内容。你有什么例子吗。感谢BTWN,这不是我在数据库上尝试过的东西-你必须阅读相关文档和这里的任何问题。