谷歌应用引擎项目/交易数据模型

2024-04-19 04:56:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从事一个GAE Python项目,该项目包含项和项上的事务。你知道吗

起初,我们尝试使用带有引用属性的项类和事务类,但这会使查询复杂很多。你知道吗

因此,我们切换到一个多功能版本,事务数据直接存储在项中,这导致很多属性没有被使用,因为不是所有的项都与事务有关。你知道吗

我希望它能加速应用程序,但这是最好的方法吗?你知道吗

知道:

  • 我们希望有很多交易和更多的项目。你知道吗
  • 我们需要检查事务状态(实际存储在项目的状态中)。你知道吗
  • 每个项目只能有一个事务,但有许多不同类型的事务。你知道吗

有更好的解决办法吗?你知道吗

编辑:

问题是,我主要使用事务属性查询项目,但一次最多只能查询2个where子句,而且我经常更新事务。你知道吗

实际上我有这样的东西:

类MyItem(数据库模型)地址:

owner = db.ReferenceProperty(MyUser)  
descr = db.StringProperty()  

status = db.IntegerProperty()  # contains item status / transaction status

tx_actor = db.emailProperty()
tx_token = db.StringProperty()
latest_tx_date = db.DateTimeProperty()

Tags: 数据项目方法版本应用程序db属性状态
1条回答
网友
1楼 · 发布于 2024-04-19 04:56:07

由于它是一个1对1的映射,它归结为您需要查询的项或事务的属性的数量-这些属性需要被索引,以及您编写项或事务的频率。你知道吗

可以合并它们的示例: -您很少编写合并的项目/事务对象。 -在查询一小部分属性时,许多属性不需要索引。 -当您进行查询时,通常同时需要项目和事务。你知道吗

合并它们是个坏主意的例子: -您的项目有许多索引属性,但您的事务只有很少的索引属性。但您需要经常更新事务。在这种情况下,最好将它们分开,因为每次编写事务时,都会产生更新项目索引的所有写入成本。你知道吗

另一种选择是,如果不需要查询事务,则将事务存储为JSON编码,然后不需要预先定义所有属性。您还可以使用Expando类。你知道吗

为了得到更好的答案,最好张贴一些示例,说明您的项目/事务是什么样子的,以及您希望运行的查询类型。你知道吗

相关问题 更多 >