我有几个实体的属性编号在40-50之间。所有这些属性都没有索引。这些实体是更大的实体组树结构的一部分,并且始终使用其密钥进行检索。没有任何属性(键属性除外)被索引。我正在使用Objectify与BigTable上的实体合作。
我想知道从BigTable读取或写入具有大量属性的实体是否会对性能产生影响。
由于这些大型实体仅由其键提取,因此从不参与任何查询,我想知道是否应将序列化实体pojo并存储为blob。使用@Serialized注释在Objectify中执行此操作非常简单。我理解通过序列化我的实体并将其存储为blob,我将blob渲染为对任何其他程序或非Java代码完全不透明,但这不是一个问题。
我还没有对性能差异进行基准测试,但在此之前,我想知道是否有人之前已经这样做过,或者有任何建议/意见要分享。
答案 0 :(得分:3)
对于多个属性总是有开销。并且序列化不会有太大帮助,因为它只是将处理从一个点移动到另一个点。
我拥有最多25个属性的实体,我几乎在按键的所有请求中获取它们。性能差异对我来说可以忽略不计。几乎没有 - 1毫秒。性能问题通常发生在查询部分。 无索引属性的数量在性能上不算多少。由于索引的修改,索引属性可以显着延迟put。
如果必须,如果您不需要立即将属性分解为多个表,则可以将属性分解为多个表。
答案 1 :(得分:2)
纯粹基于我所知道的它是如何工作的,我会说拥有一堆未经索引的属性与将整个事物序列化没有任何不同。