0

我正在 GAE 上构建一个应用程序,当另一个用户执行影响他们的操作时,它需要通知用户。当您的朋友对您的 Facebook 状态发表评论时,现实世界的类比会被提醒。

我了解 Channel API 如何实际实时发送通知,但我试图了解将这些通知存储在数据存储中的最有效方法。理想情况下,我希望通知代码与正在执行的实际事件分离。这是前瞻性搜索的一个很好的用例吗?感觉不太对劲,因为我不需要执行任何类型的搜索,只是:如果您看到新评论,创建一个存储在数据存储区中的新通知,并通过通道 api 推送到客户端,如果他们连接。我基本上需要一个数据库触发器,但我认为 GAE 不支持它。

4

2 回答 2

1

你为什么不想一开始就把事件和它的通知结合起来呢?我认为为了帮助您的用例而知道可能会很有趣:)

如果我必须这样做,我会在任何时候向数据存储写入可能触发事件的内容时启动一个任务队列......这样您就可以进行写入并拥有一个单独的“层”来处理事件。触发器甚至不是一个好的选择,因为您的应用程序必须“轮询”数据库才能将事件推送到用户的 UI。

我认为您的流程(触发事件)不属于数据库,因为它可能还需要数据存储无法提供的业务规则:例如,当用户忽略另一个时,您不应该触发事件。您在数据库系统中放入的业务逻辑越多,维护和扩展恕我直言就越复杂......

于 2013-03-24T13:37:42.640 回答
0

看起来 GAE 确实支持使用hooks模拟数据库触发器。

钩子可以用于

  1. 查询缓存
  2. 审核每个用户的 Datastore 活动
  3. 模仿数据库触发器
于 2013-03-23T18:36:30.883 回答