On Thu, Sep 27, 2012 at 7:35 PM, Marcelo Elias Del Valle <mvall...@gmail.com> wrote: > > > 2012/9/27 Aaron Turner <synfina...@gmail.com> >> >> How strict are your security requirements? If it wasn't for that, >> you'd be much better off storing data on a per-statistic basis then >> per-device. Hell, you could store everything in a single CF by using >> a composite row key: >> >> <devicename>|<stat type>|<instance> >> >> But yeah, there isn't a hard limit for the number of CF's, but there >> is overhead associated with each one and so I wouldn't consider your >> design as scalable. Generally speaking, hundreds are ok, but >> thousands is pushing it. > > > Aaron, > > Imagine that instead of using a composite key in this case, you use a > simple row key "instance_uuid". Then, to index data by devicename | > start_type|instance you use another CF with this composite key or several > CFs to index it. > Do you see any drawbacks in terms of performance?
Really that depends on the client side I think. Ideally, you'd like to have the client be able to be able to directly access the row by name without looking it up in some index. Basically if you have to lookup up the instance_uuid that's another call to some datastore which takes more time then generating the row key via it's composites. At least that's my opinion... Of course there are times where using an instance_uuid makes a lot of sense... like if you rename a device and want all your stats to move to the new name. Much easier to just update the mapping record then reading & rewriting all your rows for that device. In my project, we use a device_uuid (just a primary key stored in an Oracle DB... long story!), but everything else is by name in our composite row keys. -- Aaron Turner http://synfin.net/ Twitter: @synfinatic http://tcpreplay.synfin.net/ - Pcap editing and replay tools for Unix & Windows Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety. -- Benjamin Franklin "carpe diem quam minimum credula postero"