1

コメントをcassandraに保存する良い方法を探しています。誰かがコメントを保存するための優れたCassandraデータモデルを提供してくれますか?

データモデルでは、phpcassaを使用してこれらのコメントの特定の数を取得できるはずです。

これが私の考えでした:

Comments = {
    CommentId1:{
        CommentAuthor,
        Content,
        Timestamp
    },
    CommentId2:{
        CommentAuthor,
        Content,
        Timestamp
    }
    ...
}

CommentsLine = {
    EntryId1:{
        CommentId1: timestamp,
        CommentId2: timestamp,
        CommentId3: timestamp,
        ...
    }
    ...
}

しかし、これがより良い方法かどうかはわかりません。助けてくれてありがとう。

4

2 に答える 2

2

あなたの解決策はかっこいいようですが、コメントを注文できるようなタイムスタンプを持つキーをCFCommentsLineに保存する方が良いかもしれません。

CommentsLine = {
    EntryId1:{
        timestamp: CommentId1 ,
        timestamp: CommentId2 ,
        timestamp: CommentId3 ,
        ...
    }
    ...
}
于 2012-07-12T15:18:42.920 に答える
1

私はこの問題を一度解決しました。これが私がこの問題を解決した方法です。各行がコメントのIDである個別のColumnFamilyコメント(私のIDは{親投稿ID}-{コメント作成者ユーザーID}-{コメント投稿タイムスタンプ}の形式でした)、その後、作成者、コメント、投稿を含む列があります日付など

あなたはあなた自身のフォーマットを持つことができ、それらを個々の列ファミリーに分けることはそれらが確実に配布されるようにします。

リンクが完了したら、各コメントをその親にリンクする必要があります。これには、{Posted Timestamp}-> {{Comment author user ID}およびその他のメタデータをJSONとして持つことができる列名のコメントを保持することでリンクできます(これは完全に具体的でした)私のシナリオでは、あなたはあなたが好きなことを考える必要があります)。

誰かがあなたが生成できるコメントがPHPからマイクロタイムで投稿されると、それに応じてcassandraに挿入されます。この形式により、Cassandraはコメントをリングで配布し、投稿の行は最小限に抑えられ、必要な情報のみが含まれるようになります。

コメントを再度ロードするには、列を選択してから、コメント列ファミリーに対してMultiGet呼び出しを実行する必要があります。

于 2012-07-12T15:07:04.437 に答える