NoSQL:如何根据经纬度检索“房子”?

2024-04-21

我有一个用于存储房地产的 NoSQL 系统。

我在每栋房子的键值存储中拥有的一条信息是longitude and latitude.

如果我想检索地理纬度/经度框中的所有房屋,如下面的 SQL:

SELECT * from houses 
WHERE latitude IS BETWEEN xxx AND yyy
AND longitude IS BETWEEN www AND zzz

问题:

  1. 我如何使用 NoSQL 进行这种类型的检索......仅使用键值存储系统?

  2. 即使我可以使用 NoSQL 来做到这一点,它是否会更高效,或者只是回到使用传统数据库来更快地检索此类信息?


有 SQL 或无 SQL 都不是问题——严格来说,问题在于你的键上有什么样的索引。空间指数 http://en.wikipedia.org/wiki/Spatial_index,这是您需要有效满足查询的内容,与 Sql 无关,或者更一般地说,与关系数据库无关——它们与关系与非关系问题完全正交。不幸的是,我不知道有任何公开可用的 Cassandra 或其他流行的非关系数据库的空间索引系统(事实上,我熟悉的唯一面向 GIS 的数据库引擎是 PostGIS,它恰好是作为强大的开源 PostGres...is关系;-)。

如果您没有空间索引,而只有一个普通索引(例如,按纬度排序,然后按长排序),那么您必须扫描具有合适纬度的所有记录,丢弃那些具有不合适长的记录 - 就像在相同的情况下,关系引擎必须为您做事(当您选择几个BETWEENs 并且它所要做的只是两个字段的普通排序索引,因此受到限制)。与关系性无关...与索引有关;-)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NoSQL:如何根据经纬度检索“房子”? 的相关文章

随机推荐