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

Allow table property defaults (e.g. compaction, compression) to be specified for a cluster/keyspace

    XMLWordPrintableJSON

Details

    • Operability
    • Challenging

    Description

      During an IRC discussion in cassandra-dev it was proposed that we could have table property defaults stored on a Keyspace or globally within the cluster. For example, this would allow users to specify "All new tables on this cluster should default to LCS with SSTable size of 320MiB" or "all new tables in Keyspace XYZ should have Zstd commpression with a 8 KiB block size" or "default_time_to_live should default to 3 days" etc ... This way operators can choose the default that makes sense for their organization once (e.g. LCS if they are running on fast SSDs), rather than requiring developers creating the Keyspaces/Tables to make the decision on every creation (often without context of which choices are right).

      A few implementation options were discussed including:

      • A YAML option
      • Schema provided at the Keyspace level that would be inherited by any tables automatically
      • Schema provided at the Cluster level that would be inherited by any Keyspaces or Tables automatically

      In IRC it appears that rough consensus was found in having global -> keyspace -> table defaults which would be stored in schema (no YAML configuration since this isn't node level really, it's a cluster level config).

      Attachments

        Activity

          People

            Unassigned Unassigned
            jolynch Joey Lynch
            Paulo Motta
            Votes:
            2 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

              Created:
              Updated: