Python Google App Engine上论坛应用程序的数据建模建议

Python Google App Engine上论坛应用程序的数据建模建议,python,google-app-engine,data-modeling,Python,Google App Engine,Data Modeling,我正在Google App Engine上编写一个简单的类似论坛的应用程序,并试图避免可伸缩性问题。我不熟悉这种非RBDM方法,我希望从一开始就避免陷阱。 论坛的设计非常简单,帖子和回复将是唯一的概念。如果论坛有数百万个帖子,那么解决这个问题的最佳方法是什么 迄今为止的模型(从无用属性中剥离): 拆分模型,我认为速度更快,因为它在检索“所有帖子”时查询的项目更少: 这是RDBMS世界中的多对一关系,是否应该使用ListProperty?如果是,怎么做 编辑: Jaiku用的是这样的东西 clas

我正在Google App Engine上编写一个简单的类似论坛的应用程序,并试图避免可伸缩性问题。我不熟悉这种非RBDM方法,我希望从一开始就避免陷阱。
论坛的设计非常简单,帖子和回复将是唯一的概念。如果论坛有数百万个帖子,那么解决这个问题的最佳方法是什么

迄今为止的模型(从无用属性中剥离):

拆分模型,我认为速度更快,因为它在检索“所有帖子”时查询的项目更少:

这是RDBMS世界中的多对一关系,是否应该使用ListProperty?如果是,怎么做

编辑:

Jaiku用的是这样的东西

class StreamEntry(DeletedMarkerModel):  
...  
    entry = models.StringProperty()     # ref - the parent of this, should it be a comment  
...

首先,为什么不使用
user=db.UserProperty()
而不是
user=db.StringProperty()

第二,我非常确定您应该使用任何可以工作的、更具可读性的工具,并在以后测试性能,原因有三:

  • 亲吻(保持简单)
  • 早期的优化是不好的
  • 你无法改进你无法衡量的东西
  • 因此,当您准备好度量时,就开始优化


    我这么说并不是因为我对RDBMS、SQL DBMS或Google数据存储性能优化一无所知,而是因为我通常从测试中获得关于它的所有知识,这似乎比我预期的更违背先前的假设。

    您可能想看一看。当然,这是关于PHP的,但它也涵盖了论坛设计的一般概述


    基本上,不要拆分帖子和回复,或者线程和帖子。这将导致以后出现一些非常尴尬的问题。线程只是一篇没有回复任何内容的帖子。

    我知道过早的优化通常是不好的,但我正试图将我的思想集中在这个新的体系结构上,学习最佳实践等等。。。另外,从视图到css,模型设计将在所有方面泄漏,我最好从一开始就正确:)我使用字符串属性,因为db.UserProperty不能保证是静态的,如果用户更改其电子邮件地址,用户实体将不同,而用户id保证是永久的。在我的应用程序中,没有考虑用户更改其电子邮件地址的可能性。关于设计,我的最佳选择是使用你提出的第一个模型。我想你可以回复吗?如果可以的话,这并不是很有效。。。
    class Post(db.Model):  
        user = db.StringProperty() # will be a google account user_id  
        text = db.TextProperty() # the text of the message  
    
    class Reply(db.Model):  
        user = db.StringProperty() # will be a google account user_id  
        text = db.TextProperty() # the text of the message  
        reply_to = db.ReferenceProperty(Post)  
    
    class StreamEntry(DeletedMarkerModel):  
    ...  
        entry = models.StringProperty()     # ref - the parent of this, should it be a comment  
    ...