我试图为表结构的用户验证,一个成分是列数据类型,如服务uuid,text以及bigint在'CREATE TABLE”语句下面。
USE my_keyspace;
CREATE TABLE users (
id uuid,
name text,
age bigint);
Run Code Online (Sandbox Code Playgroud)
如果我做
USE system;
SELECT validator FROM schema_columns
WHERE keyspace_name='my_keyspace' AND columnfamily_name='users';
Run Code Online (Sandbox Code Playgroud)
我懂了
org.apache.cassandra.db.marshal.UUIDType
org.apache.cassandra.db.marshal.UTF8Type
org.apache.cassandra.db.marshal.LongType
Run Code Online (Sandbox Code Playgroud)
这似乎很有用,但是仔细检查,多个不同的数据类型可以映射到相同的验证器值。有没有一种方法可以提取在“ CREATE TABLE”语句中输入的数据类型信息,或者至少可以找到类型之间的区别?
另外,我很好奇为什么验证器数据的前缀是“ org.apache.cassandra ...”,却找不到解释,所以如果有人知道为什么,我会很感兴趣要知道。
小智 5
这似乎很有用,但是仔细检查,多个不同的数据类型可以映射到相同的验证器值。
如果是这种情况,例如varchar和text,我相信这些数据类型可以相互映射并且可以互换。如果我错了,其他任何人都可以纠正我。
有没有一种方法可以提取在“ CREATE TABLE”语句中输入的数据类型信息,或者至少可以找到类型之间的区别?
我知道的唯一方法是:
DESC TABLE users;
Run Code Online (Sandbox Code Playgroud)
另外,我很好奇为什么验证器数据的前缀是“ 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
| 归档时间: |
|
| 查看次数: |
2036 次 |
| 最近记录: |