Я немного борюсь с «лучшим» дизайном для хранения «графических» данных в Couchdb/pouchdb. У меня есть движения/трафик определенной суммы в определенное время между узлами, которые я хочу сохранить, поэтому это немного похоже на ориентированный и взвешенный график с временными метками.
Каждая часть данных имеет:
- временная метка
- количество
- источник
- цель
У меня есть вопросы, на которые я хочу ответить с помощью этих данных:
- каковы последние движения X?
- какие движения происходят на конкретном таймфрейме?
- каков вход и выход узла N (в определенный период времени)?
- что такое вход и выход в наборе узлов N, N1, .. (в конкретном таймфрейме)?
Итак, как хранить данные в CouchDB, чтобы я мог отвечать на вопросы и использовать большинство мощных функций и особенностей CouchDB?
С моей текущей точки зрения у меня есть два варианта: сохранить все, кроме суммы, в _id, или создать _id только с отметкой времени и использовать дополнительные значения для суммы, источника и цели.
Для первого решения можно было бы построить функции просмотра, как здесь, и документ может выглядеть так:
{
"_id": "app:movement:at:20150517T154200:from:node:aaaa:to:node:bbbb",
"amount": 123456
},
для второго решения документы могут выглядеть так:
{
"_id": "app:movement:at:20150517T154200", # maybe plus random value
"from": "aaaa",
"to": "bbbb",
"amount": 123456
}
функции представления не будут использовать регулярные выражения, как в первом примере, но будут иметь прямой доступ к значениям.
Что более "chouchdb-ish"? Что бы вы сделали? что более перспективно?
Спасибо за внимание.