2016-11-28 47 views
0

我有一个表调用“usertab”来存储用户信息,例如:数据基准和更新用

userid uuid, 
firstname text, 
lastname text 
email text 
gender int 
image text 

大多数其他表中包含的用户ID作为字段用于引用“usertab”, 但当我从其他表中检索数据时,我需要执行另一个选择查询来获取用户详细信息。

因此,如果检索到10,000个或更多数据,则执行相同数量的选择查询以获取用户详细信息。这使我们的系统变慢。

因此,除了userid字段,我们还会在其他表中添加usertab字段,例如名字,姓氏,性别,图像。

因此在数据检索上,系统变得快速,但我们面临另一个问题。如果usertab表中的任何更改(如更改名字,姓氏,性别或图像),我们需要更新包含用户详细信息的其他表。如果我们考虑其他表中的大量数据,我该如何处理?

我们使用的是lucene索引和C#。

回答

1

Cassandra的写入速度比读取速度更快,效率也更高。
这就是为什么卡桑德拉喜欢在以上非国有工业标准化

非规范化是一个数据模型的设计应使给定的查询可以从一个行查询的结果中提供的概念。而不是从多个表和行中进行多次读取以收集响应所需的所有数据,而是修改应用程序逻辑以将所需数据多次插入到将来可能需要的每一行中。这样,所有需要的数据都可以仅在一次读取中可用,防止多次查找。

执行多个更新时,您可以使用executeAsync。

通过公开ExecuteAsync方法,会话允许异步执行语句(对于任何类型的语句:简单,绑定或批处理)。

//Execute a statement asynchronously using await 
var rs = await session.ExecuteAsync(statement); 

来源:https://www.hakkalabs.co/articles/cassandra-data-modeling-guide

+0

我假设你从什么地方复制的引用部分。你可以编辑你的答案并提供链接到源代码? – Aaron

+0

@Aaron源添加 –