1

私は次の設定をしています:
CFアイテムとCFキーワードを持っています。
各アイテムには、列に格納された0個または1個以上のキーワードがあります。
各キーワードには、列に格納された1つ以上の項目があります。
次のようになります。

    アイテム{
        dl {name => DELL6400、keyword:1 => computer、keyword:2 => DELL、keyword:3 => topseller}
        hp {name => HP12345、keyword:1 => computer、keyword:2 => HP}
        いいえ{名前=>Nokia8210、keyword:1 =>電話、keyword:2 => NOKIA}
    }

    //ここでは、アイテムのキーのみを保存します。
    //実際には、ほとんどのアイテム列を非正規化しました
    キーワード{
        コンピューター{ウェブページ=>www.domain.com/computer、item:dl => dl、item:hp => hp}
        DELL {webpage => www.domain.com/dell、item:dl => dl}
        トップセラー{ウェブページ=>www.domain.com/top、item:dl => dl}
        HP{ウェブページ=>www.domain.com/hp、item:hp => hp}
        NOKIA {webpage => www.domain.com/nokia、item:no => no}
        電話{ウェブページ=>www.domain.com/phone、item:no=>いいえ}
    }

新しいアイテムを追加するとき、必要に応じてキーワードに「ウェブページ」列を追加しています。
アイテムを削除するときは、列「item:xx」も

削除します。また、nokiaアイテム「no」を削除した場合など、「空の」キーワードを回避する方法についても質問します。

    キーワード{
        ..。
        NOKIA{ウェブページ=>www.domain.com/nokia}
        電話{ウェブページ=>www.domain.com/phone}
    }

スライスアイテム:*を数えることができますが、結果整合性のため、これはおそらく間違ったアプローチになります。

4

2 に答える 2

1

キーワードCFにCounterColumn(http://wiki.apache.org/cassandra/Counters)を追加できます。キーワードにアイテムを追加するときにインクリメントし、削除時にデクリメントします。

keywords{
    computer  { webpage => www.domain.com/computer , count => 2 , item:dl => dl , item:hp => hp }
    ....
}

count == 0の行を読み取るときは、削除されたものとして扱います。count == 0の行を読み取る場合は、同時追加操作が発生する可能性があるため、実際には「webpage」列を削除しないでください。

于 2012-06-01T06:49:26.707 に答える
0

これは興味深いことですが、私は他の方法についても考えています-「ウェブページ」のことを非正規化するために、例えば:

[コード]

keywords{
    computer  { webpage:dl => www.domain.com/computer , item:dl => dl ,
            webpage:dl => www.domain.com/computer ,  item:hp => hp }
    DELL      { webpage:dl => www.domain.com/dell ,     item:dl => dl }
    topseller { webpage:dl => www.domain.com/top ,      item:dl => dl }
    HP        { webpage:hp => www.domain.com/hp ,       item:hp => hp }
    NOKIA     { webpage:no => www.domain.com/nokia ,    item:no => no }
    phone     { webpage:no => www.domain.com/phone ,    item:no => no }
}

[/コード]

このような場合、item:xxを削除すると、webpage:xxも削除され、フィールドがない場合は行が自動的に削除されます(ゴースト)。しかし、これがこんなに素晴らしいアイデアかどうかはまだわかりません。

于 2012-06-01T07:19:13.280 に答える