Google App Engine ndb动态索引替代方案

时间:2013-11-24 19:50:56

标签: database google-app-engine indexing

背景

我正在创建一个应用程序,允许用户使用自定义属性(和属性类型)定义自己的数据集。

用户可以在与应用程序交互时定义具有以下列的数据集:

  • 名称:字符串
  • 地点:Geo
  • 重量:浮
  • 备注:文字(未编入索引)
  • 多少:int

等...

虽然对物业总数(例如10-20或其他)会有限制,但对物业类型没有限制。

Google的ndb数据存储区允许这种情况发生,并且会自动为涉及相等运算符和无排序组合的搜索自动生成简单索引,或仅为排序。

理想

  • 多种排序
  • 平等和排序
  • 不平等的组合

我正在尝试确定是否应该使用NDB,或者切换到其他东西(SQL似乎非常昂贵,相对而言,这是我犹豫不决的原因之一)。

对于多种类型,我可以编写查询第一个的服务器端代码,然后通过第二个,第三个等在内存中进行排序。我还可以查询数据并在客户端进行排序。 / p>

对于不等式的组合,我可以做同样的事情(或多或少)。

这些解决方案显然不具备性能,如果有大量项目与第一个查询匹配,则无法扩展。

像Kinvey这样的BaaS提供商(除非我错误地运行在GAE上)使用无模式数据库,允许您动态创建它们并对数据进行复杂,复杂的查询。

完整性检查:

试图强迫NDB进入我想要的东西似乎是一个坏主意,除非有一些我忽视(可能)的东西会使这更加可行。我的解决方案可行,但不能很好地扩展(虽然我不知道它有多远。它们能用于10k对象吗?100k?1M?)。

我调查的选项:

  • Kinvey,根据用户和存储的数据收费(因为他们刚刚更改了定价模式),最终花费了不少。

  • Stackmob也很不错,但是云代码非常昂贵(200美元/月),托管等等都需要花费更多。任务成本更高。价格看起来很高。

问题:

我做了很多调查,但只有这么多选项。假设我的理智检查是正确的(如果不是,并且内存操作是可扩展的,那就太棒了!),还有其他选择便宜吗(一旦应用程序扩展,BaaS提供商会变得相当昂贵) ,快速,易于扩展,可以解决我的问题?能够轻松(并且便宜地)在云中运行自定义代码并且API调用和带宽成本几乎为零是我调查GAE(完全托管提供商,我想要在云中的任何代码等)的原因之一

0 个答案:

没有答案