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

Allow deleting records with a secondary index lookup

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Low
    • Resolution: Won't Fix
    • None
    • Feature/2i Index
    • None

    Description

      Currently, clients must query for row keys from a specific secondary index and delete the results. This incurs network traffic whereas a single server operation would be enough.

      ==== Example ====

      In C* we would have to query for all playlist_id for user "JohnSmith" and issue deletes for each key. Deleting by secondary index would allow the entire operation to occur within C* without the client needing to issue multiple statements.

      Delete By Secondary Index

      CREATE TABLE playlist (
      playlist_id text,
      user_id text,
      song_name set<text>,
      PRIMARY_KEY (playlist_id)
      );

      CREATE INDEX on playlist (user_id);
      DELETE FROM playlist WHERE user_id = "JohnSmith";

      Delete By Client

      // Schema
      CREATE TABLE playlist (
      playlist_id text,
      user_id text,
      song_name set<text>,
      PRIMARY_KEY (playlist_id)
      );

      CREATE INDEX on playlist (user_id);

      // Client
      ResultSet resultSet = session.execute("select playlist_id from playlist where userid = "JohnSmith"");
      PreparedStatement delete = session.prepare("DELETE FROM playlist WHERE playlist_id = ?");
      for(Row row : resultSet){
      session.execute(delete.bind(row.getString("playlist_id")));
      }

      Attachments

        Activity

          People

            Unassigned Unassigned
            sirdavidhuang David Huang
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: