我正在設計統計儀表板數據庫,數據將從我的主系統彙總並保存在Mongo中。MongoDB:設計統計儀表板模式
我試圖找到我的數據庫模型的最佳方式,我遇到的問題是,用戶可以基於像(時間範圍,年齡,性別)
此不同的標準篩選圖文章是非常有用的時間範圍,但我很困惑如何將所有的過濾器混合在一起。
http://blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in-mongodb
例如
生成Total page views per product
圖,蒙戈DB記錄應類似於:
{
timestamp_hour: ISODate("2013-10-10T23:00:00.000Z"),
type: 「page_views」,
product_id: 1550
values: {
0: { 0: 999999, 1: 999999, …, 59: 1000000 },
1: { 0: 2000000, 1: 2000000, …, 59: 1000000 },
…,
58: { 0: 1600000, 1: 1200000, …, 59: 1100000 },
59: { 0: 1300000, 1: 1400000, …, 59: 1500000 }
}
}
這會工作得很好,如果用戶只能過濾時間範圍,但如果用戶將其與年齡組或性別混合,則該如何進行組織
{
timestamp_hour: ISODate("2013-10-10T23:00:00.000Z"),
type: 「page_views」,
product_id: 1550
values: {
0: {
0: {
total: 999999,
age_group: {
teenagers: 4032932,
adults: 432942,
...
},
gender: {
male: 4239423,
female: 4342343
}
},
1: {
total: 999999,
age_group: {
teenagers: 4032932,
adults: 432942,
...
},
gender: {
male: 4239423,
female: 4342343
}
},
....
59: {
total: 999999,
age_group: {
teenagers: 4032932,
adults: 432942,
...
},
gender: {
male: 4239423,
female: 4342343
}
}
},
....
59: {
0: {
total: 999999,
age_group: {
teenagers: 4032932,
adults: 432942,
...
},
gender: {
male: 4239423,
female: 4342343
}
},
1: {
total: 999999,
age_group: {
teenagers: 4032932,
adults: 432942,
...
},
gender: {
male: 4239423,
female: 4342343
}
},
....
59: {
total: 999999,
age_group: {
teenagers: 4032932,
adults: 432942,
...
},
gender: {
male: 4239423,
female: 4342343
}
}
},
}
}
的問題我可以用這個看,是如果用戶搭配(年齡範圍,年齡和性別)一起
您是否打開MongoDB以外的其他數據庫?有一類時間序列數據庫https://en.wikipedia.org/wiki/Time_series_database,這與聚合查詢相當有效,這意味着您只能保存原始數據,並讓數據庫完成剩下的工作。不存儲預先計算的聚合的附加好處是您可以在路上更改原始數據,例如,更新/修改,並看到您的總量反映它沒有任何不一致。 –
@SergeiRodionov感謝您的回覆。是的,我是開放的,但不知道哪一個將是一個不錯的選擇,因爲穩定性是一個關鍵這裏InfluxDB看起來很有前途,但不確定在生產環境中的這個階段使用它是明智的,因爲該項目還是比較新的並且沒有通過alpha但是,寧願開源解決方案,任何建議? – trrrrrrm
基於HBase的系統:OpenTSDB,Bosun(OpenTSDB之上)和ATSD。前兩個是FOSS。披露:我爲開發ATSD的公司工作。 –