Uploaded image for project: 'Apache Cassandra'
  1. Apache Cassandra
  2. CASSANDRA-7970

JSON support for CQL

Agile BoardAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsVotersWatch issueWatchersCreate sub-taskConvert to sub-taskMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Docs

    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:

      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;
      

      (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

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            thobbs Tom Hobbs Assign to me
            jbellis Jonathan Ellis
            Tom Hobbs
            Sylvain Lebresne
            Votes:
            5 Vote for this issue
            Watchers:
            29 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment