[
https://issues.apache.org/jira/browse/CASSANDRA-1709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12972716#action_12972716
]
Eric Evans edited comment on CASSANDRA-1709 at 12/22/10 11:20 AM:
------------------------------------------------------------------
Sticking with the theme of being as SQL as reasonable, it makes sense to use
{{CREATE}} for adding keyspaces and column families, though things get a little
weird specifying attribute value pairs in place of column schema. I'm not a
huge fan of the CLIs {{WITH attr = value AND ...}} but i don't have anything
better to offer.
{code:sql|title=CREATE}
CREATE (KEYSPACE | COLUMNFAMILY)
<IDENTIFIER>
WITH
<ATTR> = <VALUE> AND
<ATTR> = <VALUE>
; Examples
CREATE KEYSPACE Keyspace1 WITH strategy_class =
"org.apache.cassandra.locator.SimpleStrategy" AND replication_factor = 3;
CREATE COLUMNFAMILY Standard1 WITH comparator_type = "UTF8Type";
{code}
For column metadata, I kind of like the idea of using an adapted {{ALTER}}
syntax.
{code:sql|title=ALTER}
ALTER <IDENTIFIER> ADD <TERM> WITH <ATTR> = <VALUE> [AND ...]
ALTER <IDENTIFIER> DROP <TERM>
ALTER <IDENTIFIER> ALTER <TERM> SET <ATTR> = <VALUE> [AND ...]
; Examples
ALTER Standard1 ADD "username" WITH index_type = KEYS and validation_class =
"UTF8Type";
ALTER Standard1 ALTER "city" SET validation_class = "BytesType";
ALTER Standard1 DROP "fullname";
{code}
Updating columnfamily attributes requires venturing a little further outside
the SQL envelope. I'm not a fan of the CLI's use of {{UPDATE}} here, it feels
like an overloading of the term to use it for this. One idea is to use
{{ALTER}} for this as well.
{code:sql|title=ALTER-ALT}
ALTER (KEYSPACE|COLUMNFAMILY) <IDENTIFIER> SET <ATTR> = <VALUE> [AND ...]
; Example
ALTER KEYSPACE Keyspace1 SET replication_factor = 5;
ALTER COLUMNFAMILY Standard1 SET comparator_type = "UTF8Type";
{code}
The keyspace and columnfamily removal use-case seems pretty obvious.
{code:sql|title=DROP}
DROP (KEYSPACE | COLUMNFAMILY)
; Examples
DROP KEYSPACE Keyspace1;
DROP COLUMNFAMILY Standard2;
{code}
*Edit: Account for modifying keyspace attributes as well.*
*Edit: Corrected type (s/WHERE/WITH/).*
was (Author: urandom):
Sticking with the theme of being as SQL as reasonable, it makes sense to
use {{CREATE}} for adding keyspaces and column families, though things get a
little weird specifying attribute value pairs in place of column schema. I'm
not a huge fan of the CLIs {{WHERE attr = value AND ...}} but i don't have
anything better to offer.
{code:sql|title=CREATE}
CREATE (KEYSPACE | COLUMNFAMILY)
<IDENTIFIER>
WITH
<ATTR> = <VALUE> AND
<ATTR> = <VALUE>
; Examples
CREATE KEYSPACE Keyspace1 WITH strategy_class =
"org.apache.cassandra.locator.SimpleStrategy" AND replication_factor = 3;
CREATE COLUMNFAMILY Standard1 WITH comparator_type = "UTF8Type";
{code}
For column metadata, I kind of like the idea of using an adapted {{ALTER}}
syntax.
{code:sql|title=ALTER}
ALTER <IDENTIFIER> ADD <TERM> WITH <ATTR> = <VALUE> [AND ...]
ALTER <IDENTIFIER> DROP <TERM>
ALTER <IDENTIFIER> ALTER <TERM> SET <ATTR> = <VALUE> [AND ...]
; Examples
ALTER Standard1 ADD "username" WITH index_type = KEYS and validation_class =
"UTF8Type";
ALTER Standard1 ALTER "city" SET validation_class = "BytesType";
ALTER Standard1 DROP "fullname";
{code}
Updating columnfamily attributes requires venturing a little further outside
the SQL envelope. I'm not a fan of the CLI's use of {{UPDATE}} here, it feels
like an overloading of the term to use it for this. One idea is to use
{{ALTER}} for this as well.
{code:sql|title=ALTER-ALT}
ALTER (KEYSPACE|COLUMNFAMILY) <IDENTIFIER> SET <ATTR> = <VALUE> [AND ...]
; Example
ALTER KEYSPACE Keyspace1 SET replication_factor = 5;
ALTER COLUMNFAMILY Standard1 SET comparator_type = "UTF8Type";
{code}
The keyspace and columnfamily removal use-case seems pretty obvious.
{code:sql|title=DROP}
DROP (KEYSPACE | COLUMNFAMILY)
; Examples
DROP KEYSPACE Keyspace1;
DROP COLUMNFAMILY Standard2;
{code}
*Edit: Account for modifying keyspace attributes as well.*
> CQL keyspace and column family management
> -----------------------------------------
>
> Key: CASSANDRA-1709
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1709
> Project: Cassandra
> Issue Type: Sub-task
> Components: API
> Affects Versions: 0.8
> Reporter: Eric Evans
> Priority: Minor
> Fix For: 0.8
>
> Original Estimate: 0h
> Remaining Estimate: 0h
>
> CQL specification and implementation for schema management.
> This corresponds to the following RPC methods:
> * system_add_column_family()
> * system_add_keyspace()
> * system_drop_keyspace()
> * system_update_keyspace()
> * system_update_columnfamily()
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.