4.1.2 理解 Cassandra 数据模型
我已经提到过,Cassandra 与关系型数据库有很大的不同。在将实体类型映射到 Cassandra 表之前,先来了解一下 Cassandra 数据建模的一些方法。这些建模方式不同于以往关系型数据库建模。
这些是 Cassandra 数据建模中最重要的几点:
- Cassandra 表可以有任意数量的列,但不是所有的行都必须使用所有这些列。
- Cassandra 数据库可以被分割到多个分区中。给定表中的任何行可能由一个或多个分区管理,但在每个分区不太可能包含所有行。
- Cassandra 表有两种键:分区键和聚类键。对每一行的分区键执行哈希操作,以确定由哪个分区对该行进行管理。聚类键决定了在分区中维护的那些行的顺序(可能并不出现在查询结果中)。
- Cassandra 针对读取操作进行了高度优化。因此,对于高度非规范化的表,或跨多个表允余数据保存的情况是比较适合的。(例如,客户信息保存在客户数据表,同时也在客户下的订单表中保存一份副本。)
总之,将 Taco Cloud 中的实体类型适配成以 Cassandra 存储,不只是简单地把几个 JPA 注解替换成 Cassandra 注解的问题。您需要考虑如何对实体数据进行重新建模。