Cassandra Table Design: пользовательские типы или просто удержание идентификатора в качестве ссылки - PullRequest
0 голосов
/ 28 октября 2019

У меня есть пользовательская таблица:

@Table
public class User implements UserDetails {

    @PrimaryKey
    private UUID id;

    @Indexed
    private String username;

    ...
}

и таблица мнений, подобная этой:

@Table
public class Opinion {
    ..

    @Indexed
    private User owner;
}

Поскольку эта ссылка на мнение пользователя не работает автоматически, я выяснил,что вы должны объявить некоторые дополнительные «пользовательские типы», как в этом посте .. очень странно, я думаю .. как и многие стандартные примеры.

Это была одна из вещей, которыми я былРаньше я много лет делал с Spring Data, очень легко.

Сейчас я пытаюсь играть с Cassandra DB, и я действительно не уверен, как этого добиться. Вопрос: это способ делать такие простые ссылки? Или я действительно должен просто ссылаться на идентификатор пользователя?

@Table
public class Opinion {
    ..

    @Indexed
    private String owner_id;
}

1 Ответ

2 голосов
/ 29 октября 2019

Как вы сказали - мы просто сохраняем ссылку на пользователя (в нашем случае это поле UUID).

Когда вам нужно получить пользователя, связанного с объектом Opinion, вы отправляете секундузапрос к кассандре дб.

Другим вариантом будет дублирование данных и, например, сохранение имени пользователя непосредственно в объекте «Мнение». Это зависит от вашего приложения - когда эти данные могут измениться, вам, вероятно, потребуется обновить все записи Мнения.

Хорошие статьиhttp://patrickmcfadin.com/2014/02/05/getting-started-with-time-series-data-modeling/ http://planetcassandra.org/blog/escaping-from-disco-era-data-modeling/ http://www.ebaytechblog.com/2012/07/16/cassandra-data-modeling-best-practices-part-1/#.VH-OezHF_6M

...