You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Kristian Lunde <kr...@gmail.com> on 2009/11/22 23:55:57 UTC
Social network feed/wall question
I am currently building a social network application where one of the
important features is a feed / wall (Something similar to the Facebook
wall). We will have several feeds, one for each profile and one for
each group and so on. I have looked into using Cassandra for storing
this, but I am not sure I am on the right track regarding my "schema".
My thoughs was that the schema would be similar to this
Feed [SuperColumn]
- Row [user id as identifier]
[Columns]
- type
- timestamp
- message
- url
Each user would have his own feed super column and store all feed
items related to him in this super column. I am not sure this is the
best idea, since it creates an insane amount of writes whenever
someone writes to their wall (this will have to write the feed of all
his friends). Also I read in this thread http://www.mail-archive.com/cassandra-user@incubator.apache.org/msg00360.html
that super columns are not suited for > 60k rows in a super column.
What would be the optimal way of storing a set of feeds in cassandra?
Thanks
Kristian
Re: Social network feed/wall question
Posted by Jonathan Ellis <jb...@gmail.com>.
Yes, sort by anything providing time ordering like TimeUUID and then
use get_slice with reversed=True to get the most recent.
On Mon, Nov 23, 2009 at 4:14 AM, Kristian Lunde <kr...@gmail.com> wrote:
> Hi Ian
> Thanks for your answer, I'll have a look at redis. I think it should be
> possible doing this in cassandra if I sort the columns by timeUUID.
> Kristian
> On 22 Nov 2009, at 23:11, Ian Holsman wrote:
>
> One of the problems you may face is that the common operation is 'get last
> X'.
> You might want to look at redis as an alternative as it supports this
> operation natively.
> I'm sure the Cassandra experts can help with your schema to optimize it as
> well
>
> ---
> Sent from my phone
> Ian Holsman - 703 879-3128
> On 23/11/2009, at 9:55 AM, Kristian Lunde <kr...@gmail.com> wrote:
>
> I am currently building a social network application where one of the
> important features is a feed / wall (Something similar to the Facebook
> wall). We will have several feeds, one for each profile and one for each
> group and so on. I have looked into using Cassandra for storing this, but I
> am not sure I am on the right track regarding my "schema".
>
> My thoughs was that the schema would be similar to this
>
> Feed [SuperColumn]
> - Row [user id as identifier]
> [Columns]
> - type
> - timestamp
> - message
> - url
>
> Each user would have his own feed super column and store all feed items
> related to him in this super column. I am not sure this is the best idea,
> since it creates an insane amount of writes whenever someone writes to their
> wall (this will have to write the feed of all his friends). Also I read in
> this
> thread http://www.mail-archive.com/cassandra-user@incubator.apache.org/msg00360.html that
> super columns are not suited for > 60k rows in a super column.
>
> What would be the optimal way of storing a set of feeds in cassandra?
>
> Thanks
> Kristian
>
Re: Social network feed/wall question
Posted by Kristian Lunde <kr...@gmail.com>.
Hi Ian
Thanks for your answer, I'll have a look at redis. I think it should
be possible doing this in cassandra if I sort the columns by timeUUID.
Kristian
On 22 Nov 2009, at 23:11, Ian Holsman wrote:
> One of the problems you may face is that the common operation is
> 'get last X'.
> You might want to look at redis as an alternative as it supports
> this operation natively.
> I'm sure the Cassandra experts can help with your schema to optimize
> it as well
>
>
> ---
> Sent from my phone
> Ian Holsman - 703 879-3128
>
> On 23/11/2009, at 9:55 AM, Kristian Lunde <kr...@gmail.com> wrote:
>
>> I am currently building a social network application where one of
>> the important features is a feed / wall (Something similar to the
>> Facebook wall). We will have several feeds, one for each profile
>> and one for each group and so on. I have looked into using
>> Cassandra for storing this, but I am not sure I am on the right
>> track regarding my "schema".
>>
>> My thoughs was that the schema would be similar to this
>>
>> Feed [SuperColumn]
>> - Row [user id as identifier]
>> [Columns]
>> - type
>> - timestamp
>> - message
>> - url
>>
>> Each user would have his own feed super column and store all feed
>> items related to him in this super column. I am not sure this is
>> the best idea, since it creates an insane amount of writes whenever
>> someone writes to their wall (this will have to write the feed of
>> all his friends). Also I read in this thread http://www.mail-archive.com/cassandra-user@incubator.apache.org/msg00360.html
>> that super columns are not suited for > 60k rows in a super column.
>>
>> What would be the optimal way of storing a set of feeds in cassandra?
>>
>> Thanks
>> Kristian
Re: Social network feed/wall question
Posted by Ian Holsman <ia...@holsman.net>.
One of the problems you may face is that the common operation is 'get
last X'.
You might want to look at redis as an alternative as it supports this
operation natively.
I'm sure the Cassandra experts can help with your schema to optimize
it as well
---
Sent from my phone
Ian Holsman - 703 879-3128
On 23/11/2009, at 9:55 AM, Kristian Lunde <kr...@gmail.com> wrote:
> I am currently building a social network application where one of
> the important features is a feed / wall (Something similar to the
> Facebook wall). We will have several feeds, one for each profile and
> one for each group and so on. I have looked into using Cassandra
> for storing this, but I am not sure I am on the right track
> regarding my "schema".
>
> My thoughs was that the schema would be similar to this
>
> Feed [SuperColumn]
> - Row [user id as identifier]
> [Columns]
> - type
> - timestamp
> - message
> - url
>
> Each user would have his own feed super column and store all feed
> items related to him in this super column. I am not sure this is the
> best idea, since it creates an insane amount of writes whenever
> someone writes to their wall (this will have to write the feed of
> all his friends). Also I read in this thread http://www.mail-archive.com/cassandra-user@incubator.apache.org/msg00360.html
> that super columns are not suited for > 60k rows in a super column.
>
> What would be the optimal way of storing a set of feeds in cassandra?
>
> Thanks
> Kristian