我需要在Aerospike中保存数据。这个引擎支持'' (' bin'就像记录中的行或字段中的列)。另一方面,我可以将我的记录保存为序列化blob。记录以原子方式从数据库中提取。也就是说,我不需要获取一些列#39;记录,我需要完整记录。
问题是:在性能方面保持此类方案数据的最有效方法是什么?保持其未反序列化并使用' bins'描述所有记录的字段,或将其作为序列化的blob存储在1列中?
答案 0 :(得分:6)
如果您确定唯一的用例是获取完整记录,而不是单个bin,则最好将其存储为单个bin值。 (在内部,多个bin将需要超出大小限制的多个malloc)。事实上,您可以设置命名空间配置选项'single-bin true',这将进一步优化事物。请注意,一旦设置了此配置选项,即使重新启动节点也不会取消设置。如果要更改此配置,则必须清理驱动器。如果命名空间在内存中,显然,此限制不适用。
将来,如果有可能访问垃圾箱的子集,则存储为垃圾箱更好。因为它将节省网络I / O,这将比malloc开销大得多。