Мне нужно хранить огромную карту в базе данных, содержащую URL в качестве ключа и некоторую информацию для каждого из них в качестве метаданных.
Данные хранятся в mongodb, который управляется весенним загрузочным сервером (если это вообще имеет значение)
Эта карта должна быть обновлена, то есть будут добавлены новые ключи и обновлены существующие ключи. Для этого есть два варианта.
Вариант 1: сохранить карту в этом объекте:
@Document(collection = "cache.url")
public class CachedUrlMetaEntity {
@Id
private String id;
private Map<String, String> urlMetaMap;
}
Таким образом, к данным будет легко получить доступ, но если мне понадобится изменить их, это будет сложно с большими картами.
Вариант 2: использовать эту сущность:
@Document(collection = "cache.url")
public class CachedUrlMetaEntity {
@Id
private String url;
private String urlMetaData;
}
Таким образом, каждый URL будет храниться в виде отдельного документа в виде отдельного документа, что упрощает изменение данных при более медленном доступе.
После попытки с картой, состоящей из 10 тыс. Записей, я не смог увидеть никаких различий на своем локальном компьютере между двумя подходами, за исключением того, что у первого есть некоторые всплески потребления оперативной памяти при обновлении карты.
Вопрос в том, какой вариант можно считать лучшим с точки зрения наилучшей практики в базах данных на основе документов.