You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2011/03/30 21:56:53 UTC

svn commit: r1087060 - in /cassandra/trunk/doc/cql: CQL.html CQL.textile

Author: eevans
Date: Wed Mar 30 19:56:53 2011
New Revision: 1087060

URL: http://svn.apache.org/viewvc?rev=1087060&view=rev
Log:
update docs for typed keys

Patch by eevans

Modified:
    cassandra/trunk/doc/cql/CQL.html
    cassandra/trunk/doc/cql/CQL.textile

Modified: cassandra/trunk/doc/cql/CQL.html
URL: http://svn.apache.org/viewvc/cassandra/trunk/doc/cql/CQL.html?rev=1087060&r1=1087059&r2=1087060&view=diff
==============================================================================
--- cassandra/trunk/doc/cql/CQL.html (original)
+++ cassandra/trunk/doc/cql/CQL.html Wed Mar 30 19:56:53 2011
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head><body><h1 id="CassandraQueryLanguageCQLv1.0.0">Cassandra Query Language (CQL) v1.0.0</h1><h2 id="TableofContents">Table of Contents</h2><ol style="list-style: none;"><li><a href="#CassandraQueryLanguageCQLv1.0.0">Cassandra Query Language (CQL) v1.0.0</a><ol style="list-style: none;"><li><a href="#TableofContents">Table of Contents</a></li><li><a href="#USE">USE</a></li><li><a href="#SELECT">SELECT</a><ol style="list-style: none;"><li><a href="#SpecifyingColumns">Specifying Columns</a></li><li><a href="#ColumnFamily">Column Family</a></li><li><a href="#ConsistencyLevel">Consistency Level</a></li><li><a href="#Filteringrows">Filtering rows</a></li><li><a href="#Limits">Limits</a></li></ol></li><li>
 <a href="#UPDATE">UPDATE</a><ol style="list-style: none;"><li><a href="#ColumnFamily2">Column Family</a></li><li><a href="#ConsistencyLevel2">Consistency Level</a></li><li><a href="#SpecifyingColumnsandRow">Specifying Columns and Row</a></li></ol></li><li><a href="#DELETE">DELETE</a><ol style="list-style: none;"><li><a href="#SpecifyingColumns2">Specifying Columns</a></li><li><a href="#ColumnFamily3">Column Family</a></li><li><a href="#ConsistencyLevel3">Consistency Level</a></li><li><a href="#deleterows">Specifying Rows</a></li></ol></li><li><a href="#TRUNCATE">TRUNCATE</a></li><li><a href="#CREATEKEYSPACE">CREATE KEYSPACE</a></li><li><a href="#CREATECOLUMNFAMILY">CREATE COLUMNFAMILY</a><ol style="list-style: none;"><li><a href="#columntypes">Specifying Column Type (optional)</a></li><li><a href="#ColumnFamilyOptionsoptional">Column Family Options (optional)</a></li></ol></li><li><a href="#CREATEINDEX">CREATE INDEX</a></li><li><a href="#DROP">DROP</a></li><li><a href="#Comm
 onIdioms">Common Idioms</a><ol style="list-style: none;"><li><a href="#consistency">Specifying Consistency</a></li><li><a href="#terms">Term specification</a></li></ol></li></ol></li><li><a href="#Versioning">Versioning</a></li><li><a href="#Changes">Changes</a></li></ol><h2 id="USE">USE</h2><p><i>Synopsis:</i></p><pre><code>USE &lt;KEYSPACE&gt;;
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head><body><h1 id="CassandraQueryLanguageCQLv1.0.0">Cassandra Query Language (CQL) v1.0.0</h1><h2 id="TableofContents">Table of Contents</h2><ol style="list-style: none;"><li><a href="#CassandraQueryLanguageCQLv1.0.0">Cassandra Query Language (CQL) v1.0.0</a><ol style="list-style: none;"><li><a href="#TableofContents">Table of Contents</a></li><li><a href="#USE">USE</a></li><li><a href="#SELECT">SELECT</a><ol style="list-style: none;"><li><a href="#SpecifyingColumns">Specifying Columns</a></li><li><a href="#ColumnFamily">Column Family</a></li><li><a href="#ConsistencyLevel">Consistency Level</a></li><li><a href="#Filteringrows">Filtering rows</a></li><li><a href="#Limits">Limits</a></li></ol></li><li>
 <a href="#UPDATE">UPDATE</a><ol style="list-style: none;"><li><a href="#ColumnFamily2">Column Family</a></li><li><a href="#ConsistencyLevel2">Consistency Level</a></li><li><a href="#SpecifyingColumnsandRow">Specifying Columns and Row</a></li></ol></li><li><a href="#DELETE">DELETE</a><ol style="list-style: none;"><li><a href="#SpecifyingColumns2">Specifying Columns</a></li><li><a href="#ColumnFamily3">Column Family</a></li><li><a href="#ConsistencyLevel3">Consistency Level</a></li><li><a href="#deleterows">Specifying Rows</a></li></ol></li><li><a href="#TRUNCATE">TRUNCATE</a></li><li><a href="#CREATEKEYSPACE">CREATE KEYSPACE</a></li><li><a href="#CREATECOLUMNFAMILY">CREATE COLUMNFAMILY</a><ol style="list-style: none;"><li><a href="#keytypes">Specifying Key Type</a></li><li><a href="#columntypes">Specifying Column Type (optional)</a></li><li><a href="#ColumnFamilyOptionsoptional">Column Family Options (optional)</a></li></ol></li><li><a href="#CREATEINDEX">CREATE INDEX</a></li
 ><li><a href="#DROP">DROP</a></li><li><a href="#CommonIdioms">Common Idioms</a><ol style="list-style: none;"><li><a href="#consistency">Specifying Consistency</a></li><li><a href="#terms">Term specification</a></li></ol></li></ol></li><li><a href="#Versioning">Versioning</a></li><li><a href="#Changes">Changes</a></li></ol><h2 id="USE">USE</h2><p><i>Synopsis:</i></p><pre><code>USE &lt;KEYSPACE&gt;;
 </code></pre><p>A <code>USE</code> statement consists of the <code>USE</code> keyword, followed by a valid keyspace name.  Its purpose is to assign the per-connection, current working keyspace.  All subsequent keyspace-specific actions will be performed in the context of the supplied value.</p><h2 id="SELECT">SELECT</h2><p><i>Synopsis:</i></p><pre><code>SELECT [FIRST N] [REVERSED] &lt;SELECT EXPR&gt; FROM &lt;COLUMN FAMILY&gt; [USING &lt;CONSISTENCY&gt;]
         [WHERE &lt;CLAUSE&gt;] [LIMIT N];
 </code></pre><p>A <code>SELECT</code> is used to read one or more records from a Cassandra column family. It returns a result-set of rows, where each row consists of a key and a collection of columns corresponding to the query.</p><h3 id="SpecifyingColumns">Specifying Columns</h3><pre><code>SELECT [FIRST N] [REVERSED] name1, name2, name3 FROM ...
