Dou*_*eri 6 migration cassandra system-tables
我刚刚从 Cassandra 2.x 迁移到 3.x(特别是 3.4)。现在系统表已经完全改变了,这些改变不在文档中。如果您查看系统表的当前 CQL 文档,它们仅描述了 2.X 中的系统架构。
Cassandra 2.X 及更高版本的 CQL 3.3 文档
有没有人有详细说明此更改的访问文档?如何查询以查看哪些键空间可用?
有一个名为“system_schema”的新系统键空间,但其中只有两个表:system_schema.tables
和system_schema.columns
。所以我不知道在哪里寻找我需要的信息(我需要能够有效地执行DESCRIBE KEYSPACES
命令,但在 cqlsh 之外)。
答案是这样的:SELECT keyspace_name FROM system_schema.tables;
这样做的新方法吗?
有一个名为“system_schema”的新系统键空间,但其中只有两个表:
好的,您的升级中一定出了点问题,因为那是不对的。当我检查 system_schema 3.4 时,我看到:
[cqlsh 5.0.1 | Cassandra 3.4 | CQL spec 3.4.0 | Native protocol v4]
Use HELP for help.
aploetz@cqlsh> use system_schema ;
aploetz@cqlsh:system_schema> desc tables;
tables triggers views keyspaces dropped_columns
functions aggregates indexes types columns
Run Code Online (Sandbox Code Playgroud)
该键空间中肯定有两个以上的表。
如何查询以查看哪些键空间可用?
执行此操作的新方法是查询 system_schema.keyspaces:
aploetz@cqlsh:system_schema> SELECT * FROM keyspaces;
keyspace_name | durable_writes | replication
------------------------+----------------+-------------------------------------------------------------------------------------
zeroreplication | True | {'DC1': '0', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}
system_auth | True | {'class': 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}
system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'}
experfy_class | True | {'DC1': '1', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}
system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'}
stackoverflow | True | {'DC1': '1', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}
eqcontrol | True | {'DC1': '1', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}
Run Code Online (Sandbox Code Playgroud)
system.schema_keyspaces 和 system_schema.keyspaces 之间的主要区别在于 system_schema.keyspaces 只有 3 列而不是两列(strategy_class
并strategy_options
合并为replication
)。
所以我发现有一个更好的方法:通过API。我从这个答案中得到了这个想法:
您需要直接访问键空间元数据。因此,如何访问架构元数据的示例如下:
这个想法是获取指向 CassSchemaMeta 对象的指针,然后您可以访问所有键空间、表、列、函数等。
http://datastax.github.io/cpp-driver/api/struct.CassSchemaMeta/
附带说明一下,我需要这些信息,以便支持 C++ 中的模式细读。我们创建了一个提供 C++ 绑定的包装库,并且这里支持 Schema 内容:
https://github.com/m2osw/libcaswrapper
归档时间: |
|
查看次数: |
6182 次 |
最近记录: |