使用c#将大数组保存到sql中

时间:2013-06-18 17:45:31

标签: c# sql-server-2008 multidimensional-array tree

我有一个11x84数组,我将用0和1填充。我想制作0和1矩阵的每种可能组合并将它们保存到sql中(实际上我想在树中移动)。结果将是巨大的(2 ^ 924),程序生成数组[11,84]并且在一个可能的组合之后应该保存到数据库中,所以稍后我可以逐个读取它们,并对它们进行另一次计算。

我正在使用 c# MsSql 2008

我想知道我应该为sql数据库使用哪种数据以及我的表设置应该如何?

我是否将每个数组保存为字符串?它将是一个924字符串。 (11x84 = 924)。字符串是一种有效的方式吗?

或者是否有更好的解决方案将数组作为数组放入数据库?我使用字节流还是其他类型的?

2 个答案:

答案 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),并非所有地球上的硬盘都可以存储!对此抱歉....