【问题标题】:Storing names vs retrieving from cache by id存储名称与通过 id 从缓存中检索
【发布时间】:2011-06-03 19:16:26
【问题描述】:

存储已发送电子邮件的简单 mongodb 集合:

{
    msgid: objectid
    senderid: <some objectid>,
    sendername: <some name>,
    recip: [{memid:<objectid>, name:<some name>}, {memid:<objectid>, name:<some name>}, ...]
}

包含有关邮件发件人和收件人的信息。现在,我正在尝试决定是否应该在邮件中存储发件人/收件人姓名,或者在检索邮件后解决它们。 “解决”是指在主系统的 memcached 缓存中按 id 查找名称。每条消息可能有 1-10 个收件人,每个请求我检索 10-20 条消息,所以在最坏的情况下,我需要在每个页面请求中查找 200 个名称。该站点的负载会很高,因此我担心 memcached 上的负载,但另一方面,将名称与消息一起存储会大大增加磁盘空间的使用。

非常感谢任何建议!

【问题讨论】:

    标签: performance mongodb memcached


    【解决方案1】:

    将姓名与信息一起存储 将增加使用的磁盘空间 戏剧性的。

    不要关心磁盘空间——磁盘空间什么都不是,它很便宜。

    如果您的系统将在recip 高负载存储您需要的所有东西(甚至是母亲、父亲的名字;)),毫无疑问。

    1. 对数据进行非规范化以提高应用程序速度并减少对数据库(甚至是内存缓存)的请求数。
    2. 如果需要,在后台更新非规范化数据。

    我在我的项目中按照上述方式进行操作,并且一切都运行得很快;)。但这只是我的意见和我的解决方案。其他人可能会有不同的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2019-08-04
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多