我會的任何意見,任何有關於感激:在varchar字段數據庫中的VARCHAR字段,其存儲的GPS位置
你怎麼您有效地存儲GPS(或浮點數),可索引。
背景:
我們開發出能夠有效地與元數據的集合一起存儲任何類型的文件內容管理系統。此文件/元數據存儲如下:
file_table metadata_table
---------- --------------
file_id -> file_id (number)
file_name metadata_id (number)
file_location metadata_value (varchar)
...etc
我被要求提供地理標記文件(即存儲GPS座標作爲元數據)的支持。另外,我們還希望支持具有多個地理標籤的文件。
現在就我看,我有幾個選擇:
1)相同metadata_value VARCHAR(如'52 0.4343242,-1.32324' )內存儲經度和緯度。
如何查詢此字符串?有什麼聰明的我可以用sql做什麼,這將允許我查詢字符串的「組件」?我可以將座標存儲爲一個xml字符串 - 這會有幫助嗎?這如何有效地索引?
2)在metadata_table中將經度和緯度存儲爲單獨的行。
該解決方案解決了支持更容易查詢的問題(以犧牲複雜性和不便性爲代價,特別是當我將存儲多個地理標籤時),但是我仍然面臨索引問題。
查詢時,我可以將varchars轉換爲浮點數,但是我不確定這是否會忽略metadata_table.metadata_value上的索引,而是執行表掃描。
3)創建專門的浮點字段來存儲GPS數據。
這是最不理想的選擇,因爲它違背了設計的粒度,爲特定元數據添加數據庫字段。並非所有文件都會存儲GPS數據。
任何幫助或建議表示讚賞。
to_number(instr ...在metadata_value沒有存儲經度和緯度時會產生錯誤,請記住這個字段是以通用的方式使用的,所以它應該能夠存儲不同的數據,我認爲它幾乎是不可能在統一存儲時對經度和緯度進行索引 – tuinstoel 2009-03-06 10:00:03
好點也可能意味着僅僅執行索引的substr部分也是無效的也許只是創建經緯度數據和索引的實體化視圖,選項 – Alkini 2009-03-06 14:44:34