Apache Ignite — как лучше всего хранить и искать объекты с полем типа Map<Строка, список>

#ignite

Вопрос:

мне нужно сохранить объект со следующим списком атрибутов:

 public class Entity {
    String guid; //pk
    long timestamp;
    String domain;
    String type;
    Map<String, List<String>> tags;
}
 

мне нужен поиск по всем этим полям, и идея состояла в том, чтобы использовать sql-запрос с индексами. Согласно документации, это возможно только с таблицей/кэшем, созданными с помощью SQL DDL. Но SQL DDL, похоже, не поддерживает коллекции.
Как лучше всего использовать коллекцию в качестве свойства объекта значения и выполнять быстрый поиск по индексу?

Ответ №1:

Неверно, что вам нужно использовать SQL DDL, вы можете использовать аннотации или сущности запросов для определения схемы SQL.

Но вы правы, нет способа напрямую запрашивать коллекции. Вместо этого вам нужно нормализовать свои таблицы. В этом случае вам может понадобиться еще пара таблиц EntityTags и EntityTagsList или что-то в этом роде. Убедитесь, что вы определили ключи сходства, чтобы сделать ваши объединения эффективными.