我正在尝试为表结构的用户验证提供服务,其中一个组件是列数据类型,如`CREATE中的uuid
,text
和bigint
表'下面的陈述。
USE my_keyspace;
CREATE TABLE users (
id uuid,
name text,
age bigint);
如果我这样做
USE system;
SELECT validator FROM schema_columns
WHERE keyspace_name='my_keyspace' AND columnfamily_name='users';
我得到了
org.apache.cassandra.db.marshal.UUIDType
org.apache.cassandra.db.marshal.UTF8Type
org.apache.cassandra.db.marshal.LongType
这看起来很有用,但仔细观察后,多个不同的数据类型可以映射到相同的验证器值。有没有办法可以提取“CREATE TABLE”语句中输入的数据类型信息,或者至少找到类型之间的区别?
另外,我很好奇为什么验证器数据前面有'org.apache.cassandra ...',并且无法找到解释,所以如果有人知道为什么会这样,我会非常有兴趣知道。
答案 0 :(得分:5)
这看起来很有用,但仔细观察后,多个不同的数据类型可以映射到相同的验证器值。
如果是这种情况,例如使用varchar和text,我相信数据类型相互映射并且可以互换。如果我错了,其他任何人都会纠正我。
有没有办法可以提取“CREATE TABLE”语句中输入的数据类型信息,或者至少找到类型之间的区别?
我知道的唯一方法是:
SpiceManager
另外,我很好奇为什么验证器数据前面有'org.apache.cassandra ...',并且无法找到解释,所以如果有人知道为什么会这样,我会非常有兴趣知道。
Cassandra是用Java实现的,这是实现数据类型的Class的完整路径。
更多信息:
http://docs.datastax.com/en/cql/3.0/cql/cql_reference/cql_data_types_c.html
https://github.com/apache/cassandra/tree/trunk/src/java/org/apache/cassandra/db/marshal
答案 1 :(得分:2)
使用以下查询:
{{1}}