【问题标题】:What are the advantages of storing your schema as arrays or hash fields?将架构存储为数组或哈希字段有什么好处?
【发布时间】:2013-10-06 09:57:32
【问题描述】:

这适用于重新思考数据库。使用嵌入数组或哈希字段作为数组的模式会更好吗?保持我的意图简单.. 我正在尝试跟踪每日统计数据。但我在决定哪种模式结构更好之间犹豫不决。让我详细说明..

纯数组架构:

schema = [
  {
    title: 'foobar',
    dates: [
      {
        date: 20130926,
        views_count: 10,
        click_count: 10
      },
      {
        date: 20130927,
        views_count: 20,
        click_count: 20
      },
      {
        date: 20130928,
        views_count: 30,
        click_count: 30
      }
    ]
  }
]

哈希字段数组架构:

schema = [
  {
    title: 'foobar',
    dates: [
      '20130926' => {
        views_count: 10,
        click_count: 10
      },
      '20130927' => {
        views_count: 20,
        click_count: 20
      },
      '20130928' => {
        views_count: 30,
        click_count: 30
      }
    ]
  }
]

我能想到的一个是.. 使用后者更容易防止日期重复。还有其他优点吗?或者,是否有开发人员更喜欢的通用约定?

【问题讨论】:

  • 如果你选择了一个数据库并问了这个问题,它可能是可以回答的。但是,通过标记很多,很难说优势是什么,因为每个平台都不同,并且可能以多种方式处理您的模式。例如,MongoDB 的答案与 CouchDB 的答案完全不同。我已将关闭标记为“过于宽泛”。
  • @WiredPrairie 我已经删除了 mongo DB。这个问题仅适用于重新思考 DB。请重新提出问题。谢谢
  • 感谢您做出更改。
  • 这两种方法本质上都不比另一种更好。它们在性能方面非常相似,至少在元素数量很少的情况下。问题实际上归结为您计划进行什么样的操作。按日期访问元素以增加click_count 字段是否会成为常见操作?如果是这样,我认为您最好使用哈希字段。
  • @JoeDoliner 是的,这里的目的是选择 2 个或更多日期并将它们的 click_count 值组合在一起以获得总数。感谢您的建议

标签: nosql database-schema rethinkdb document-based-database


【解决方案1】:

恕我直言,您的应用程序胜过任何 DBMS。与其关注您的数据库存储选择,不如关注您的应用程序需求、编程和性能。保留您的程序数据,然后仅在必要时使用模式更改迭代地对主要情况进行基准测试和优化。您的应用程序将回答您的存储问题。例如,一般来说:

(1) 如果您主要需要对日期进行有序访问,则使用数组 (2) 如果您需要快速随机访问多个日期,则使用哈希

编程语言和 DBMS 语义都很重要。即使数据库已经对哈希进行了排序,您的语言也可能会丢失这一点,例如,Ruby 1.9 和更高版本中的哈希是有序的,但之前是无序的。

当然,您的架构选择非常重要。但是恕我直言,文档(非列对象数据 NoSQL)DBMS 的主要优势是能够匹配编程语言中的自然数据结构。所以我温和地鼓励你回到你的应用程序/程序作为问题和答案的焦点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 2010-10-06
    相关资源
    最近更新 更多