2012-06-26 37 views
1

我一直在寻找GAE的逃生方式,因为数据存储不支持很多我想用它做的事情。Cocuhdb适合这样的查询吗?

所以我看了看CouchDB(其他人),我非常喜欢REST接口和我在Cloudant中找到的托管选项。

但是,对于我所有的使用Google和阅读任何可以找到的文档,我仍然不确定它是否合适。 所以我来这里希望有人可以有更多的见解。

我写的Web应用程序和很多我想做的事情将涉及一个查询,看起来像这样的项目:

找到的多是用户输入经/纬边框内,并在那里开始的所有条目时间小于用户输入时间1,结束时间大于用户输入时间2,并且具有用户输入列表标签中的所有标签。

这甚至不是伪代码,但我希望它是有道理的。

我不只是在寻找“你不能在CouchDB中做到这一点”。某种解释,也许就像“如果你可以没有标签生活,那么你可以做到这一点:”

我想使用Cloudant服务,所以GeoCouch显然没有问题,但他们做了一些应该像lucene一样工作,但这是否意味着查询速度很慢?

正如你所知道的,我有点困惑在这里,所以只是做你最好的整顿我出去,我会greatfull :)

回答

0

没有提到的标签(这本身已经是一个问题) ,你所描述的是一个多维查询:你有几个“坐标”(lat,long,start-time,end-time)并为每个坐标提供一个范围。

CouchDB无法在所有的—上执行多维查询,您只能在一个坐标上获得单维查询。

标签当然有可能,但这取决于您是否需要列表中至少有一个标签的文档,或列表中是否有全部标签的文档。第一种情况很简单(使用批量API对每个标签运行一个查询),第二种情况可能需要过多的内存(如果文档有N个标签,则需要发送2个标签集才能匹配涉及它的所有可能的标签组合,因此您应该在文档中的标签数量或查询中的标签数量上设置上限。

Lucene确实允许基于多维和基于关键字的查询,但我无法保证其性能。

+0

我得到了我正在寻找的东西。只是在正确的方向推动。 Cloudant搜索似乎正是我需要的。现在我只需要弄清楚“social-auth”是否只能是oauth,或者我是否也可以使用openid,但那是另一个问题。 –