Хранение карт в базе данных на основе документов (например, mongo db) - PullRequest
0 голосов
/ 05 января 2019

Мне нужно хранить огромную карту в базе данных, содержащую 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 тыс. Записей, я не смог увидеть никаких различий на своем локальном компьютере между двумя подходами, за исключением того, что у первого есть некоторые всплески потребления оперативной памяти при обновлении карты.

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

...