gpt4 book ai didi

mongodb - 论坛类数据结构: NoSQL appropriate?

转载 作者:可可西里 更新时间:2023-11-01 10:21:29 26 4
gpt4 key购买 nike

我正在尝试保存具有“类似论坛”结构的数据:

这是简化的数据模型:

+---------------+
| Forum |
| |
| Name |
| Category |
| URL |
| |
+---------------+
|1
|n
+---------------+
| |
| Thread |
| |
| ID |
| Name |
| Author |
| Creation Date |
| URL |
| |
+---------------+
|1
|n
+---------------+
| |
| Post |
| |
| Creation Date |
| Links |
| Images |
| |
+---------------+

我有多个论坛/论坛。他们可以有一些线索。一个话题可以包含 n 个帖子(我只对一个话题包含的链接、图像和创建日期感兴趣,以便进行数据分析)。

我正在寻找以这种结构保存和读取数据的正确技术。

虽然我过去大量使用 SQL 数据库,但我也有一些 NoSQL 项目(主要是基于 MongoDB 的文档)。我确信 MongoDB 非常适合以这种结构存储数据(论坛是文档,而线程是子文档。帖子是线程中的子文档)。但是阅读它们呢?我有以下用例:

  • 列出论坛中特定类别的所有帖子
  • 在所有数据集/文档中找到帖子中的特定链接

哪种技术最适合这些用例?

最佳答案

请在下面找到我的草稿解决方案。我考虑过将 MongoDB 用于以下设计。

收藏后:-

“图像” 应单独存储在 GridFS 中,因为 MongoDB 集合的最大大小为 16MB。您可以将图像的 ObjectId 存储在 Post 集合中。

{
"_id" : ObjectId("57b6f7d78f19ac1e1fcec7b5"),
"createdate" : ISODate("2013-03-16T02:50:27.877Z"),
"links" : "google.com",
"image" : ObjectId("5143ddf3bcf1bf4ab37d9c6e"),
"thread" : [
{
"id" : ObjectId("5143ddf3bcf1bf4ab37d9c6e"),
"name" : "Sam",
"author" : "Sam",
"createdate" : ISODate("2013-03-16T02:50:27.877Z"),
"url" : "https://www.wikipedia.org/"
}
],
"forum" : [
{
"name" : "Andy",
"category" : "technology",
"url" : "https://www.infoq.com/"
}
]
}

为了按类别访问数据,您可以在“forum.category”字段上创建索引。

db.post.createIndex( { "forum.category": 1 } )

为了通过链接访问数据,您可以在“链接”字段上创建索引。

db.organizer.createIndex( { "links": 1 } )

请注意,索引不是强制性的。您也可以在没有索引的情况下访问/查询数据。如果您需要更好的读取性能,您可以创建索引。

我见过使用 MongoDB 的应用程序与您的用例类似。对于上述用例(或访问模式),您可以继续使用 MongoDB。

关于mongodb - 论坛类数据结构: NoSQL appropriate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39037825/

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