你的提问方式是有缺陷的。对于那些只有传统关系数据库背景的DBA来说,将数据视为规范化的表是一个常见的错误。 当您切换到NoSQL时,您正在尝试解决传统RDBMS无法解决的问题。需要进行范式转换,因为您不能仅按原样迁移关系表,否则您将回到起点。 Cassandra中数据建模的主要理念是,您需要为每个应用程序查询设计一个CQL表。这是应用程序查询和CQL表之间的一对一Map。关键点是,您需要从应用程序查询开始,而不是从表开始。 假设您有一个存储用户信息的应用程序,其中包括用户名、电子邮件地址、名字/姓氏、电话号码等。如果您有一个类似“get the email address for username X”的应用程序查询,则意味着您需要一个电子邮件地址表,其模式如下所示:
1条答案
按热度按时间ilmyapht1#
你的提问方式是有缺陷的。对于那些只有传统关系数据库背景的DBA来说,将数据视为规范化的表是一个常见的错误。
当您切换到NoSQL时,您正在尝试解决传统RDBMS无法解决的问题。需要进行范式转换,因为您不能仅按原样迁移关系表,否则您将回到起点。
Cassandra中数据建模的主要理念是,您需要为每个应用程序查询设计一个CQL表。这是应用程序查询和CQL表之间的一对一Map。关键点是,您需要从应用程序查询开始,而不是从表开始。
假设您有一个存储用户信息的应用程序,其中包括用户名、电子邮件地址、名字/姓氏、电话号码等。如果您有一个类似“get the email address for username X”的应用程序查询,则意味着您需要一个电子邮件地址表,其模式如下所示:
然后,您可以使用以下语句查询此表:
另一个例子是,您有一个应用程序查询,如“获取电子邮件地址为Y的用户的名字和姓氏”。您需要一个按电子邮件分区的用户表:
您可以使用以下语句查询表:
希望通过这些示例,您可以看到磁盘空间的消耗完全无关紧要。重要的是您设计的表能够针对应用程序查询进行优化。干杯!