gpt4 book ai didi

唯一性的 Mongodb 模型

转载 作者:可可西里 更新时间:2023-11-01 09:46:03 25 4
gpt4 key购买 nike

场景:

10.000.000 条记录/天

记录: 访客、访问日期、集群(我们在哪里看到它)、元数据

我们想通过这些信息了解什么:

  1. 给定日期范围内一个或多个集群的唯一身份访问者。
  2. 每日独立访客
  3. 针对给定范围(平台、浏览器等)对元数据进行分组

为了轻松查询此信息,我坚持使用的模型是:

{
VisitorId:1,
ClusterVisit: [
{clusterId:1, dates:[date1, date2]},
{clusterId:2, dates:[date1, date3]}
]
}

索引:

  1. 按 VisitorId(以确保唯一性)
  2. 通过 ClusterVisit.ClusterId-ClusterVisit.dates(用于搜索)
  3. 通过 IdUser-ClusterVisit.IdCluster(用于更新)

我还必须将集群组拆分为不同的集合,以便更有效地访问数据。

导入: 首先,我们搜索 VisitorId - ClusterId 的组合,然后添加到设置日期。

第二个:如果第一个不匹配,我们更新:

    $addToSet: {VisitorId:1, 
ClusterVisit: [{clusterId:1, dates:[date1]}]
}

如果 clusterId 不存在或 VisitorId 不存在,我将通过 First 和 Second 导入进行覆盖。

问题: 当集合增长时,更新/插入/更新插入完全低效(几乎不可能),我猜是因为添加新日期时文档大小变大了。 难以维护(主要是未设置日期)

我有一个超过 50.000.000 的收藏,我不能再增加了。它仅更新 100 ~ 记录/秒。

我认为我使用的模型对于这种信息量来说不是最好的。在我弄乱分片之前,您认为什么是获得更多更新插入/秒并快速查询信息的最佳方法,这将花费更多时间,同时我会学习并对其充满信心。

我在 AWS 上有一个 x1.large 实例10 个磁盘的 RAID 10

最佳答案

关于唯一性的 Mongodb 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13474674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com