0

我是卡桑德拉的新手。我在网上看很多例子。这是 GitHub 上 JHipster Cassandra 示例中的一个:

https://gist.github.com/jdubois/c3d3bedb869466731316

在此处输入图像描述

每当用户数据发生更改时,存储库 save(user) 方法执行读取(以查找存在)然后删除并重新插入所有非规范化表中的现有用户。

这是最佳实践吗?这仅仅是因为这个样本的数据模型是如何设计的吗?这个示例的设计是否是将 POJO 框架扭曲为 NoSQL 数据库设计的结果?

我什么时候只想在 Cassandra 中进行更新?它支持字段级别的更新,因此似乎是首选。

4

2 回答 2

0

首先,删除操作应该是批处理的一部分,以便进行更健壮的错误处理。但看起来代码也存在一些并发问题。它将根据之前读取的当前用户值更新用户。在 save() 实际执行时,假设这仍然是最新值是不保存的。它还将覆盖查找表中当时可能正在为不同用户使用的任何键。例如,在执行 insertByLoginStmt 时,另一个用户的登录可能已经存在。

于 2015-05-22T15:10:07.990 回答
0

在插入新行之前不必删除一行。但是,如果您要替换行并且新列与现有列不同,那么您需要删除所有现有列并插入新列。或者插入新的和删除旧的,如果批量发生也没关系。

于 2015-09-10T12:30:01.460 回答