将模式存储为数组或哈希字段有什么好处?

时间:2013-09-30 13:46:47

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

这适用于重新考虑DB。将嵌入式数组或散列字段作为数组的架构更好吗?保持我的意图简单..我试图跟踪每日统计数据。但我在决定哪种架构结构更好。让我详细说明..

纯数组架构:

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
      }
    ]
  }
]

我能想到的是......通过后者更容易防止日期重复。还有其他优点吗?或者,开发人员是否有一个共同的惯例?

1 个答案:

答案 0 :(得分:2)

恕我直言,您的应用程序胜过任何DBMS。而不是专注于您的数据库存储选择,而是专注于您的应用程序需求,编程和性能。保留您的程序数据,然后仅在必要时对架构更改进行迭代性基准测试和优化。您的应用程序将回答您的存储问题。例如,一般来说:

(1)如果您需要主要有序访问日期,则使用数组 (2)如果你需要快速随机访问许多日期,那么使用哈希

编程语言和DBMS语义都很重要。即使数据库已经订购了哈希值,你的语言也可能会松动,例如,Ruby 1.9和更新版本中的哈希序列有序,但之前是无序的。

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