cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Ellis (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-7970) JSON support for CQL
Date Thu, 18 Sep 2014 17:03:34 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-7970?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jonathan Ellis updated CASSANDRA-7970:
--------------------------------------
    Description: 
JSON is popular enough that not supporting it is becoming a competitive weakness.  We can
add JSON support in a way that is compatible with our performance goals by *mapping* JSON
to an existing schema: one JSON documents maps to one CQL row.

Thus, it is NOT a goal to support schemaless documents, which is a misfeature [1] [2] [3].
 Rather, it is to allow a convenient way to easily turn a JSON document from a service or
a user into a CQL row, with all the validation that entails.

Since we are not looking to support schemaless documents, we will not be adding a JSON data
type (CASSANDRA-6833) a la postgresql.  Rather, we will map the JSON to UDT, collections,
and primitive CQL types.

Here's how this might look:

{code}
CREATE TYPE address (
  street text,
  city text,
  zip_code int,
  phones set<text>
);

CREATE TABLE users (
  id uuid PRIMARY KEY,
  name text,
  addresses map<text, address>
);

INSERT INTO users JSON
{‘id’: 4b856557-7153,
   ‘name’: ‘jbellis’,
   ‘address’: {“home”: {“street”: “123 Cassandra Dr”,
                        “city”: “Austin”,
                        “zip_code”: 78747,
                        “phones”: [2101234567]}}};

SELECT JSON id, address FROM users;
{code}

(We would also want to_json and from_json functions to allow mapping a single column's worth
of data.  These would not require extra syntax.)

[1] http://rustyrazorblade.com/2014/07/the-myth-of-schema-less/
[2] https://blog.compose.io/schema-less-is-usually-a-lie/
[3] http://dl.acm.org/citation.cfm?id=2481247

  was:
JSON is popular enough that not supporting it is becoming a competitive weakness.  We can
add JSON support in a way that is compatible with our performance goals by *mapping* JSON
to an existing schema: one JSON documents maps to one CQL row.

Thus, it is NOT a goal to support schemaless documents, which is a misfeature [1] [2] [3].
 Rather, it is to allow a convenient way to easily turn a JSON document from a service or
a user into a CQL row, with all the validation that entails.

Since we are not looking to support schemaless documents, we will not be adding a JSON data
type (CASSANDRA-6833) a la postgresql.  Rather, we will map the JSON to UDT, collections,
and primitive CQL types.

Here's how this might look:

{code}
CREATE TYPE address (
  street text,
  city text,
  zip_code int,
  phones set<text>
);

CREATE TABLE users (
  id uuid PRIMARY KEY,
  name text,
  addresses map<text, address>
);

INSERT INTO users JSON
{‘id’: 4b856557-7153,
   ‘name’: ‘jbellis’,
   ‘address’: {“home”: {“street”: “9920 Mateo Cv”,
                        “city”: “Austin”,
                        “zip_code”: 78747,
                        “phones”: [2108614702]}}};

SELECT JSON id, address FROM users;
{code}

(We would also want to_json and from_json functions to allow mapping a single column's worth
of data.  These would not require extra syntax.)

[1] http://rustyrazorblade.com/2014/07/the-myth-of-schema-less/
[2] https://blog.compose.io/schema-less-is-usually-a-lie/
[3] http://dl.acm.org/citation.cfm?id=2481247


> JSON support for CQL
> --------------------
>
>                 Key: CASSANDRA-7970
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7970
>             Project: Cassandra
>          Issue Type: Bug
>          Components: API
>            Reporter: Jonathan Ellis
>            Assignee: Tyler Hobbs
>             Fix For: 3.0
>
>
> JSON is popular enough that not supporting it is becoming a competitive weakness.  We
can add JSON support in a way that is compatible with our performance goals by *mapping* JSON
to an existing schema: one JSON documents maps to one CQL row.
> Thus, it is NOT a goal to support schemaless documents, which is a misfeature [1] [2]
[3].  Rather, it is to allow a convenient way to easily turn a JSON document from a service
or a user into a CQL row, with all the validation that entails.
> Since we are not looking to support schemaless documents, we will not be adding a JSON
data type (CASSANDRA-6833) a la postgresql.  Rather, we will map the JSON to UDT, collections,
and primitive CQL types.
> Here's how this might look:
> {code}
> CREATE TYPE address (
>   street text,
>   city text,
>   zip_code int,
>   phones set<text>
> );
> CREATE TABLE users (
>   id uuid PRIMARY KEY,
>   name text,
>   addresses map<text, address>
> );
> INSERT INTO users JSON
> {‘id’: 4b856557-7153,
>    ‘name’: ‘jbellis’,
>    ‘address’: {“home”: {“street”: “123 Cassandra Dr”,
>                         “city”: “Austin”,
>                         “zip_code”: 78747,
>                         “phones”: [2101234567]}}};
> SELECT JSON id, address FROM users;
> {code}
> (We would also want to_json and from_json functions to allow mapping a single column's
worth of data.  These would not require extra syntax.)
> [1] http://rustyrazorblade.com/2014/07/the-myth-of-schema-less/
> [2] https://blog.compose.io/schema-less-is-usually-a-lie/
> [3] http://dl.acm.org/citation.cfm?id=2481247



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message