这适用于重新考虑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
}
]
}
]
我能想到的是......通过后者更容易防止日期重复。还有其他优点吗?或者,开发人员是否有一个共同的惯例?
答案 0 :(得分:2)
恕我直言,您的应用程序胜过任何DBMS。而不是专注于您的数据库存储选择,而是专注于您的应用程序需求,编程和性能。保留您的程序数据,然后仅在必要时对架构更改进行迭代性基准测试和优化。您的应用程序将回答您的存储问题。例如,一般来说:
(1)如果您需要主要有序访问日期,则使用数组 (2)如果你需要快速随机访问许多日期,那么使用哈希
编程语言和DBMS语义都很重要。即使数据库已经订购了哈希值,你的语言也可能会松动,例如,Ruby 1.9和更新版本中的哈希序列有序,但之前是无序的。
当然,您的架构选择非常重要。但恕我直言,文档(非柱状对象数据NoSQL)DBMS的主要优势是能够匹配编程语言中的自然数据结构。所以我轻轻地鼓励你回到你的应用程序/程序作为问题和答案的焦点。