0
我正在開發車隊調度應用程序,並尋找一種有效的方法來存儲地理位置之間的距離。將距離矩陣存儲爲SQL Server數據庫中的VarChar(最大值)
應用程序代碼訪問矩陣作爲二維數組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數據庫中的列。但是,我想知道這個字符串是否會變得太大。
假設每個條目都有一個數字並忽略空格和「\ n」,理論上我可以將大約46000個位置(2 147 483 647的平方根 - 大小爲varchar(max)
)的距離存儲在一個位置條目。這在我的情況下就足夠了。
這種方法有什麼嚴重缺點嗎?將距離存儲在一個額外的表中,每行包含兩個位置之間的距離會更好嗎?
如果100個用戶我們的應用程序分別存儲1000點的位置,我會在這樣一個表億= 100 * 1000 * 1000行....
爲什麼你認爲你需要以這種非關係的方式存儲數據? (關係規則1:列中沒有數組,只有標量)。它使得以任何效率查詢矩陣內容幾乎是不可能的。 – RBarryYoung
我不需要查詢矩陣。如果用戶使用應用程序,則所有距離一次加載到double [,] - 數組中。我不想選擇單個距離,只是整個矩陣,這確實是必要的。但是,如果某些距離已更新,則必須重新構建整個字符串。 – curiosity
我不明白爲什麼每次單個值更改時都要重建整個編碼字符串?這看起來非常低效,並且完全可以避免(無論如何,在數據庫中),通過簡單地不以這種方式編碼事物。這仍然會引發一個問題:你爲什麼認爲你需要這樣做? – RBarryYoung