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

Schema/Query analyzer

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


    • New Feature
    • Status: Open
    • Normal
    • Resolution: Unresolved
    • 4.x
    • CQL/Syntax, Legacy/Tools
    • None
    • Operability
    • Challenging
    • All
    • None


      This proposal is to build schema/cql analyser which can help users to analyze their queries before it is too late.
      User may create stability issues by

      • Running expensive queries against cluster like , SELECT * or query without where clause or IN clause with many values etc.
      • Creating not so optimal schemas
      • Leaving scope for data loss or schema with performance issue (keyspace with durable writes set to false or table with many secondary indexes etc...).
        Most of the times these Dos & Don'ts go into some knowledge base/documentation as best practices. Having rules for best practices (which user can execute against statements) can help to avoid bad schema/queries getting executed in cluster. The main idea is to enable the users to take corrective actions, by
        1) Allowing a user to validate a DDL/DML statements before it is applied/executed.
        2) Allowing a user to validate existing schema/queries.
        Imo, a validation result should:
        1. Have severity
        2. Tell where it hurts like instance/replica set/cluster.
        3. Tell if it causes data loss.
        4. Tell the strategy to recover.
        Few approaches I can think of:
        1. Write validation rules at server side + have a new type of statement to run validations (something like MySQL's EXPLAIN) and return validation results/errors.
        2. Keep validation rules in sidecar + expose a service to run validations. In this case user can submit his statements to this API and get validation results.
        3. Expose a UI in sidecar which accepts statements and run validations. Validation rules can be with UI or UI can make either of above options.
        Open for any other approach.



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


            n.v.harikrishna n.v.harikrishna Assign to me
            n.v.harikrishna n.v.harikrishna




                Issue deployment