实体中是否有大量属性影响数据存储区的读/写性能?

时间:2010-07-02 13:06:36

标签: google-app-engine database-design performance bigtable objectify

我有几个实体的属性编号在40-50之间。所有这些属性都没有索引。这些实体是更大的实体组树结构的一部分,并且始终使用其密钥进行检索。没有任何属性(键属性除外)被索引。我正在使用Objectify与BigTable上的实体合作。

我想知道从BigTable读取或写入具有大量属性的实体是否会对性能产生影响。

由于这些大型实体仅由其键提取,因此从不参与任何查询,我想知道是否应将序列化实体pojo并存储为blob。使用@Serialized注释在Objectify中执行此操作非常简单。我理解通过序列化我的实体并将其存储为blob,我将blob渲染为对任何其他程序或非Java代码完全不透明,但这不是一个问题。

我还没有对性能差异进行基准测试,但在此之前,我想知道是否有人之前已经这样做过,或者有任何建议/意见要分享。

2 个答案:

答案 0 :(得分:3)

对于多个属性总是有开销。并且序列化不会有太大帮助,因为它只是将处理从一个点移动到另一个点。

我拥有最多25个属性的实体,我几乎在按键的所有请求中获取它们。性能差异对我来说可以忽略不计。几乎没有 - 1毫秒。性能问题通常发生在查询部分。 无索引属性的数量在性能上不算多少。由于索引的修改,索引属性可以显着延迟put。

如果必须,如果您不需要立即将属性分解为多个表,则可以将属性分解为多个表。

答案 1 :(得分:2)

纯粹基于我所知道的它是如何工作的,我会说拥有一堆未经索引的属性与将整个事物序列化没有任何不同。