【问题标题】:Best way to store IPv4 in db using Java使用 Java 将 IPv4 存储在数据库中的最佳方法
【发布时间】:2018-07-25 12:13:05
【问题描述】:

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

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

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

我将使用 DB2 10.5 和 Java 1.6。

【问题讨论】:

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

标签: java database db2 ip ipv4


【解决方案1】:

简单地使用文本格式,在java中他们使用字符串格式,如果你想处理子网,,,等只是一些字符串函数来提取你需要的文件

【讨论】:

    【解决方案2】:

    根据这个答案Maximum length of the textual representation of an IPv6 address?,您可以使用 45 作为列的长度来存储 IPv6 地址,该地址也可以容纳 IPv4,因为它只有 39 个字符。

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

    这是一个一般性建议,并不针对任何数据库。

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      相关资源
      最近更新 更多