Я пытаюсь определить лучшую схему документа для проекта для couchdb (2.3.1). Исследуя это, я нахожу некоторую противоречивую информацию и никаких соответствующих рекомендаций для последней версии couchdb и подобных сценариев. Если эти данные не подходят для couchdb или другого метода, отличного от того, что подробно описано ниже, я хотел бы лучше понять, почему.
Мой сценарий - отслеживать детали изготовления виджетов:
- 100 000-300 000 типов виджетов должны отслеживаться
- Каждый виджет изготавливается от 200 до 1800 раз в день
- Производство виджетов может вырасти до ~ 10000 в день
- Каждое создание виджета и связанные с ним детали должны быть записаны и обновлены
- Создание виджета сохраняется в течение 30 дней
- Запрос информации о виджете по типу виджета и creationStartTime / creationEndTime
- Меня не интересуют ревизии, я могу просто обновить и использовать тот же _rev, если это может повысить производительность
Метод 1:
{
"_id": "*",
"_rev": "*",
"widgetTypeId": "1831",
"creation": [{
"creationId" "da17faef-3591-4579-b5f6-ff0a719a6da7",
"creationStartTime": 1556471139,
"creationEndTime": 1556471173,
"color": "#ffffff",
"styleId": "92811",
"creatorId": "82812"
},{
"creationId" "893fede7-3874-44ed-b290-7001b4901bc9",
"creationStartTime": 1556471481,
"creationEndTime": 1556471497,
"color": "#cccccc",
"styleId": "75343",
"creatorId": "3211"
}]
}
Используя первый метод, мой документ будет ограничен 100 000-300 000 документов. Однако эти документы будут очень большими и часто обновляются.
Метод 2:
{
"_id": "*",
"_rev": "*",
"widgetTypeId": "1831",
"creationId" "da17faef-3591-4579-b5f6-ff0a719a6da7",
"creationStartTime": 1556471139,
"creationEndTime": 1556471173,
"color": "#ffffff",
"styleId": "92811",
"creatorId": "82812"
},{
"_id": "*",
"_rev": "*",
"widgetTypeId": "1831",
"creationId" "893fede7-3874-44ed-b290-7001b4901bc9",
"creationStartTime": 1556471481,
"creationEndTime": 1556471497,
"color": "#cccccc",
"styleId": "75343",
"creatorId": "3211"
}
Метод 2 создает высокую базу данных