0

フリート スケジューリング アプリケーションを開発しており、地理的な場所間の距離を保存する効果的な方法を探しています。

アプリケーション コードは、2 次元配列として行列にアクセスしますdouble[,]

マトリックスを永続化するために、現在、マトリックスを文字列としてシリアル化しています。シリアル化すると、次のようになります。

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

次にvarchar(max)、SQL Server 2008 データベースの type の列に格納されます。ただ、この紐が大きくなりすぎないかなぁ。

各エントリに 1 桁の数字があり、空白と "\n" を無視すると仮定すると、理論的には、約 46000 の場所 (2 147 483 647 の平方根 - のサイズvarchar(max)) の距離を 1 つのエントリに格納できます。私の文脈ではこれで十分でしょう。

このアプローチには重大な欠点がありますか? 各行に 2 つの場所の間の距離が 1 つ含まれる別のテーブルに距離を格納する方がよいでしょうか?

私たちのアプリケーションの 100 人のユーザーがそれぞれ 1000 の場所を保存した場合、そのようなテーブルには 100000000 = 100 * 1000 * 1000 行が含まれます....

4

1 に答える 1

1

配列を blob フィールドに圧縮するだけです。それが最も効率的でしょう。文字列にシリアル化する代わりに、バイト配列に圧縮し、読み取り時にその逆を行います。

于 2012-10-13T07:21:28.143 に答える