为什么Google App Engine会限制GQL查询?

时间:2008-11-14 06:32:56

标签: google-app-engine

我正在维基百科上阅读App Engine,并遇到了一些GQL限制:

  • 不支持加入

  • 一次只能从一个表中选择

  • 最多可以在WHERE子句中放置一列

这些限制的优点是什么?

这些限制在其他可扩展性优先的地方是否常见?

3 个答案:

答案 0 :(得分:19)

GQL与之交谈的数据存储区是:

  • 不是像MySQL或PostgreSQL这样的关系数据库
  • 是一个面向列的DBMS,名为BigTable

拥有这样的数据库的一个原因是拥有一个可以扩展到数百台服务器的高性能数据库。

GQL不是SQL,它类似于SQL。

以下是一些参考资料:

答案 1 :(得分:4)

我认为答案实际上是与数据存储的基础技术有关,而不是对可用内容的任何限制。谷歌没有使用关系数据库,而是BigTable,他们刚刚添加了一个很好的API,它使用类似SQL的查询来限制那些习惯使用关系数据库的人的学习曲线。对于那些习惯使用ORM的人来说,它会像鸭子一样用水。

答案 2 :(得分:2)

现有答案在高级别问题上做得很好。

另外一个注意事项:你提到的第三个限制实际上并非如此。 GQL查询可以在WHERE子句中包含任意数量的列。有一些警告,但列数没有明确限制。更多:

http://code.google.com/appengine/docs/python/datastore/queries.html