gpt4 book ai didi

java - 当 Infinispan 作为数据网格时,是否可以配置 "unique"约束?

转载 作者:行者123 更新时间:2023-11-30 04:17:39 25 4
gpt4 key购买 nike

我有以下学生类(class)。

public class Student implements Serializable {

private int contestantId;
private String email;
private String password;
private String firstName;
private String lastName;
private String contact;
private String country;
private String countryCode;
private String school;

...
A couple more properties as well as getters and setters...
...
}

我的业务逻辑要求电子邮件和联系号码是唯一的。对于传统 RDMS,我可以通过将列设置为 UNIQUE 并处理出现的任何约束异常来轻松完成此任务。

由于我们的托管环境(OpenShift 无法扩展数据库),我想将现有应用程序从直接在 PostgreSQL 中存储数据转换为使用 Infinispan 的分布式数据网格。但是,我现在遇到的主要问题是我无法弄清楚如何对电子邮件和联系人强制执行 UNIQUE 约束。

是否有解决我的问题的方法,或者我是否必须得出 Infinispan 不适合我的特定要求的结论?

最佳答案

数据网格可以提供令人印象深刻的可扩展性功能因为每个条目都是严格独立的。因此,考虑“独特”验证甚至没有意义,但可以通过重新表述问题来选择。

  • 您可以使用一个缓存来存储通过电子邮件键入的学生数据,并使用第二个缓存使用通过联系电话号码键入的 key 。在创建新条目之前,您需要验证它尚不存在。您可以选择将这两个操作包装在一个事务中,或者使用 putIfAbsent 操作。在一个缓存中,您存储数据,在第二个缓存中,您可以存储副本(如果有用)或仅存储标记 token ,或者另一个缓存的 key ,以便轻松找到来自不同属性的学生。

  • 您可以使用索引,这样您就可以通过电子邮件/联系人/等搜索学生。

  • 您可以使用组合。我可能会在尝试插入之前使用索引进行检查,因此我可以灵活地访问任何字段,并且不需要重复数据或进行太不寻常的映射,但在插入时我仍然会使用带有 putIfAbsent 操作,以确保并发线程不会尝试同时创建同一个学生。

关于java - 当 Infinispan 作为数据网格时,是否可以配置 "unique"约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17946327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com