如何在 Google App Engine 上建立社交新闻源模型

发布于 2024-08-25 13:27:40 字数 548 浏览 8 评论 0原文

我们想要实现一个“新闻提要”,用户可以在其中看到消息 由她的朋友广播,以最新消息优先排序。但是 Feed 应反映她的朋友列表中的变化。 (如果她添加新的 朋友们,来自他们的消息应该包含在提要中,如果 她删除了朋友,他们的消息不应包含在内。)如果我们使用 pubsub-test 示例并将收件人列表附加到每封邮件 这意味着当用户 连接和断开朋友。

我们首先使用传统的 RDBMS 建模发布-订阅“扇出” 思维。一开始它似乎有效,但是后来,由于 IN 运算符 就这样工作,我们很快意识到我们无法继续下去 那条路。我们找到了 Brett Slatkin 去年的演讲 Google I/O,我们已经看了几次,但还不清楚 我们如何使用“动态”收件人列表来做到这一点。

我们需要的是一些关于在建模时如何“思考”的提示。

We want to implement a "News feed" where a user can see messages
broadcasted by her friends, sorted with newest message first. But the
feed should reflect changes in her friends list
. (If she adds new
friends, messages from those should be included in the feed, and if
she removes friends their messages should not be included.) If we use
the pubsub-test example and attach a recipient list to each message
this means a lot of manipulation of the message recipients lists when users
connect and disconnect friends.

We first modeled publish-subscribe "fan out" using conventional RDBMS
thinking. It seemed to work at first, but then, since the IN operator
works the way it does, we quickly realized we couldn't continue on
that path. We found Brett Slatkin's presentation from last years
Google I/O
and we have now watched it a few times but it isn't clear to
us how to do it with "dynamic" recipient lists.

What we need are some hints on how to "think" when modeling this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半暖夏伤 2024-09-01 13:27:40

粘贴我在 Google App Engine 的 Google 网上论坛中获得的针对此问题的答案 http://groups.google.com/group/google-appengine/browse_thread/thread/09a05c5f41163b4d# 作者:Ikai L (Google)

这里有一些想法:

  • 删除好友是常见事件吗?类似地,添加
    朋友共同的事件? (都是相对的,
    相对于新闻源的“读取”)

  • 据我所知,使大量读取规模化的唯一方法是写入
    数据多次出现在人们的
    溪流。 Twitter这样做,从何而来
    我记得,使用“最终
    一致”模型。这就是为什么你的
    feed 多次不会更新
    当他们承受重压时的分钟
    加载。但普遍的共识是,
    是一个关系型的、规范化的
    模型根本行不通。

  • Jaiku 引擎是开源的,供您学习:
    http://code.google.com/p/jaikuengine
    这在 App Engine 上运行希望这些
    在您考虑设计时提供帮助。

Pasting the answer I got for this question in the Google Group for Google App Engine http://groups.google.com/group/google-appengine/browse_thread/thread/09a05c5f41163b4d# By Ikai L (Google)

A couple of thoughts here:

  • is removing of friends a common event? similarly, is adding of
    friends a common event? (All relative,
    relative to "reads" of the news feed)

  • From what I remember, the only way to make heavy reads scale is to write
    the data multiple times in peoples'
    streams. Twitter does this, from what
    I remember, using a "eventually
    consistent" model. This is why your
    feed will not update for several
    minutes when they are under heavy
    load. The general consensus, though,
    is that a relational, normalized
    model simply will not work.

  • the Jaiku engine is open source for your study:
    http://code.google.com/p/jaikuengine.
    This runs on App Engine Hope these
    help when you're considering a design.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文