incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ryan King <>
Subject Re: Learning-by-doing (also announcing a new Ruby Client Codename: "Greek Architect")
Date Sat, 19 Jun 2010 21:48:59 GMT
On Sat, Jun 19, 2010 at 9:30 AM, Christian van der Leeden
<> wrote:
> Hi Thomas,
>        did you look at cassandra gem from twitter (fauna/cassandra) on github?
> They also use the thrift_client and already have the basic cassandra API accessible.
> I'm also using ruby with cassandra and still need to find a slick way to do the inserts
> and when to update the indexes.

Have you looked at CassandraObject for that?


> If I understood correctly you want to look up a user by name. And you want to have
> the name as row keys where you would find the UID with which you could look up your user?
> From my understanding I would put the index into one row, name it e.g. "user_by_name",
> and insert columns where the column name is the user name and the value of the column
> would be the UUID of the user. Cassandra creates the index on the column names. You can
> efficiently insert new values into this row.
> What do you want to do with the users partitioned by date? Sorted by creation date? Login
> For the cascading deletes: a database would have to remove a record from its index, too.
> In Cassandra you would have to do it yourself..
> Christian
> On Jun 19, 2010, at 3:27 AM, Thomas Heller wrote:
>> Howdy!
>> So, last week I finally got around to playing with Cassandra. After a
>> while I understood the basics. To test this assumption I started
>> working on my own Client implementation since "Learning-by-doing" is
>> what I do and existing Ruby Clients (which are awesome) already
>> abstracted too much for me to really grasp what was going on. Java is
>> not really my thing (anymore) so I began with the Thrift API and Ruby.
>> Anyways back to Topic.
>> This library is now is available at:
>> Since I have virtually no experience with Cassandra (but plenty with
>> SQL) I started with the first use-case which I have programmed a bunch
>> of times before. User Management. I build websites which are used by
>> other people, so I need to store them somewhere.
>> Step #1: Creating Users and persisting them in Cassandra
>> Example here:
>> I hope my rspec-style documentation doesnt confuse too many people
>> since I already have a gazillion questions for this simple, but also
>> VERY common use-case. Since a question is best asked with a concrete
>> example to refer to, here goes my first one:
>> Would any of you veterans build what I built the way I did? (refering
>> to the cassandra design, not the ruby client)
>> I insert Users with UUID keys into one ColumnFamily. I then index them
>> by creating a row in another ColumnFamily using the Name as Key and
>> then adding one column holding a reference to the User UUID. I also
>> insert a reference into another ColumnFamily holding a List of Users
>> partitioned by Date.
>> I'm really unsure about the index design, since they dont get updated
>> when a User row is removed. I could hook into the remove call (like I
>> did into mutations) and cascade the deletes where needed, but 10+
>> years of SQL always want to tell me I'm crazy for doing this stuff!
>> I'd really appreciate some feedback.
>> Cheers,
>> Thomas

View raw message