需要存储128 *位*主键:我应该使用SQL Azure的或Azure Table中?或者只是使用Azure中的Blob链表

StackOverflow https://stackoverflow.com/questions/3430563

我需要存储大的(128位)的PK。每个INT会有一些相应的列...现在没有架构定义......我想要的模式在未来灵活。 (我只需要保守灵活性例如不时添加新列)

在这一点上,我不会太在意这样做的能力和连接等。我主要是想选择一个随机PK和或搜索上下到下一个10条记录。由于可以有大量的空白空间在查询的向上和向下搜索的成本可能会有所不同。

什么是处理这个请求最好的技术?我感兴趣的东西,一定会来救我的钱(每笔交易),以及存储空间。我也有兴趣在性能上。

你有什么建议?

<强>更新

好了,这是什么呢?我想创建一个IPv6地址数据的历史。当然,这将是一个非常稀疏表...但我确实需要追踪某些事情关于所看到的IP的。

有帮助吗?

解决方案

Windows Azure的表是我的建议,但有只定义了一个排序顺序,因此这将是很难同时搜索前进和后退。你可能最终具有在正常顺序存储每个键两次,一次,并且一旦反转(0xFFF的... F - 密钥)。以有效地支持两个方向扫描

其他提示

要澄清,我想你需要的128位(未2 ^ 128位)的密钥。

我将此作为有关Db的密钥类型选择的问题,我不知道有什么后果Azure的角度了。据我所知它是建立在MS-SQL的顶部。

128位或16个字节的大小与一个GUID(唯一标识符)相同,但我不认为你想使用。虽然它被用作一个关键支撑。

有一个直接的选择会是这样的二进制(16),但我不知道这是多么适合作为一个PK。

可以它作为char(32)十六进制字符串,这不是过度编码。

有关实用性估计,关键因素是稀疏的数据如何,或者更好的是多少的地址,你期望有店?

首先,你在2 ^ 128整数密钥的前提是错误的,因为你提到你想存储IP V6地址。一个IP地址V6是128位长。将其存储为你需要每个地址三十二分之一百二十八或4个32位整数的整数。因此,正确的估计是2 ^ 128个可能的地址* 4点的整数,总共2 ^ 128 * 32 4个键位整数...

反正我想,在字节,所以我们只去2 ^ 128个可能的地址* 4个*整数每整数= 5.44 * 10 ^ 39个字节的4个字节。之后,仅仅跟踪Andreas'的计算,你会用更多....

结束

这就是说IP V6的想法是,我们有比我们会永远需要使用更多的地址。所以我很怀疑任何接近2 ^ 128将被分配了很多年。在最如果我们去IP V6,现在,我们必须分配的IP V4地址空间,不出意外,虽然IP地址的人数逐年增加,而不是那么多。

反正它好像你不知道你是什么存储,因为该模式没有定义,因此Azure的表可能是你想要的。主要是它是键/值。对于每一个IP地址,你可以存储完全不同的性质。它是很容易添加另一个属性/删除使用更新/插入/合并操作的另一个属性。但是,如果你想要一些一致性应用到你的数据不是使用SQL。这是真的,你将不得不修改架构的变化情况,但这种强制将每一行(因此IP地址)具有相同的数据。否则,很容易就离开了“要求”列/属性,或者如果你有多个应用程序拼错他们。但它确实取决于你想要做什么。它更你值数据完整性或你的价值属性的灵活性?尽管架构确实需要改变,有从模式命令来添加/删除列。它更做你想做的每个IP地址存储相同的属性或可分别具有不同的属性。我相信,在Azure表的方式可能需要每个地址更少的存储空间比如果你不使用最为对于一个给定的IP地址属性的SQL的方式。因此,一切都取决于你在找什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top