# 12.2.2 理解 Cassandra 数据模型

我已经提到过，Cassandra 与关系型数据库有很大的不同。在将实体类型映射到 Cassandra 表之前，先来了解一下 Cassandra 数据建模的一些方法。这些建模方式不同于以往关系型数据库建模。

这些是 Cassandra 数据建模中最重要的几点：

* Cassandra 表可以有任意数量的列，但不是所有的行都必须使用所有这些列。
* Cassandra 数据库可以被分割到多个分区中。给定表中的任何行可能由一个或多个分区管理，但在每个分区不太可能包含所有行。
* Cassandra 表有两种键：分区键和聚类键。对每一行的分区键执行哈希操作，以确定由哪个分区对该行进行管理。聚类键决定了在分区中维护的那些行的顺序（可能并不出现在查询结果中）。
* Cassandra 针对读取操作进行了高度优化。因此，对于高度非规范化的表，或跨多个表允余数据保存的情况是比较适合的。（例如，客户信息保存在客户数据表，同时也在客户下的订单表中保存一份副本。）

总之，将 Taco Cloud 中的实体类型适配成以 Cassandra 存储，不只是简单地把几个 JPA 注解替换成 Cassandra 注解的问题。您需要考虑如何对实体数据进行重新建模。
