我会的任何意见,任何有关于感激:在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