incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hartzman, Leslie" <leslie.d.hartz...@medtronic.com>
Subject RE: Complex JSON objects
Date Tue, 17 Sep 2013 00:30:13 GMT
Thanks to you and Paolo an Edward. You’ve given me something to think about. I’ll just
have to figure out the most reasonable approach for my needs.

Les

From: Laing, Michael [mailto:michael.laing@nytimes.com]
Sent: Wednesday, September 11, 2013 2:39 PM
To: user@cassandra.apache.org
Subject: Re: Complex JSON objects

A way to do this would be to express the JSON structure as (path, value) tuples and then use
a map<json, json> to store them.

For example, your JSON above can be expressed as shown below where the path is a list of keys/indices
and the value is a scalar.

You could also concatenate the path elements and use them as a column key instead. The advantage
there is that you can do range queries against such structures, and they will efficiently
yield subtrees. E.g. a query for "path > 'readings.1.' and path < 'readings.1.\uffff'"
will yield the appropriate rows.

ml

([u'events', 0, u'timestamp'], 1378686742465)
([u'events', 0, u'version'], 0.1)
([u'events', 0, u'type'], u'direction_change')
([u'events', 0, u'data', u'units'], u'miles')
([u'events', 0, u'data', u'direction'], u'NW')
([u'events', 0, u'data', u'offset'], 23)
([u'events', 1, u'timestamp'], 1378686742465)
([u'events', 1, u'version'], 0.1)
([u'events', 1, u'type'], u'altitude_change')
([u'events', 1, u'data', u'duration'], 18923)
([u'events', 1, u'data', u'rate'], 0.2)
([u'readings', 0, u'timestamp'], 1378686742465)
([u'readings', 0, u'value'], 20)
([u'readings', 0, u'rate_of_change'], 0.05)
([u'readings', 1, u'timestamp'], 1378686742466)
([u'readings', 1, u'value'], 22)
([u'readings', 1, u'rate_of_change'], 0.05)
([u'readings', 2, u'timestamp'], 1378686742467)
([u'readings', 2, u'value'], 21)
([u'readings', 2, u'rate_of_change'], 0.05)

On Wed, Sep 11, 2013 at 2:26 PM, Hartzman, Leslie <leslie.d.hartzman@medtronic.com<mailto:leslie.d.hartzman@medtronic.com>>
wrote:
Hi,

What would be the recommended way to deal with a complex JSON structure, short of storing
the whole JSON as a value to a column? What options are there to store dynamic data like this?

e.g.,

{
  “ readings”: [
                {
                       “value” : 20,
                      “rate_of_change” : 0.05,
                      “timestamp” :  1378686742465
                 },
                {
                       “value” : 22,
                      “rate_of_change” : 0.05,
                      “timestamp” :  1378686742466
                 },
                {
                       “value” : 21,
                      “rate_of_change” : 0.05,
                      “timestamp” :  1378686742467
                 }
  ],
  “events” : [
             {
                    “type” : “direction_change”,
                    “version” : 0.1,
                    “timestamp”: 1378686742465
                     “data” : {
                                          “units” : “miles”,
                                          “direction” : “NW”,
                                          “offset” : 23
                                      }
               },
             {
                    “type” : “altitude_change”,
                    “version” : 0.1,
                    “timestamp”: 1378686742465
                     “data” : {
                                          “rate”: 0.2,
                                          “duration” : 18923
                                      }
                }
   ]
}



[CONFIDENTIALITY AND PRIVACY NOTICE] Information transmitted by this email is proprietary
to Medtronic and is intended for use only by the individual or entity to which it is addressed,
and may contain information that is private, privileged, confidential or exempt from disclosure
under applicable law. If you are not the intended recipient or it appears that this mail has
been forwarded to you without proper authority, you are notified that any use or dissemination
of this information in any manner is strictly prohibited. In such cases, please delete this
mail from your records. To view this notice in other languages you can either select the following
link or manually copy and paste the link into the address bar of a web browser: http://emaildisclaimer.medtronic.com

Mime
View raw message