2012-10-19 13 views
13

Trelloはどのようにデータ(カード)をMongoDBに保存しますか?TrelloはどのようにデータをMongoDBに保存しますか? (ボードごとのコレクション?)

私は(How does Trello show history so quickly?)彼らのアクションコレクションが最大のものであると読んでいます。だから私は彼らが1枚の巨大なコレクションにすべてのカードを保管していないと仮定します。

唯一の他の論理的な解決方法は、ボードごとまたはユーザーごとのコレクションのようです。しかし、彼らにはたくさんのユーザーがいます。コレクションの数には制限があり、多くのコレクションを使用することについてはアドバイスしている人もいます(http://www.mongodb.org/display/DOCS/Using+a+Large+Number+of+Collections)。

私はTrelloチームの誰かがこれに答えてくれることを願っています。この種の問題を一般のコミュニティからも解決するためのアイデアを得ることを願っています。

+2

なぜそれらを1つのコレクションにまとめて保存し、このようにクエリを実行すると断片化するのですか。応答時間が一貫していて、長い間、何十億行もの完全にスケーラブルなコレクションが得られました。また、ロックがdbレベルであることを覚えておく必要があります。何かの倍数を使用する場合、スネーゼは複数のDBを使用することになります。 – Sammaye

+0

@Sammaye私は「彼らが何を質問するのか」という部分を理解していません。あなたはボード内のすべてのカードを見ることができ、カード名で全ボードを検索することができます。シャーディングの基本原理を理解していますが、あなたが言っていることを達成する方法を理解できません。もう少し説明してください。 – Ben

+4

私は今10分間trelloを使用していますが、私がこのサイトを設計していたら、 'user'、' board'、 'card'の3つのコレクションがあることに気付きました。ボードは多くのユーザーがアクセスできる必要があるので、私は 'board_id'に' board'を書きます。このようにして({_id、username、email} 'に分割されている)ユーザーを照会し、スケールアウトするすべてのボードを取得します。ボードのリストは、ボードの行には埋め込まれますが、カードには埋め込まれません。カードはおそらくboard_idとtimestamp、おそらくuser_idで断片化されるでしょう。それは私の最初の10分間の一見 – Sammaye

答えて

13

Trelloはすべてのカードを1つのコレクションに保存します。コレクションは、カードのボードIDで分割されます。

+0

どの時点で知っていますかシャーディングは必要でしょうか?私はMongoDBには比較的新しいので、スケーリングする必要のあるアプリを作っています。 – MadPhysicist

関連する問題