Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design NoSQL(Cassandara)来自MySQL,重复数据数据库设计_Database Design_Cassandra_Nosql - Fatal编程技术网

Database design NoSQL(Cassandara)来自MySQL,重复数据数据库设计

Database design NoSQL(Cassandara)来自MySQL,重复数据数据库设计,database-design,cassandra,nosql,Database Design,Cassandra,Nosql,据我所知,在noSQL中,数据应该是重复的。因此,例如,如果您有一个users表和一个posts表,您会像往常一样将用户信息存储在users表中,但随后您会将相关的用户数据存储在posts表中 问题1:我的理解正确吗 问题2:如果是,这意味着如果我更改了用户详细信息,我将更新所有受影响的帖子条目?从Cassandra的角度来看,这主要取决于您需要有效支持的查询。查询帖子时,是否还需要用户数据?如果是这样的话,通常将所需的数据包含在post存储的位置会更有效 对于问题1,是的,在很多情况下,您描述

据我所知,在noSQL中,数据应该是重复的。因此,例如,如果您有一个users表和一个posts表,您会像往常一样将用户信息存储在users表中,但随后您会将相关的用户数据存储在posts表中

问题1:我的理解正确吗


问题2:如果是,这意味着如果我更改了用户详细信息,我将更新所有受影响的帖子条目?

从Cassandra的角度来看,这主要取决于您需要有效支持的查询。查询帖子时,是否还需要用户数据?如果是这样的话,通常将所需的数据包含在post存储的位置会更有效

对于问题1,是的,在很多情况下,您描述的是常见的做法,但这取决于应用程序的需要

对于问题2,这也是一个应用问题。如果您预见到用户数据会定期更改,那么您的应用程序可能应该在显示帖子时执行对用户表的查找。但是,如果这引入了太多的读取,无法及时显示所需的帖子,那么在帖子数据中包含用户数据意味着需要在两个地方更改用户数据。但询问历史数据是否需要更改是很重要的。例如,如果您在Twitter上更改了用户名,它不会返回并将以前对您的所有引用更新为新用户名。这是一个应用程序选择。您预期可能更改的用户数据是什么?在用户名更改的情况下,如果您确实希望新值反映在以前的所有帖子中,那么更改需要多及时?是应该立即反映出来,还是可以等待批处理过程来处理


需要了解的重要内容是如何执行高效查询,以及如何理解在实现高性能应用程序的非规范化时所做的引用完整性权衡。在设计数据模型时,始终考虑应用查询模式。< / P>两个问题都是!!!