我有一个用于存储房地产的 NoSQL 系统。
我在每个房子的键值存储中的一条信息是经度
和纬度
。
如果我想检索地理纬度/经度框中的所有房屋,如下面的 SQL:
SELECT * from houses
WHERE latitude IS BETWEEN xxx AND yyy
AND longitude IS BETWEEN www AND zzz
问题:
我如何使用 NoSQL 进行这种类型的检索...仅使用键值存储系统?
即使我可以使用 NoSQL 做到这一点,它是否会更有效率,或者只是回到使用传统数据库更快地检索此类信息?
最佳答案
使用 SQL 或不使用 SQL 都不是问题——严格来说,问题在于您的键上有什么样的索引。 spatial indices ,这是您有效满足查询所需要的,与 Sql 无关,或者更普遍地与关系数据库无关——它们与关系与非关系问题完全正交。不幸的是,我不知道有任何公开可用的 Cassandra 或其他流行的非关系数据库的空间索引系统(事实上,我所熟知的唯一面向 GIS 的数据库引擎是 PostGIS,它恰好是作为强大的开源 PostGres... 关系型;-)。
如果您没有空间索引而只有一个普通索引(例如,一个按纬度排序,然后按经度排序),那么您将不得不扫描具有合适纬度的所有记录,以丢弃那些具有不合适经度的记录 - - 就像关系引擎在相同情况下必须为您做的一样(当您选择几个 BETWEEN
时,它所要做的只是两个字段的简单排序索引,因此约束)。与关系无关……与索引有关;-)。
关于sql - NoSQL:如何根据纬度和经度检索 'house'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796575/