About data types
Cassandra's built-in data types.
In a relational database, you must specify a data type for each column when you define a table. The data type constrains the values that can be inserted into that column. For example, if you have a column defined as an integer datatype, you would not be allowed to insert character data into that column. Column names in a relational database are typically fixed labels (strings) that are assigned when you define the table schema.
In Cassandra CLI and Thrift, the data type for a column (or row key) value is called a validator. The data type for a column name is called a comparator. Cassandra validates that data type of the keys of rows.
Columns are sorted, and stored in sorted order on disk, so you have to specify a comparator for columns. You can define the validator and comparator when you create your table schema (which is recommended), but Cassandra does not require it. Internally, Cassandra stores column names and values as hex byte arrays (BytesType). This is the default client encoding used if data types are not defined in the table schema (or if not specified by the client request).
Internal /CLI Type | CQL Name | Description |
---|---|---|
BytesType | blob | Arbitrary hexadecimal bytes (no validation) |
AsciiType | ascii | US-ASCII character string |
UTF8Type | text, varchar | UTF-8 encoded string |
IntegerType | varint | Arbitrary-precision integer |
Int32Type | int | 4-byte integer |
InetAddressType | inet | IP address string in IPv4 or IPv6 format |
LongType | bigint | 8-byte long |
UUIDType | uuid | UUID |
TimeUUIDType | timeuuid | Type 1 UUID only (CQL3) |
DateType | timestamp | Date plus time, encoded as 8 bytes since epoch |
BooleanType | boolean | true or false |
FloatType | float | 4-byte floating point |
DoubleType | double | 8-byte floating point |
DecimalType | decimal | Variable-precision decimal |
CounterColumnType | counter | Distributed counter value (8-byte long) |