cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David McNelis <dmcne...@agentisenergy.com>
Subject Re: Schema Design
Date Wed, 26 Jan 2011 21:12:39 GMT
I would say in that case you might want  to try a  single column family
where the key to the column is the system name.

Then, you could name your columns as the timestamp.  Then when retrieving
information from the data store you can can, in your slice request, specify
your start column as  X and end  column as Y.

Then you can use the stored column name to know when an event  occurred.

On Wed, Jan 26, 2011 at 2:56 PM, Bill Speirs <bill.speirs@gmail.com> wrote:

> I'm looking to use Cassandra to store log messages from various
> systems. A log message only has a message (UTF8Type) and a data/time.
> My thought is to create a column family for each system. The row key
> will be a TimeUUIDType. Each row will have 7 columns: year, month,
> day, hour, minute, second, and message. I then have indexes setup for
> each of the date/time columns.
>
> I was hoping this would allow me to answer queries like: "What are all
> the log messages that were generated between X & Y?" The problem is
> that I can ONLY use the equals operator on these column values. For
> example, I cannot issuing: get system_x where month > 1; gives me this
> error: "No indexed columns present in index clause with operator EQ."
> The equals operator works as expected though: get system_x where month
> = 1;
>
> What schema would allow me to get date ranges?
>
> Thanks in advance...
>
> Bill-
>
> * ColumnFamily description *
>    ColumnFamily: system_x_msg
>      Columns sorted by: org.apache.cassandra.db.marshal.UTF8Type
>      Row cache size / save period: 0.0/0
>      Key cache size / save period: 200000.0/3600
>      Memtable thresholds: 1.1671875/249/60
>      GC grace seconds: 864000
>      Compaction min/max thresholds: 4/32
>      Read repair chance: 1.0
>      Built indexes: [proj_1_msg.646179, proj_1_msg.686f7572,
> proj_1_msg.6d696e757465, proj_1_msg.6d6f6e7468,
> proj_1_msg.7365636f6e64, proj_1_msg.79656172]
>      Column Metadata:
>        Column Name: year (year)
>          Validation Class: org.apache.cassandra.db.marshal.IntegerType
>          Index Type: KEYS
>        Column Name: month (month)
>          Validation Class: org.apache.cassandra.db.marshal.IntegerType
>          Index Type: KEYS
>        Column Name: second (second)
>          Validation Class: org.apache.cassandra.db.marshal.IntegerType
>          Index Type: KEYS
>        Column Name: minute (minute)
>          Validation Class: org.apache.cassandra.db.marshal.IntegerType
>          Index Type: KEYS
>        Column Name: hour (hour)
>          Validation Class: org.apache.cassandra.db.marshal.IntegerType
>          Index Type: KEYS
>        Column Name: day (day)
>          Validation Class: org.apache.cassandra.db.marshal.IntegerType
>          Index Type: KEYS
>



-- 
*David McNelis*
Lead Software Engineer
Agentis Energy
www.agentisenergy.com
o: 630.359.6395
c: 219.384.5143

*A Smart Grid technology company focused on helping consumers of energy
control an often under-managed resource.*

Mime
View raw message