это мой первый пост, так как я убежден, что есть лучшее решение, чем мое.Мой вопрос скорее вопрос дизайна.
Я использую Spring Boot 2.1.x для хранения пользовательской сущности в базе данных Cassandra.Пока это хорошо работает.Он хранится с
- сгенерированным java uuid
- почтовым адресом
- соленым паролем bcrypt
- некоторые пользовательские типы ...
Что ж, если кто-то использует логин, я получу почту и пароль для получения учетных данных.
Для получения пользовательского объекта я бы ожидал некоторый WHERE -клавиш с "select * from user, где username = mail" .
Однако в этом случае почта должна быть ключом раздела в Cassandra.Но я хочу, чтобы пользователь мог изменить свой почтовый адрес, и тогда он может не входить в первичный ключ таблицы Кассандры.
Моя наивная идея состоит в том, чтобы иметь обратную таблицу с кортежем.(почта, сгенерированный Java UUID) для поиска пользователя, а затем загрузить пользователя с UUID.
Я только учусь правильно обращаться с Кассандрой, но в ИМХО мой дизайн - дерьмо.
Это то, что у меня есть в моем пользовательском бине.
@PrimaryKeyColumn(type = PrimaryKeyType.PARTITIONED, ordinal = 0, name = "id")
@JsonProperty("id")
private String id;
@PrimaryKeyColumn(type = PrimaryKeyType.CLUSTERED, ordinal = 1, name = "email")
@Email(message = "*Please provide a valid email")
@NotEmpty(message = "*Please provide an email")
@JsonProperty("email")
private String email;