gpt4 book ai didi

sql - 亚马逊 dynamoDb 是否适合像系统这样的评论

转载 作者:行者123 更新时间:2023-12-04 00:40:12 29 4
gpt4 key购买 nike

我决定将 MySql 或 NoSQL 用于论坛站点。我对整个 NoSQL 想法很陌生,在阅读文档时我注意到“项目”不能大于 64kb,这包括属性和值。从我理解的方式来看,我能想到的实现这一点的唯一方法是这样的:

Posts: [
{ user: 'gates', text: 'first post'
comment: [
{ user: 'jim', text: 'comment1',
user: 'bobby', text:'comment2'
}
]
},
{ user: 'jim', text: 'second post' }
]

这里的问题是如果一个帖子有很多评论,它会超过该项目的 64kb 限制。是否有另一种实现这种“帖子/评论关系”的方法可以很好地扩展?

最佳答案

您可以通过多种方式对其进行建模,我能想到的最好的两个是:

  • 使用一张 table (比如说“forumapp”):

    邮政

    哈希 ->
    范围 -> 0

    评论

    HASH -> <帖子的uuid>
    RANGE -> 1..n(默认情况下,评论将按 RANGE Key 排序)

    现在 querying使用哈希,您可以获得帖子及其所有评论。因为他们有不同的范围,所以他们是不同的项目,所以你可以有多少你想要的评论。

    http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html

    No practical limit for non-indexed tables.

    For a table with local secondary indexes, there is a limit on item collection sizes: For every distinct hash key value, the total sizes of all table and index items cannot exceed 10 GB. Depending on your item sizes, this may constrain the number of range keys per hash value. For more information, see Item Collection Size Limit.

  • 使用 2 个表

    table 柱

    哈希 -> uuid

    表注释

    哈希 ->
    RANGE -> 评论日期(这样你就可以得到按日期排序的结果)

    两种方法之间的区别在于,第一个您发出 1 Query
    操作仅指定哈希值,然后您将帖子与所有评论放在一起。
    (只要整个事情 <1MB,那么你必须通过另一个 api 调用获得下一个 1MB,依此类推)。使用第二种方法时,您需要执行 1 GetItem手术
    对于帖子和 1 Query评论操作。由于您只有 5 个二级索引
    可用于 1 张 table ,您可能想要 2 张 table 。但通常它真的取决于
    您认为您的应用程序将对数据进行哪些访问...

    为了更好地理解 SQL 和 NoSQL 之间的差异,值得花时间检查,这个 Martin Fowler 演示文稿:https://www.youtube.com/watch?v=qI_g07C_Q5I

    如果您习惯使用 SQL,那么让应用程序在 NoSQL 数据库上运行可能会很棘手,因为
    在存储数据之前,您必须认真考虑如何检索数据,否则您将无法随心所欲地读取它(没有 SQL 来拯救..)。有时您必须在单独的表中构建自己的索引,减慢写入速度以加快读取速度。即使使用 SQL 数据库,您也应该这样做,但是如果您未能对关系模型进行建模,您最多只会得到一个缓慢的应用程序,如果您未能对 NoSQL 模型进行建模,您将陷入困境。

    例如,如果您必须检索所有已标记为标签 A 和标签 B 的帖子,
    使用单个查询操作,您将不得不在另一个表中维护某种索引,该索引给定在 A+B 上计算的散列将为您提供与您的查询匹配的所有范围(后标识符)。您可能正在考虑二级索引,但您只能在哈希值内部使用它们。所以你首先给出散列,然后你才用二级索引过滤......

    如果您使用 nodejs 结帐:https://github.com/aaaristo/dyngodb .
  • 关于sql - 亚马逊 dynamoDb 是否适合像系统这样的评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19627548/

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