Amazon s3 需要存储128*位*主键:我应该使用SQL Azure还是Azure表?或者只是在Azure Blob中使用链接列表

Amazon s3 需要存储128*位*主键:我应该使用SQL Azure还是Azure表?或者只是在Azure Blob中使用链接列表,amazon-s3,azure,ipv6,azure-sql-database,azure-storage,Amazon S3,Azure,Ipv6,Azure Sql Database,Azure Storage,我需要存储一个大的(128位)PK。每个int将有一些对应的列。。。现在没有定义架构。。。我希望将来的模式灵活。(我只需要保守的灵活性,例如不时添加新列) 在这一点上,我不太关心连接之类的功能。我主要想选择一个随机的PK,然后上下搜索接下来的10条记录。由于搜索中可能存在大量空白,因此向上和向下搜索的成本可能会有所不同 处理此请求的最佳技术是什么?我感兴趣的东西,将节省我的钱(每笔交易),和存储空间。我也对表演感兴趣 你推荐什么 更新 好的,这是干什么用的?我想创建IPv6地址的数据历史记录。当

我需要存储一个大的(128位)PK。每个int将有一些对应的列。。。现在没有定义架构。。。我希望将来的模式灵活。(我只需要保守的灵活性,例如不时添加新列)

在这一点上,我不太关心连接之类的功能。我主要想选择一个随机的PK,然后上下搜索接下来的10条记录。由于搜索中可能存在大量空白,因此向上和向下搜索的成本可能会有所不同

处理此请求的最佳技术是什么?我感兴趣的东西,将节省我的钱(每笔交易),和存储空间。我也对表演感兴趣

你推荐什么

更新


好的,这是干什么用的?我想创建IPv6地址的数据历史记录。当然,这将是一个非常稀疏的表。。。但我确实需要跟踪有关SEED IP的某些事情

为了澄清,我认为您需要128位的密钥(而不是2^128位)

我把这当作一个关于Db键类型选择的问题,我不确定Azure angle会带来什么后果。AFAIK它是建立在MS-SQL之上的

128位或16字节与Guid(UniqueIdentifier)的大小相同,但我认为您不想使用它。尽管有人支持将其用作密钥

直接选择类似于二进制(16),但我不知道这是否适合作为PK

您可以将其编码为char(32)十六进制字符串,这并不过分


对于实用性评估,关键因素是数据的稀疏程度,或者更好:您希望存储多少地址

为了澄清,我认为您需要128位的密钥(而不是2^128位)

我把这当作一个关于Db键类型选择的问题,我不确定Azure angle会带来什么后果。AFAIK它是建立在MS-SQL之上的

128位或16字节与Guid(UniqueIdentifier)的大小相同,但我认为您不想使用它。尽管有人支持将其用作密钥

直接选择类似于二进制(16),但我不知道这是否适合作为PK

您可以将其编码为char(32)十六进制字符串,这并不过分


对于实用性评估,关键因素是数据的稀疏程度,或者更好:您希望存储多少地址

首先,2^128整数密钥中的前提是错误的,因为您提到要存储IP V6地址。IP V6地址的长度为128位。要将其存储为整数,每个地址需要128/32或4个32位整数。因此,正确的估计是2^128个可能的地址*4个整数,总共是2^128*4个32位整数的密钥

不管怎样,我想要以字节为单位,所以我们只需要2^128个可能的地址*4个整数*4个字节/整数=5.44*10^39个字节。在那之后,只要按照安德烈亚斯的计算,你最终会得到更多

也就是说,IPV6的理念是我们拥有的地址比我们需要使用的地址还要多。所以我非常怀疑2^128附近的任何地方会被分配很多年。如果我们现在使用ipv6,最多只能分配ipv4地址空间,而不分配其他内容,尽管IP地址的数量每年都在增加,但不会增加那么多


无论如何,似乎您不知道存储的是什么,因为没有定义架构,所以Azure表可能是您想要的。主要是关键/价值。对于每个IP地址,您可以存储完全不同的属性。使用更新/插入/合并操作添加/删除另一个属性非常容易。但是,如果您希望对数据应用某种一致性,那么就不要使用SQL。确实,在发生更改时必须修改模式,但这将强制要求每一行(因此IP地址)具有相同的数据。否则,如果您有多个应用程序,很容易遗漏“必需”列/属性或拼写错误。但这取决于你想做什么。更重要的是,您是重视数据完整性还是重视属性的灵活性?即使架构确实需要更改,也有一些命令可以从架构中添加/删除列。更重要的是,您希望每个IP地址都存储相同的属性,还是每个IP地址都有不同的属性。我相信如果您不使用给定IP地址的大多数属性,Azure表方式可能比SQL方式占用的每个地址的存储空间更少。因此,这完全取决于您要查找的内容。

首先,您在2^128整数密钥中的前提是错误的,因为您提到要存储IP V6地址。IP V6地址的长度为128位。要将其存储为整数,每个地址需要128/32或4个32位整数。因此,正确的估计是2^128个可能的地址*4个整数,总共是2^128*4个32位整数的密钥

不管怎样,我想要以字节为单位,所以我们只需要2^128个可能的地址*4个整数*4个字节/整数=5.44*10^39个字节。在那之后,只要按照安德烈亚斯的计算,你最终会得到更多

也就是说,IPV6的理念是我们拥有的地址比我们需要使用的地址还要多。所以我非常怀疑2^128附近的任何地方会被分配很多年。如果我们现在使用ipv6,最多只能分配ipv4地址空间,而不分配其他内容,尽管IP地址的数量每年都在增加,但不会增加那么多

无论如何,似乎您不知道存储的是什么,因为没有定义架构,所以Azure表可能是您想要的。主要是关键/价值。对于每个IP地址,您可以存储完全不同的属性。使用更新/插入/合并操作添加/删除另一个属性非常容易。但是,如果您希望对数据应用某种一致性,那么就不要使用SQL。这是真的,你会