我正在开发一个车队调度应用程序,并寻找一种有效的方法来存储地理位置之间的距离。
应用程序代码将矩阵作为二维数组 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)
类型的列中。但是,我想知道这个字符串是否会变得太大。
假设每个条目都有一个数字而忽略了空格和“\ n”s,理论上我可以存储大约46000个位置的距离(平方根2 147 483 647 - varchar(max)
的大小)在一个条目中。在我的背景下这就足够了。
这种方法有任何严重的缺点吗?将距离存储在一个额外的表中会更好吗,每个行在两个位置之间包含一个距离?
如果我们的应用程序的100个用户分别存储了1000个位置,那么在这样的表格中我会有100000000 = 100 * 1000 * 1000行....
答案 0 :(得分:1)
您可以将数组压缩为blob字段。那将是最有效的。而不是序列化为字符串,压缩为字节数组,反之亦然。