我有一个11x84数组,我将用0和1填充。我想制作0和1矩阵的每种可能组合并将它们保存到sql中(实际上我想在树中移动)。结果将是巨大的(2 ^ 924),程序生成数组[11,84]并且在一个可能的组合之后应该保存到数据库中,所以稍后我可以逐个读取它们,并对它们进行另一次计算。
我正在使用 c#和 MsSql 2008 。
我想知道我应该为sql数据库使用哪种数据以及我的表设置应该如何?
我是否将每个数组保存为字符串?它将是一个924字符串。 (11x84 = 924)。字符串是一种有效的方式吗?
或者是否有更好的解决方案将数组作为数组放入数据库?我使用字节流还是其他类型的?
答案 0 :(得分:9)
所以如果你有一个924-char字符串,并计划在其中创建所有可能的1和0值,那么你将拥有2 ^ 924个BYTES数据,这相当于appx 10 ^ 254倍的大小今天的互联网。
但我确定你想知道这需要多长时间。
假设您希望很快就能完成此任务,我们将使用迄今为止世界上最快的超级计算机 - 天河-2,每秒计算33,860万亿次计算。假设生成一个SINGLE数字只需要1次计算(顺便说一下,这是一个非常低估),我们正在寻找app ^ 10 ^ 261秒,或appx 10 ^ 251 millenia。
越来越近了!
因此,假设(令人难以置信地粗略地)我们声明一个5亿年,我们正在寻找appx。 10 ^ 245 eons。如果我们假设弦理论的循环宇宙(http://discovermagazine.com/2008/apr/25-3-theories-that-might-blow-up-the-big-bang#.UcCgovnqneo),它将发生在每万亿年左右(所以每2000年),我们发现appx。在完成数据计算之后,将会发生10 ^ 242个宇宙重建。
“但我不想等那么久!”
我有个好消息。使用这些数字(这是我的数学模糊的地方),我们有10 ^ 242个宇宙的重建。每次娱乐都有app 365 days * 500 million years * 2000 eons
,因此大约需要3.65 * 10 ^ 256天才能完成。因此,当我们采用(3.65 * 10^256) mod 365
时,我们发现完成任务将花费0天时间,假设您之前已经开始了10 ^ 242次宇宙重建。
希望你会带来一些披萨,因为你会感到饥饿(谈论我们这个量子世界中的时态是如此困难)。
AUTHOR'S注意:这假定为char数组。如果使用位数组,则可以使用2 ^ 921的基数(每个“char”1位而不是8位)计算所有计算,从而缩短计算。
答案 1 :(得分:1)
好吧,为了存储这种数据,我认为大多数紧凑形式都是BitArray,请参见此处参考:http://msdn.microsoft.com/en-us/library/system.collections.bitarray.aspx
Buuuut,如果你的计算是正确的(我认为是),那么你最终会获得1,4181298336770849826794266683101e + 278种可能性。
每个使用至少924位(~116字节)的总和最多约为: 1,4961466213803019672087747815019e + 268 TB(TerraByte),并非所有地球上的硬盘都可以存储!对此抱歉....