Влияние генерации mongodb _id на индексирование - PullRequest
0 голосов
/ 04 января 2011

Я использую MonoDB в качестве базы данных .......

Я собираюсь сгенерировать _id для каждого документа, для которого я использую useId и FolderID для этого пользователя

здесьuserId отличается для каждого пользователя, а также у каждого пользователя разные FolderIds

. Я генерирую _id как

userId="user1"
folderId="Folder1"

_id = userId+folderId

. Есть ли какое-либо влияние этого генерирования идентификатора на индексирование mongoDB ... будет ли оно работать быстро?как _id, сгенерированный MongoDB

Ответы [ 2 ]

3 голосов
/ 04 января 2011

Гораздо лучшим решением было бы оставить столбец _id как есть и иметь отдельные поля userId и folderId в документе или создать отдельное поле поле с ними обоими вместе.

Что касается того, будет ли это "так быстро" ... зависит от вашего запроса, но для упорядочивания по дате создания документа, например, вы потеряете возможность простого заказа по _id вы также потеряете преимущества для шардинга и распространения .

Однако, если вы хотите использовать оба этих идентификатора для вашего _id , есть еще один вариант ...

В действительности вы можете использовать оба , но оставить их отдельно ... например, это действительный _id :

> var doc = { "_id" : { "userID" : 12345, "folderID" : 5152 }, 
              "field1" : "test", "field2" : "foo" };
> db.crazy.save(doc);
> db.crazy.findOne();
{
        "_id" : {
                "userID" : 12345,
                "folderID" : 5152
        },
        "field1" : "test",
        "field2" : "foo"
}
> 
0 голосов
/ 04 января 2011

Все должно быть в порядке - одна предсказуемая проблема заключается в том, что вы потеряете возможность отменять метку даты / времени из MongoID.Почему бы просто не добавить еще один объект ID в документ?Вы теряете всего несколько байтов и не пользуетесь встроенной системой индексации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...