Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 4层应用程序体系结构-使用noSQL的服务器端API_Google App Engine_Nosql_N Tier Architecture_Architecture - Fatal编程技术网

Google app engine 4层应用程序体系结构-使用noSQL的服务器端API

Google app engine 4层应用程序体系结构-使用noSQL的服务器端API,google-app-engine,nosql,n-tier-architecture,architecture,Google App Engine,Nosql,N Tier Architecture,Architecture,我一直在尝试构建一个使用noSQL数据库运行的服务器端API。我不熟悉应用程序体系结构,所以我想了解一些关于我如何尝试分离层的反馈。我认为让我头疼的一个主要问题是使用noSQL数据库,它消除了必须事先定义数据模型的限制,同时需要对数据执行非规范化例程,以确保可以快速查询数据 我使用了4层: 数据层 接受键控对象 从键提供对象 提供查询中的对象列表 提供键列表中的对象列表 接受已设置关键帧的对象列表 从键中删除对象 基于模型中的定义实现非规范化例程(很多时候,一些对象的一部分被复制到其他对象以

我一直在尝试构建一个使用noSQL数据库运行的服务器端API。我不熟悉应用程序体系结构,所以我想了解一些关于我如何尝试分离层的反馈。我认为让我头疼的一个主要问题是使用noSQL数据库,它消除了必须事先定义数据模型的限制,同时需要对数据执行非规范化例程,以确保可以快速查询数据

我使用了4层:

  • 数据层

    • 接受键控对象
    • 从键提供对象
    • 提供查询中的对象列表
    • 提供键列表中的对象列表
    • 接受已设置关键帧的对象列表
    • 从键中删除对象
    • 基于模型中的定义实现非规范化例程(很多时候,一些对象的一部分被复制到其他对象以加快查询速度,因为noSQL不可能进行连接)
  • 业务层

    • 提供业务逻辑
    • 强制执行权限
  • 模型层

    • 定义已知对象
    • 定义非规范化(将对象的哪些部分复制到其他部分)
    • 定义权限(在什么情况下用户可以访问什么对象)
  • 表示层(RESTful API)

    • 为所有资源/服务提供restful API,包括
      • 访问和修改对象
      • 设置新用户帐户
      • 登录帐户
      • API还需要“做”什么
我有几个关于我如何设置的问题:

1) 我相信定义非规范化的信息(如何以及何时在其他对象中提供某些项目的副本)是模型定义的一部分,因此我有在模型中提供此信息的例程。然而,实际上必须这样做的层是数据层,特别是在保存信息时,因此我将用于实现模型中的非规范化定义的例程放在数据层中。这是正确的吗

2) 类似地,我也在模型中定义了权限(谁可以访问什么信息,在什么状态下)。但是业务层将负责将这些信息传递给RESTAPI,因此这是我拥有强制执行权限的层。我没有强制执行权限的数据层,因为尽管某些用户可能无法直接访问某些数据,但这些数据可能会通过用户执行的其他操作(例如,简单登录将更新该用户的“上次登录时间”)间接修改属性(尽管用户永远无法随意修改该信息)是否正确

3) 这里还有什么我不正确的地方吗?有什么我应该注意的地方吗?或者有什么我应该知道的地方吗

4) 我正在使用google应用程序引擎来实现这一点,python或Java低级api。我是否应该使用一个框架来处理其中的一些问题,特别是非规范化和权限


谢谢

在不知道数据有多复杂的情况下,为什么要将数据层与模型分离?我倾向于将功能添加到我的Google应用程序引擎模型中,以执行他们需要的任何操作,以便从业务层接收数据并将数据发送到业务层

另外,为什么您计划使用低级api而不是持久性帮助器,因为持久性帮助器使持久性像倒下一样容易


我认为你应该后退几步,定义你试图解决的问题,看看谷歌应用引擎内置了什么来解决它。在告诉您如何操作之前,我需要您尝试完成的信息。

在不知道数据有多复杂的情况下,为什么要将数据层与模型分离?我倾向于将功能添加到我的Google应用程序引擎模型中,以执行他们需要的任何操作,以便从业务层接收数据并将数据发送到业务层

另外,为什么您计划使用低级api而不是持久性帮助器,因为持久性帮助器使持久性像倒下一样容易

我认为你应该后退几步,定义你试图解决的问题,看看谷歌应用引擎内置了什么来解决它。在告诉你怎么做之前,我需要你想要完成什么的信息