Как сохранить сущность пользователя с помощью Cassandra («уникальный идентификатор решения PK против электронной почты») - PullRequest
0 голосов
/ 28 января 2019

это мой первый пост, так как я убежден, что есть лучшее решение, чем мое.Мой вопрос скорее вопрос дизайна.

Я использую 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;

1 Ответ

0 голосов
/ 12 февраля 2019

Я просто хочу упомянуть, что эта тема в основном касается обоснования материализованных взглядов в Кассандре.Ранее я пытался решить эту проблему с помощью пользовательского аспекта с аннотациями, но в будущем я буду использовать материализованные представления.

...