【问题标题】:Are Google App Engine Java endpoints suitable for storing large datasets?Google App Engine Java 端点是否适合存储大型数据集?
【发布时间】:2014-11-05 12:04:13
【问题描述】:

Google App Engine (GAE) 为开发人员提供了一个平台,可用于向众多用户提供数据。开发者可以在Python, Go, PHP and Java 中对这些端点进行编程。

我希望在 GAE 中创建一个广泛的用户数据库,可以通过 REST 接口访问持久性 Java 应用程序。我知道平台上有support for SQL databases,这是一种传统的解决方案,但我想知道是否可以在 Java 中做同样的事情并利用该语言通过 JDO/JPA 提供的功能,同时仍然提供标准 SQL 的性能和效率。

具体来说,我要问的是 MySQL 中的 TABLE 是否可以像 Java 中的 @PersistenceCapable List<UserData> 一样有效地实现,后者位于这些 GAE 端点之一。

例如,这将导致"SELECT * WHERE _Name EQUALS 'bill'"

final List<User> lMatchingUsers = new List<User>();
for(int i = 0; i < this.getUserList().size(); i++) {
  if(this.getUserList().get(i).getName().equals("bill")) {
     lMatchingUsers.add(this.getUserList().get(i));
  }
}
return lMatchingUsers;

我很难相信后者会如此有效!

【问题讨论】:

    标签: java sql performance google-app-engine endpoint


    【解决方案1】:

    假设您在谈论 Google Cloud Endpoints,它只是为您的应用程序提供 REST API 的服务——它们不提供存储。

    对于 Java,您可以像往常一样编写业务逻辑,然后注释您的类以在您的 REST API 中公开它们。 Cloud Endpoints 将生成您的客户端库(Android、iOS、Javascript),供您远程调用 API 方法。

    如何存储数据取决于您的应用程序 - 即您在 Java 中实现的内容。这可能是 Cloud SQL、Datastore 或在 Compute Engine 实例上运行的其他东西。

    【讨论】:

    • 感谢您的回复,我会尝试进一步澄清问题。我要问的是,JDO/JPA 等持久化方法是否适合所提议的应用程序?
    • 如果它们适用于 App Engine 应用程序,它们就适用于 Cloud Endpoints。我个人不使用 JDO/JPA,因为它们(对我而言)不能很好地映射到 Datastore(我们不使用 SQL)。 Cloud Endpoints 真正在做的是将您的 Java 对象序列化/反序列化为客户端大小的等价物。
    • 好吧,我想知道在使用 JDO/JPA 时与 SQL 等效项相比,我是否会遭受严重的性能损失。当您说它们是否适合 App Engine 应用程序时,您是什么意思?例如,您认为 GAE 是否可以支持社交网络规模的数据存储和性能?
    • “例如,您认为 GAE 是否可以支持社交网络规模的数据存储和性能” — Snapchat 在 App Engine 上运行。
    • 这当然令人鼓舞!您知道此实现是否使用 Java 持久性吗?
    猜你喜欢
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2012-02-27
    • 2013-06-25
    相关资源
    最近更新 更多