@@ -28,9 +28,11 @@ UPDATE ... WHERE KEY IN (keyname1, keyna
 </code></pre><p>The <code>WHERE</code> clause is used to determine which row(s) a <code>DELETE</code> applies to.  The first form allows the specification of a single keyname using the <code>KEY</code> keyword and the <code>=</code> operator.  The second form allows a list of keyname terms to be specified using the <code>IN</code> notation and a parenthesized list of comma-delimited keyname terms.</p><h2 id="TRUNCATE">TRUNCATE</h2><p><em>Synopsis:</em></p><pre><code>TRUNCATE &lt;COLUMN FAMILY&gt;
 </code></pre><p>Accepts a single argument for the column family name, and permanently removes all data from said column family.</p><h2 id="CREATEKEYSPACE">CREATE KEYSPACE</h2><p><em>Synopsis:</em></p><pre><code>CREATE KEYSPACE &lt;NAME&gt; WITH replication_factor = &lt;NUM&gt; AND strategy_class = &lt;STRATEGY&gt;
     [AND strategy_options.&lt;OPTION&gt; = &lt;VALUE&gt; [AND strategy_options.&lt;OPTION&gt; = &lt;VALUE&gt;]];
-</code></pre><p>The <code>CREATE KEYSPACE</code> statement creates a new top-level namespace (aka &#8220;keyspace&#8221;). Valid names are any string constructed of alphanumeric characters and underscores, but must begin with a letter.  Properties such as replication strategy and count are specified during creation using the following accepted keyword arguments:</p><table><tr><th>keyword</th><th>required</th><th>description</th></tr><tr><td>replication_factor</td><td>yes</td><td>Numeric argument that specifies the number of replicas for this keyspace.</td></tr><tr><td>strategy_class</td><td>yes</td><td>Class name to use for managing replica placement.  Any of the shipped strategies can be used by specifying the class name relative to org.apache.cassandra.locator, others will need to be fully-qualified and located on the classpath.</td></tr><tr><td>strategy_options</td><td>no</td><td>Some strategies require additional arguments which can be supplied by appending the option na
 me to the <code>strategy_options</code> keyword, separated by a colon (<code>:</code>).  For example, a strategy option of &#8220;DC1&#8221; with a value of &#8220;1&#8221; would be specified as <code>strategy_options:DC1 = 1</code>.</td></tr></table><h2 id="CREATECOLUMNFAMILY">CREATE COLUMNFAMILY</h2><p><em>Synopsis:</em></p><pre><code>CREATE COLUMNFAMILY &lt;COLUMN FAMILY&gt; [(name1 type, name2 type, ...)] [WITH keyword1 = arg1
-    [AND keyword2 = arg2 [AND ...]]];
-</code></pre><p><code>CREATE COLUMNFAMILY</code> statements create new column family namespaces under the current keyspace. Valid column family names are strings of alphanumeric characters and underscores, which begin with a letter.</p><h3 id="columntypes">Specifying Column Type (optional)</h3><pre><code>CREATE COLUMNFAMILY &lt;COLUMN FAMILY&gt; (name1 type, name2 type) ...;
+</code></pre><p>The <code>CREATE KEYSPACE</code> statement creates a new top-level namespace (aka &#8220;keyspace&#8221;). Valid names are any string constructed of alphanumeric characters and underscores, but must begin with a letter.  Properties such as replication strategy and count are specified during creation using the following accepted keyword arguments:</p><table><tr><th>keyword</th><th>required</th><th>description</th></tr><tr><td>replication_factor</td><td>yes</td><td>Numeric argument that specifies the number of replicas for this keyspace.</td></tr><tr><td>strategy_class</td><td>yes</td><td>Class name to use for managing replica placement.  Any of the shipped strategies can be used by specifying the class name relative to org.apache.cassandra.locator, others will need to be fully-qualified and located on the classpath.</td></tr><tr><td>strategy_options</td><td>no</td><td>Some strategies require additional arguments which can be supplied by appending the option na
 me to the <code>strategy_options</code> keyword, separated by a colon (<code>:</code>).  For example, a strategy option of &#8220;DC1&#8221; with a value of &#8220;1&#8221; would be specified as <code>strategy_options:DC1 = 1</code>.</td></tr></table><h2 id="CREATECOLUMNFAMILY">CREATE COLUMNFAMILY</h2><p><em>Synopsis:</em></p><pre><code>CREATE COLUMNFAMILY &lt;COLUMN FAMILY&gt; (KEY &lt;type&gt; PRIMARY KEY [, name1 type, name2 type, ...]);
+CREATE COLUMNFAMILY &lt;COLUMN FAMILY&gt; (KEY &lt;type&gt; PRIMARY KEY [, name1 type, name2 type, ...])
+    [WITH keyword1 = arg1 [AND keyword2 = arg2 [AND ...]]];
+</code></pre><p><code>CREATE COLUMNFAMILY</code> statements create new column family namespaces under the current keyspace. Valid column family names are strings of alphanumeric characters and underscores, which begin with a letter.</p><h3 id="keytypes">Specifying Key Type</h3><pre><code>CREATE ... (KEY &lt;type&gt; PRIMARY KEY) ...
+</code></pre><p>When creating a new column family, you must specify key type.  The list of possible key types is identical to column comparators/validators, (see <a href="columntypes">Specifying Column Type</a>).  It&#8217;s important to note that the key type must be compatible with the partitioner in use, for example <code>OrderPreservingPartitioner</code> and <code>CollatingOrderPreservingPartitioner</code> both require UTF-8 keys.</p><h3 id="columntypes">Specifying Column Type (optional)</h3><pre><code>CREATE ... (KEY &lt;type&gt; PRIMARY KEY, name1 type, name2 type) ...
 </code></pre><p>It is possible to assign columns a type during column family creation.  Columns configured with a type are validated accordingly when a write occurs. Column types are specified as a parenthesized, comma-separated list of column term and type pairs.  The list of recognized types are:</p><table><tr><th>type</th><th>description</th></tr><tr><td>bytes</td><td>Arbitrary bytes (no validation)</td></tr><tr><td>ascii</td><td>ASCII character string</td></tr><tr><td>utf8</td><td>UTF8 encoded string</td></tr><tr><td>timeuuid</td><td>Type 1 UUID</td></tr><tr><td>uuid</td><td>Type 4 UUID</td></tr><tr><td>int</td><td>4-byte integer</td></tr><tr><td>long</td><td>8-byte long</td></tr></table><p><em>Note: In addition to the recognized types listed above, it is also possible to supply a string containing the name of a class (a sub-class of <code>AbstractType</code>), either fully qualified, or relative to the <code>org.apache.cassandra.db.marshal</code> package.</em></p><h3 id
 ="ColumnFamilyOptionsoptional">Column Family Options (optional)</h3><pre><code>CREATE COLUMNFAMILY ... WITH keyword1 = arg1 AND keyword2 = arg2;
 </code></pre><p>A number of optional keyword arguments can be supplied to control the configuration of a new column family.</p><table><tr><th>keyword</th><th>default</th><th>description</th></tr><tr><td>comparator</td><td>utf8</td><td>Determines sorting and validation of column names. Valid values are identical to the types listed in <a href="#columntypes">Specifying Column Type</a> above.</td></tr><tr><td>comment</td><td>none</td><td>A free-form, human-readable comment.</td></tr><tr><td>row_cache_size</td><td>0</td><td>Number of rows whose entire contents to cache in memory.</td></tr><tr><td>key_cache_size</td><td>200000</td><td>Number of keys per SSTable whose locations are kept in memory in &#8220;mostly LRU&#8221; order.</td></tr><tr><td>read_repair_chance</td><td>1.0</td><td>The probability with which read repairs should be invoked on non-quorum reads.</td></tr><tr><td>gc_grace_seconds</td><td>864000</td><td>Time to wait before garbage collecting tombstones (deletion ma
 rkers).</td></tr><tr><td>default_validation</td><td>utf8</td><td>Determines validation of column values. Valid values are identical to the types listed in <a href="#columntypes">Specifying Column Type</a> above.</td></tr><tr><td>min_compaction_threshold</td><td>4</td><td>Minimum number of SSTables needed to start a minor compaction.</td></tr><tr><td>max_compaction_threshold</td><td>32</td><td>Maximum number of SSTables allowed before a minor compaction is forced.</td></tr><tr><td>row_cache_save_period_in_seconds</td><td>0</td><td>Number of seconds between saving row caches.</td></tr><tr><td>key_cache_save_period_in_seconds</td><td>14400</td><td>Number of seconds between saving key caches.</td></tr><tr><td>memtable_flush_after_mins</td><td>60</td><td>Maximum time to leave a dirty table unflushed.</td></tr><tr><td>memtable_throughput_in_mb</td><td>dynamic</td><td>Maximum size of the memtable before it is flushed.</td></tr><tr><td>memtable_operations_in_millions</td><td>dynamic
 </td><td>Number of operations in millions before the memtable is flushed.</td></tr><tr><td>replicate_on_write</td><td>false</td><td></td></tr></table><h2 id="CREATEINDEX">CREATE INDEX</h2><p><em>Synopsis:</em></p><pre><code>CREATE INDEX [index_name] ON &lt;column_family&gt; (column_name);
 </code></pre><p>A <code>CREATE INDEX</code> statement is used to create a new, automatic secondary index for the named column.</p><h2 id="DROP">DROP</h2><p><em>Synopsis:</em></p><pre><code>DROP &lt;KEYSPACE|COLUMNFAMILY&gt; namespace;

Modified: cassandra/trunk/doc/cql/CQL.textile
URL: http://svn.apache.org/viewvc/cassandra/trunk/doc/cql/CQL.textile?rev=1087060&r1=1087059&r2=1087060&view=diff
==============================================================================
--- cassandra/trunk/doc/cql/CQL.textile (original)
+++ cassandra/trunk/doc/cql/CQL.textile Wed Mar 30 19:56:53 2011
@@ -180,15 +180,23 @@ h2. CREATE COLUMNFAMILY
 _Synopsis:_
 
 bc. 
-CREATE COLUMNFAMILY <COLUMN FAMILY> [(name1 type, name2 type, ...)] [WITH keyword1 = arg1
-    [AND keyword2 = arg2 [AND ...]]];
+CREATE COLUMNFAMILY <COLUMN FAMILY> (KEY <type> PRIMARY KEY [, name1 type, name2 type, ...]);
+CREATE COLUMNFAMILY <COLUMN FAMILY> (KEY <type> PRIMARY KEY [, name1 type, name2 type, ...])
+    [WITH keyword1 = arg1 [AND keyword2 = arg2 [AND ...]]];
 
 @CREATE COLUMNFAMILY@ statements create new column family namespaces under the current keyspace. Valid column family names are strings of alphanumeric characters and underscores, which begin with a letter.
 
+h3(#keytypes). Specifying Key Type
+
+bc. 
+CREATE ... (KEY <type> PRIMARY KEY) ...
+
+When creating a new column family, you must specify key type.  The list of possible key types is identical to column comparators/validators, (see "Specifying Column Type":columntypes).  It's important to note that the key type must be compatible with the partitioner in use, for example @OrderPreservingPartitioner@ and @CollatingOrderPreservingPartitioner@ both require UTF-8 keys.
+
 h3(#columntypes). Specifying Column Type (optional)
 
 bc. 
-CREATE COLUMNFAMILY <COLUMN FAMILY> (name1 type, name2 type) ...;
+CREATE ... (KEY <type> PRIMARY KEY, name1 type, name2 type) ...
 
 It is possible to assign columns a type during column family creation.  Columns configured with a type are validated accordingly when a write occurs. Column types are specified as a parenthesized, comma-separated list of column term and type pairs.  The list of recognized types are: