Я разрабатываю веб-приложение, в котором пользователи будут загружать большое количество документов в систему, и в документах будут выполняться различные типы операций, включая агрегацию. Однако количество документов, загружаемых каждым пользователем, варьируется в широких пределах: некоторые могут загружать десятки документов, а некоторые могут загружать миллион документов.Ключ осколки (MongoDB) для большого количества документов
документы выглядят примерно так:
doc{
_id: <self generated UUID>,
uid: <id of user who uploaded the document>,
ctime: <creation timestamp>,
....
<other attributes, etc>
....
}
Теперь вот проблема в выборе ключа осколка:
1. Если я выбираю UUID в качестве ключа шарда, документы, загруженные тем же пользователем, вряд ли для того, чтобы оказаться в одном и том же порядке, и операции агрегации будут дорогостоящими.
2. Если я использую uid в качестве ключа осколка, тогда данные, хранящиеся в осколках, не будут четными.
Может ли кто-нибудь предложить, который является лучшим способом достичь этого?
Я очень новичок в разделении и очертаниях, и мои исследования в google, а также переполнение стека ничего не дали. При необходимости я могу изменить схему документов, поскольку проект все еще находится на стадии проектирования.
Как вы хотите запрашивать данные? –