Дизайн таблицы Cassandra: определяемые пользователем типы или просто сохранение идентификатора в качестве ссылки

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

@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;
}

person akcasoy    schedule 28.10.2019    source источник


Ответы (1)


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

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

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

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

person Alex Tbk    schedule 29.10.2019