将距离矩阵存储为SQL Server数据库中的VarChar(Max)



我正在开发一个车队调度应用程序,并寻找一种有效的方法来存储地理位置之间的距离。

应用程序代码将矩阵访问为二维数组double[,]

为了使矩阵持久化,我目前将矩阵序列化为字符串。序列化后,它看起来像这样:

"1 4 9 8 3 6 n
5 6 7 9 3 6 n
34 4 5 6 6 7 n"

然后,它被存储在SQL Server 2008数据库中类型为varchar(max)的列中。然而,我想知道这根绳子是否会变得太大。

假设每个条目有一个数字,忽略空格和"s",理论上我可以在一个条目中存储大约46000个位置的距离(2 147 483 647的平方根-varchar(max)的大小)。在我看来,这就足够了。

这种方法有什么严重的缺点吗?最好将距离存储在一个额外的表中,其中每行包含两个位置之间的一个距离?

如果我们的应用程序的100个用户分别存储了1000个位置,那么在这样的表中我将有100000000=100*1000*1000行。。。。

您可以将数组压缩为blob字段。这将是最有效的。与其序列化为字符串,不如在读取时压缩为字节数组,反之亦然。

最新更新