我正在使用 NoSQL(目标是 Cassandra)在 Java Web 应用程序中工作。我使用 Astyanax 作为 Cassandra 客户端,因为它被认为是目前 Cassandra 的最佳客户端。我刚刚接触 Cassandra 2 周,很多事情对我来说都很奇怪。
在我工作的过程中,我遇到了一些问题,我不知道如何克服:
表是从 CQL 创建的,类似于 Thrift API 创建的列族吗?我觉得它们很相似,但背后可能有一些不同。例如:
- Thrift API 无法访问 CQL 命令创建的表
- 基于 Thrift 的 API 无法使用 CQL 创建的表,但 CQL 方法可以访问 Thrift API 创建的列族!
表中的主键是否对应列族中的行键?
- 在 CQL 中,我可以声明一个包含集合/集合/映射的表。我可以在 Thrift API 中做同样的事情吗?
- 如果我的应用程序同时需要它们(列族和表),它们如何相互处理?
- 我认识到一件事:我不能使用 Thrift API 来操作 CQL 创建的表上的数据,反之亦然。我想知道,我怎样才能记住哪个表/列族以哪种方式创建,以便我可以使用正确的 API 来处理数据?目前,我们还没有通用的方法来处理其中的两个,是吗?AFAIK、Thrift API 和 CQL 没有相同的接口,所以他们不能互相理解?!
你能帮我解释一下这些事情吗?太感谢了。