12.4 Cassandra数据模型
“卜算子·大数据”一个开源、成体系的大数据学习教程。——每周日更新
- 没有JOIN操作
Cassandra没有表的连接操作,跟关系型数据库设计相比最好的方式是,反(非)规范化设计,设计为两个表连接后的结果表。
- 没有参照完整性(外键) 虽然表中可以存储别的表的ID,但是没有级联删除的操作,所以没有外键操作。
- 非规范化的设计在Cassandra数据库中表现最佳。适当冗余,相同的数据出现在不同的表中,具有不同的键。
- 物化视图 基于已经存在的基础表,创建多个非规范化的数据视图(物化视图)。
- 查询优先设计
设计表从查询的结果开始设计表(结果表)。
- 存储空间设计 Cassandra每个表都是存储在磁盘上的单独文件中,相关的列尽量保持在同一个表中(磁盘文件)。 搜索单个分区的查询性能最佳,优化最小搜索分区数量。
- 排序设计 Cassandra查询中的ORDER BY仅支持聚类列(Clustering columns)排序。
- 分区单元值计算方法 避免分区太宽,分区中的单元值太大。 分区中的单元值计算方法: 分区中的单元值=静态列数 表的行数*(列数-主键列数-静态列数) Cassandra的限制是每个分区20亿。
开源、源码获取 https://github.com/wangxiaoleiAI/big-data