Appengine Search API vs Datastore

我正在尝试决定是否应将 App-engine Search API 或 Datastore 用于 App-engine Connected Android Project。谷歌文档所做的唯一区别是

...索引搜索可以找到不超过 10,000 个匹配的文档。App 引擎数据存储可能更适合需要检索非常大的结果集的应用程序。

鉴于我已经非常熟悉数据存储:假设我不需要 10,000 个结果,有人会帮我吗?

  • 与使用数据存储进行查询相比,使用是否有任何优势(根据上面的引用,使用其中一个似乎是明智的)?在我的情况下,最终用户必须能够搜索、更新现有条目和创建新实体。例如,如果我的应用是一家书店,则用户必须能够添加新图书、向现有图书添加评论、搜索特定图书。Search API
  • 我的数据结构是这样的,内容将由最终用户提供。文档与数据存储实体:更新哪个更便宜?$$等
  • 它们能否相互补充:数据存储和搜索 API?有什么优势?为什么有人会考虑将两者配对?渔获量/成本是多少?

答案 1

其他一些信息:

  1. 数据存储是一个事务系统,这在许多用例中都很重要。搜索 API 不是。例如,不能在单个事务中将搜索索引中的“删除”和“文档”放在一起。
  2. 数据存储与Cassandra等NoSql数据库有很多共同之处,而搜索API实际上是一个文本搜索引擎,与Lucene非常相似。如果您了解反向索引的工作原理,您将更好地了解搜索 API 的工作原理。
  3. 结合使用数据存储 API 和搜索 API 的一个很好的理由是,数据存储使得执行搜索 API 非常容易处理的某些类型的查询(例如自由文本查询、地理空间查询)变得非常困难。因此,您可以将主要实体存储在数据存储中,但如果您需要以数据存储不允许的方式进行搜索,则可以使用搜索 API。在未来,我认为如果数据存储和搜索API更紧密地集成,那就太好了,例如,通过让您对索引的文本字段进行自由文本搜索,其中应用程序引擎将在后台自动为您创建搜索文档索引。

答案 2

主要区别在于,使用数据存储时,您无法在实体内部进行搜索。如果你有一本名为“战争与和平”的书,如果用户在搜索框中输入“战争和平”,你找不到它。评论等也是如此。因此,它实际上不是您的选择。


推荐