aws-sdk-ruby AWS :: Record :: Base记录共享同一个域

时间:2011-11-30 09:57:28

标签: ruby amazon-web-services amazon-simpledb

我们正在使用aws-sdk作为ruby,特别是AWS :: Record :: Base。

由于各种原因,我们需要在sdb中将各种对象的记录放在同一个域中。

我们认为我们在这里使用的方法是为每个包含对象名称的对象添加一个属性,然后在从sdb获取对象时将其包含在finder方法的where子句中。

我向读者提出的问题是:

  1. 您对此方法有何看法?

  2. 如何才能最好地实施?如何在不在每个模型中明确定义对象的情况下添加对象中包含的默认属性?覆盖查找或在finder方法中的位置是否足以确保从sdb获取对象包含考虑新默认属性的子句?

  3. 赞赏的想法。

1 个答案:

答案 0 :(得分:1)

  1. 这实际上取决于你的问题,但我发现它有点令人反感。变体记录很好,花花公子,但是当你开始使用苹果和恐龙并且它们没有共同的属性时,这种方法没有我所知道的好处[除了保存你的(看似无意义的)250个SimpleDB域的配额]。如果您的记录中有某些共同点,那么我可以看到这种方法可能有用的地方,但是在Btrieve(通过C联盟实现)中具有变体记录的遗留系统中像我一样伤痕累累的人有一种硬连接的反感这种方法。

  2. 我能想到的最简洁的方法是让你的模型通过继承共享一个共同的父母。然后父母可以知道子类型,并适当地实现查询。但是,此设计绝对不是SOLID而违反了Law of Demeter