# 12.2.2 理解 Cassandra 数据模型

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

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

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://potoyang.gitbook.io/spring-in-action-v5/di-12-zhang-xiang-ying-shi-chi-jiu-hua-shu-ju/12.2-shi-yong-xiang-ying-shi-cassandra-ku/12.2.2-li-jie-cassandra-shu-ju-mo-xing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
