1

我们需要记录所有使用基于 Java EE 5 的 Web 应用程序的用户的 IP 地址信息。

在以下支持的数据库(h2、mysql、oracle)中存储 IPv4 或 IPv6 地址的合适 sql 数据类型是什么?

还需要过滤来自某些 IP 地址的活动。我是否应该将表示形式视为字符串字段(例如 varchar(32) 来保存 ipv4、ipv6 地址)?

4

3 回答 3

4

我会将 IP 地址存储在varchar(15). 这很容易阅读,您可以过滤特定的 IP,例如where ip = '1.2.3.4'.

如果您必须在网络上进行过滤,例如1.2.3.4/24,那就是另一回事了。在这种情况下,最好将 IP 地址存储为 4 字节二进制文件。

于 2010-04-04T17:16:29.447 回答
2

如果您有大量数据并且必须搜索,为了提高性能,最好将 IP 的字符串(点)表示转换为其适当的整数值。

于 2010-04-04T17:20:54.310 回答
0

其中任何一个都是有效的

  • 4 个字节,可能是 CIDR 的第 5 个字节
  • varchar(15) 或 (18) 一次性存储完整表示

话虽如此,SQL Server 的 sys.dm_exec_connections 的 varchar(48) ......

于 2010-04-04T18:00:57.140 回答