我需要在数据库中存储巨大的地图,其中包含url作为键,并且每个信息都作为元数据。
数据存储在mongodb中,该文件由spring boot服务器管理(如果有的话)
此地图需要更新,这意味着将插入新的键并更新现有的键。我可以想到,有两种选择可以做到这一点。
选项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;
}
通过这种方式,每个网址都将其元数据存储为单独的文档,从而使数据更易于修改,访问速度也更慢。
尝试了由1万个条目组成的映射后,在这两种方法之间,我的本地计算机上看不到任何差异,只是第一种方法在更新映射时存在一些内存消耗峰值。
问题是,就基于文档的数据库中的最佳实践而言,哪个选项可以被认为是更好的选择。