Appengine搜索API vs数据存储

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

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

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

  • 是否有任何优势,以使用Search API与使用数据存储为我的查询(根据上面的报价,这似乎是合理使用一个其他)? 就我而言,最终用户必须能够搜索,更新现有条目并创建新实体。 例如,如果我的应用程序是书店,则用户必须能够添加新书籍,向现有书籍添加评论,搜索特定书籍。
  • 我的数据结构是这样的,内容将由最终用户提供。 文档vs数据存储实体:哪个更新更便宜? $$等
  • 他们可以相互补充:数据存储和搜索API吗? 有什么优势? 为什么有人会考虑配对呢? 成本是多少?

  • 关键的区别在于,使用数据存储区不能在实体内搜索。 如果您有一本名为“战争与和平”的书,如果用户在搜索框中键入“战争和平”,则无法找到它。 与评论等相同因此,它不是您的选择。


    其他一些信息:

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

  • 搜索API最严重的一个是最终一致性,如下所述:https://developers.google.com/appengine/docs/java/search/#Java_Consistency

    这意味着当您使用Search API添加或更新记录时,它可能不会立即反映更改。 想象一下,用户上传图书或更新其帐户设置的情况,并且没有任何更改,因为更改尚未传送到所有服务器。

    我认为搜索API只适用于一件事:搜索。 它基本上充当数据存储中数据的搜索引擎。

    所以我的建议是将数据保存在数据存储中,用户期望立即得到结果,并使用搜索API来搜索用户不会期望得到即时结果的数据。

    链接地址: http://www.djcxy.com/p/57833.html

    上一篇: Appengine Search API vs Datastore

    下一篇: Big datastore reads