5

Ohm&Redisを使用する場合のコレクションとセットまたはリストの違いは何ですか?

Ohmの例のいくつかは、コレクションではなくリストを使用しています(リストドキュメント自体を参照)。

class Post < Ohm::Model
  list :comments, Comment
end

class Comment < Ohm::Model
end

この設計を選択する理由は何ですか?

4

2 に答える 2

15

Ariejanの答えを拡張するためだけに。

  • リスト-注文済み。Rubyの配列に似ています。キューに使用され、アイテムの順序を維持します。

  • セット-順序付けされていないリスト。Rubyの配列と同様に動作しますが、ルックアップが高速になるように最適化されています。

  • コレクション-参照と組み合わせて使用​​され、関連付けを表す簡単な方法を提供します。

本質的に、コレクションと参照は、関連付けを処理するための便利な方法です。したがって、この:

class Post < Ohm::Model
  attribute :title
  attribute :body
  collection :comments, Comment
end

class Comment < Ohm::Model
  attribute :body
  reference :post, Post
end

次のショートカットです。

class Post < Ohm::Model
  attribute :title
  attribute :body

  def comments
    Comment.find(:post_id => self.id)
  end
end

class Comment < Ohm::Model
  attribute :body
  attribute :post_id
  index :post_id

  def post=(post)
    self.post_id = post.id
  end

  def post
    Post[post_id]
  end
end

デザイン選択の理論的根拠に関する元の質問に答えるために、コレクションと参照が導入され、関連付けを表すための単純なAPIが提供されました。

于 2011-06-08T16:08:03.887 に答える
5

リスト-要素の順序付きリスト。リスト全体をリクエストすると、リストに配置した方法でアイテムが並べ替えられます。

コレクション-要素の順序付けられていないコレクション。コレクションをリクエストすると、アイテムがランダムな順序で表示される場合があります(順序なしなど)。**

あなたの例では、コメントが並べられています。

**ランダムは順序付けされていないものと同じではないことは知っていますが、それは要点を示しています。

于 2011-01-24T15:27:55.990 に答える